50 character(len=LENMODELNAME) :: gwfmodelname1 =
''
51 character(len=LENMODELNAME) :: gwfmodelname2 =
''
52 real(dp),
dimension(:),
pointer,
contiguous :: gwfsimvals => null()
59 integer(I4B),
pointer :: inewton => null()
60 integer(I4B),
pointer :: iadvscheme
64 integer(I4B),
pointer :: inmvt => null()
68 integer(I4B),
pointer :: inobs => null()
72 real(dp),
dimension(:),
pointer,
contiguous :: cond => null()
73 real(dp),
dimension(:),
pointer,
contiguous :: simvals => null()
117 character(len=*),
intent(in) :: filename
118 integer(I4B),
intent(in) :: id
119 character(len=*) :: name
120 integer(I4B),
intent(in) :: m1_id
121 integer(I4B),
intent(in) :: m2_id
122 character(len=*),
intent(in) :: input_mempath
127 integer(I4B) :: m1_index, m2_index
131 baseexchange => exchange
138 exchange%input_mempath = input_mempath
141 call exchange%allocate_scalars()
142 exchange%filename = filename
143 exchange%typename =
'GWE-GWE'
144 exchange%iAdvScheme = 0
149 mb => getbasemodelfromlist(basemodellist, m1_index)
150 if (m1_index > 0)
then
153 exchange%model1 => mb
154 exchange%gwemodel1 => mb
161 if (m2_index > 0)
then
162 mb => getbasemodelfromlist(basemodellist, m2_index)
165 exchange%model2 => mb
166 exchange%gwemodel2 => mb
172 if (.not.
associated(exchange%gwemodel1) .and. m1_index > 0)
then
173 write (
errmsg,
'(3a)')
'Problem with GWE-GWE exchange ', &
174 trim(exchange%name), &
175 '. First specified GWE Model does not appear to be of the correct type.'
180 if (.not.
associated(exchange%gwemodel2) .and. m2_index > 0)
then
181 write (
errmsg,
'(3a)')
'Problem with GWE-GWE exchange ', &
182 trim(exchange%name), &
183 '. Second specified GWE Model does not appear to be of the correct type.'
188 call obs_cr(exchange%obs, exchange%inobs)
207 write (
iout,
'(/a,a)')
' Creating exchange: ', this%name
210 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
211 if (this%gwemodel1%idsoln /= this%gwemodel2%idsoln)
then
212 call store_error(
'Two models are connect in a GWE '// &
213 'exchange but they are in different solutions. '// &
214 'GWE models must be in same solution: '// &
215 trim(this%gwemodel1%name)//
' '// &
216 trim(this%gwemodel2%name))
222 call this%source_options(
iout)
225 call this%source_dimensions(
iout)
228 call this%allocate_arrays()
231 call this%source_data(
iout)
234 if (this%inmvt > 0)
then
235 call this%read_mvt(
iout)
236 call this%mvt%mvt_df(this%gwemodel1%dis)
240 call this%gwe_gwe_df_obs()
241 if (
associated(this%gwemodel1))
then
242 call this%obs%obs_df(
iout, this%name,
'GWE-GWE', this%gwemodel1%dis)
246 call this%validate_exchange()
260 if (this%gwfmodelname1 ==
'')
then
261 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
262 ' requires that GWFMODELNAME1 be entered in the &
266 if (this%gwfmodelname2 ==
'')
then
267 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
268 ' requires that GWFMODELNAME2 be entered in the &
274 if (
associated(this%model1, this%model2))
then
275 if (this%ixt3d > 0)
then
276 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
277 ' is a periodic boundary condition which cannot'// &
278 ' be configured with XT3D'
286 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
287 if (this%gwemodel1%incnd /= 0 .or. this%gwemodel2%incnd /= 0)
then
288 if (this%ianglex == 0)
then
289 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
290 ' requires that ANGLDEGX be specified as an'// &
291 ' auxiliary variable because dispersion was '// &
292 'specified in one or both transport models.'
298 if (this%ixt3d > 0 .and. this%ianglex == 0)
then
299 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
300 ' requires that ANGLDEGX be specified as an'// &
301 ' auxiliary variable because XT3D is enabled'
322 if (this%inmvt > 0)
call this%mvt%mvt_ar()
325 call this%obs%obs_ar()
345 if (this%inmvt > 0)
call this%mvt%mvt_rp()
348 call this%gwe_gwe_rp_obs()
366 call this%obs%obs_ad()
376 subroutine gwe_gwe_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
379 integer(I4B),
intent(in) :: kiter
381 real(DP),
dimension(:),
intent(inout) :: rhs_sln
382 integer(I4B),
optional,
intent(in) :: inwtflag
385 if (this%inmvt > 0)
call this%mvt%mvt_fc(this%gwemodel1%x, this%gwemodel2%x)
395 subroutine gwe_gwe_bd(this, icnvg, isuppress_output, isolnid)
401 integer(I4B),
intent(inout) :: icnvg
402 integer(I4B),
intent(in) :: isuppress_output
403 integer(I4B),
intent(in) :: isolnid
405 character(len=LENBUDTXT),
dimension(1) :: budtxt
406 real(DP),
dimension(2, 1) :: budterm
407 real(DP) :: ratin, ratout
410 budtxt(1) =
' FLOW-JA-FACE'
416 if (
associated(this%gwemodel1))
then
417 budterm(1, 1) = ratin
418 budterm(2, 1) = ratout
419 call this%gwemodel1%model_bdentry(budterm, budtxt, this%name)
423 if (
associated(this%gwemodel2))
then
424 budterm(1, 1) = ratout
425 budterm(2, 1) = ratin
426 call this%gwemodel2%model_bdentry(budterm, budtxt, this%name)
430 if (this%inmvt > 0)
call this%mvt%mvt_bd(this%gwemodel1%x, this%gwemodel2%x)
444 integer(I4B) :: icbcfl, ibudfl
447 if (
associated(this%gwemodel1))
then
448 call this%gwe_gwe_bdsav_model(this%gwemodel1)
452 if (
associated(this%gwemodel2))
then
453 call this%gwe_gwe_bdsav_model(this%gwemodel2)
465 if (this%inobs /= 0)
then
466 call this%gwe_gwe_save_simvals()
485 character(len=LENBOUNDNAME) :: bname
486 character(len=LENPACKAGENAME + 4) :: packname
487 character(len=LENBUDTXT),
dimension(1) :: budtxt
490 character(len=20) :: nodestr
491 integer(I4B) :: ntabrows
492 integer(I4B) :: nodeu
493 integer(I4B) :: i, n1, n2, n1u, n2u
494 integer(I4B) :: ibinun
495 real(DP) :: ratin, ratout, rrate
496 logical(LGP) :: is_for_model1
497 integer(I4B) :: isuppress_output
501 budtxt(1) =
' FLOW-JA-FACE'
502 packname =
'EXG '//this%name
503 packname = adjustr(packname)
504 if (
associated(model, this%gwemodel1))
then
505 output_tab => this%outputtab1
506 nbr_model => this%v_model2
507 is_for_model1 = .true.
509 output_tab => this%outputtab2
510 nbr_model => this%v_model1
511 is_for_model1 = .false.
515 if (this%iprflow /= 0)
then
518 if (model%oc%oc_save(
'BUDGET'))
then
519 call output_tab%set_title(packname)
523 call output_tab%set_kstpkper(
kstp,
kper)
532 if (this%v_model1%ibound%get(n1) /= 0 .and. &
533 this%v_model2%ibound%get(n2) /= 0)
then
534 ntabrows = ntabrows + 1
537 if (ntabrows > 0)
then
538 call output_tab%set_maxbound(ntabrows)
545 if (this%ipakcb /= 0)
then
546 ibinun = model%oc%oc_save_unit(
'BUDGET')
553 if (.not. model%oc%oc_save(
'BUDGET')) ibinun = 0
554 if (isuppress_output /= 0)
then
559 if (ibinun /= 0)
then
560 call model%dis%record_srcdst_list_header(budtxt(1), &
565 this%naux, this%auxname, &
578 if (this%inamedbound > 0)
then
579 bname = this%boundname(i)
590 if (this%v_model1%ibound%get(n1) /= 0 .and. &
591 this%v_model2%ibound%get(n2) /= 0)
then
592 rrate = this%simvals(i)
595 if (this%iprflow /= 0)
then
596 if (model%oc%oc_save(
'BUDGET'))
then
599 if (is_for_model1)
then
600 nodeu = model%dis%get_nodeuser(n1)
601 call model%dis%nodeu_to_string(nodeu, nodestr)
602 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
605 nodeu = model%dis%get_nodeuser(n2)
606 call model%dis%nodeu_to_string(nodeu, nodestr)
607 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
612 if (rrate <
dzero)
then
613 ratout = ratout - rrate
615 ratin = ratin + rrate
620 n1u = this%v_model1%dis_get_nodeuser(n1)
621 n2u = this%v_model2%dis_get_nodeuser(n2)
622 if (ibinun /= 0)
then
623 if (is_for_model1)
then
624 call model%dis%record_mf6_list_entry( &
625 ibinun, n1u, n2u, rrate, this%naux, this%auxvar(:, i), &
628 call model%dis%record_mf6_list_entry( &
629 ibinun, n2u, n1u, -rrate, this%naux, this%auxvar(:, i), &
651 integer(I4B) :: iexg, n1, n2
652 integer(I4B) :: ibudfl
654 character(len=LINELENGTH) :: node1str, node2str
656 character(len=*),
parameter :: fmtheader = &
657 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
658 &2a16, 5a16, /, 112('-'))"
659 character(len=*),
parameter :: fmtheader2 = &
660 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
661 &2a16, 4a16, /, 96('-'))"
662 character(len=*),
parameter :: fmtdata = &
666 call this%gwe_gwe_bdsav()
669 if (this%iprflow /= 0)
then
670 write (
iout, fmtheader2) trim(adjustl(this%name)), this%id,
'NODEM1', &
671 'NODEM2',
'COND',
'X_M1',
'X_M2',
'FLOW'
672 do iexg = 1, this%nexg
673 n1 = this%nodem1(iexg)
674 n2 = this%nodem2(iexg)
675 flow = this%simvals(iexg)
676 call this%v_model1%dis_noder_to_string(n1, node1str)
677 call this%v_model2%dis_noder_to_string(n2, node2str)
678 write (
iout, fmtdata) trim(adjustl(node1str)), &
679 trim(adjustl(node2str)), &
680 this%cond(iexg), this%v_model1%x%get(n1), &
681 this%v_model2%x%get(n2), flow
688 if (this%inmvt > 0)
call this%mvt%mvt_ot_bdsummary(ibudfl)
691 call this%obs%obs_ot()
711 integer(I4B),
intent(in) :: iout
714 character(len=LENVARNAME),
dimension(3) :: adv_scheme = &
715 &[character(len=LENVARNAME) ::
'UPSTREAM',
'CENTRAL',
'TVD']
716 character(len=linelength) :: mvt_fname
719 call mem_set_value(this%gwfmodelname1,
'GWFMODELNAME1', this%input_mempath, &
721 call mem_set_value(this%gwfmodelname2,
'GWFMODELNAME2', this%input_mempath, &
723 call mem_set_value(this%iAdvScheme,
'ADV_SCHEME', this%input_mempath, &
724 adv_scheme, found%adv_scheme)
725 call mem_set_value(this%ixt3d,
'CND_XT3D_OFF', this%input_mempath, &
727 call mem_set_value(this%ixt3d,
'CND_XT3D_RHS', this%input_mempath, &
730 write (iout,
'(1x,a)')
'PROCESSING GWE-GWE EXCHANGE OPTIONS'
733 call this%DisConnExchangeType%source_options(iout)
735 if (found%gwfmodelname1)
then
736 write (iout,
'(4x,a,a)') &
737 'GWFMODELNAME1 IS SET TO: ', trim(this%gwfmodelname1)
740 if (found%gwfmodelname2)
then
741 write (iout,
'(4x,a,a)') &
742 'GWFMODELNAME2 IS SET TO: ', trim(this%gwfmodelname2)
745 if (found%adv_scheme)
then
747 this%iAdvScheme = this%iAdvScheme - 1
748 write (iout,
'(4x,a,a)') &
749 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
750 trim(adv_scheme(this%iAdvScheme + 1))
753 if (found%cnd_xt3d_off .and. found%cnd_xt3d_rhs)
then
754 errmsg =
'CND_XT3D_OFF and CND_XT3D_RHS cannot both be set as options.'
757 else if (found%cnd_xt3d_off)
then
759 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
760 else if (found%cnd_xt3d_rhs)
then
762 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
766 if (
filein_fname(mvt_fname,
'MVE6_FILENAME', this%input_mempath, &
769 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
770 write (iout,
'(4x,a)')
'WATER MOVER ENERGY TRANSPORT &
771 &INFORMATION WILL BE READ FROM ', trim(mvt_fname)
775 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
776 this%input_mempath, this%filename))
then
777 this%obs%active = .true.
779 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
782 write (iout,
'(1x,a)')
'END OF GWE-GWE EXCHANGE OPTIONS'
797 integer(I4B),
intent(in) :: iout
802 call mvt_cr(this%mvt, this%name, this%inmvt, iout, this%gwemodel1%fmi, &
803 this%gwemodel1%eqnsclfac, this%gwemodel1%depvartype, &
804 gwfmodelname1=this%gwfmodelname1, &
805 gwfmodelname2=this%gwfmodelname2, &
806 fmi2=this%gwemodel2%fmi)
823 call this%DisConnExchangeType%allocate_scalars()
825 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
827 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
850 if (this%inmvt > 0)
then
851 call this%mvt%mvt_da()
852 deallocate (this%mvt)
854 call this%obs%obs_da()
855 deallocate (this%obs)
860 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
863 if (
associated(this%outputtab1))
then
864 call this%outputtab1%table_da()
865 deallocate (this%outputtab1)
866 nullify (this%outputtab1)
868 if (
associated(this%outputtab2))
then
869 call this%outputtab2%table_da()
870 deallocate (this%outputtab2)
871 nullify (this%outputtab2)
875 deallocate (this%filename)
882 call this%DisConnExchangeType%disconnex_da()
898 character(len=LINELENGTH) :: text
899 integer(I4B) :: ntabcol, i
901 call this%DisConnExchangeType%allocate_arrays()
903 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
904 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
912 if (this%iprflow /= 0)
then
916 if (this%inamedbound > 0)
then
917 ntabcol = ntabcol + 1
922 if (this%v_model1%is_local)
then
923 call table_cr(this%outputtab1, this%name,
' ')
924 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwemodel1%iout, &
927 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
929 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
931 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
932 if (this%inamedbound > 0)
then
934 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
938 if (this%v_model2%is_local)
then
939 call table_cr(this%outputtab2, this%name,
' ')
940 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwemodel2%iout, &
943 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
945 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
947 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
948 if (this%inamedbound > 0)
then
950 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
971 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
991 character(len=LENBOUNDNAME) :: bname
994 10
format(
'Exchange "', a,
'" for observation "', a, &
995 '" is invalid in package "', a,
'"')
996 20
format(
'Exchange id "', i0,
'" for observation "', a, &
997 '" is invalid in package "', a,
'"')
999 do i = 1, this%obs%npakobs
1000 obsrv => this%obs%pakobs(i)%obsrv
1005 call obsrv%ResetObsIndex()
1006 obsrv%BndFound = .false.
1008 bname = obsrv%FeatureName
1009 if (bname /=
'')
then
1015 if (this%boundname(j) == bname)
then
1017 obsrv%BndFound = .true.
1018 obsrv%CurrentTimeStepEndValue =
dzero
1019 call obsrv%AddObsIndex(j)
1022 if (.not. jfound)
then
1023 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
1028 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
1030 obsrv%BndFound = .true.
1031 obsrv%CurrentTimeStepEndValue =
dzero
1032 call obsrv%AddObsIndex(obsrv%intPak1)
1036 if (.not. jfound)
then
1037 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1072 logical(LGP) :: is_connected
1074 is_connected = .false.
1079 if (
associated(this%gwemodel1, model))
then
1080 is_connected = .true.
1081 else if (
associated(this%gwemodel2, model))
then
1082 is_connected = .true.
1102 logical(LGP) :: use_im
1127 integer(I4B) :: iexg
1132 if (this%obs%npakobs > 0)
then
1133 call this%obs%obs_bd_clear()
1134 do i = 1, this%obs%npakobs
1135 obsrv => this%obs%pakobs(i)%obsrv
1136 do j = 1, obsrv%indxbnds_count
1137 iexg = obsrv%indxbnds(j)
1139 select case (obsrv%ObsTypeId)
1140 case (
'FLOW-JA-FACE')
1141 n1 = this%nodem1(iexg)
1142 n2 = this%nodem2(iexg)
1143 v = this%simvals(iexg)
1145 errmsg =
'Unrecognized observation type: '// &
1146 trim(obsrv%ObsTypeId)
1150 call this%obs%SaveOneSimval(obsrv, v)
1172 integer(I4B),
intent(in) :: inunitobs
1173 integer(I4B),
intent(in) :: iout
1175 integer(I4B) :: n, iexg, istat
1176 integer(I4B) :: icol, istart, istop
1178 character(len=LINELENGTH) :: string
1180 string = obsrv%IDstring
1183 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1184 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1185 if (istat == 0)
then
1186 obsrv%intPak1 = iexg
1190 obsrv%FeatureName = trim(adjustl(string))
1194 obsrv%intPak1 = namedboundflag
1208 class(*),
pointer,
intent(inout) :: obj
1213 if (.not.
associated(obj))
return
1231 type(
listtype),
intent(inout) :: list
1232 integer(I4B),
intent(in) :: idx
1236 class(*),
pointer :: obj
1238 obj => list%GetItem(idx)
subroutine, public addbaseexchangetolist(list, exchange)
Add the exchange object (BaseExchangeType) to a list.
class(basemodeltype) function, pointer, public getbasemodelfromlist(list, idx)
This module contains the BudgetModule.
subroutine, public rate_accumulator(flow, rin, rout)
@ brief Rate accumulator subroutine
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
@ tabcenter
centered table column
@ tableft
left justified table column
integer(i4b), parameter lenmodelname
maximum length of the model name
integer(i4b), parameter lenpackagename
maximum length of the package name
integer(i4b), parameter namedboundflag
named bound flag
real(dp), parameter dnodata
real no data constant
integer(i4b), parameter lenvarname
maximum length of a variable name
integer(i4b), parameter lenauxname
maximum length of a aux variable
integer(i4b), parameter lenboundname
maximum length of a bound name
real(dp), parameter dzero
real constant zero
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
subroutine, public gnc_cr(gncobj, name_parent, inunit, iout)
Create new GNC exchange object.
This module contains the GweGweExchangeModule Module.
subroutine gwe_gwe_rp(this)
@ brief Read and prepare
subroutine read_mvt(this, iout)
@ brief Read mover
subroutine gwe_gwe_ot(this)
@ brief Output
subroutine gwe_gwe_rp_obs(this)
@ brief Read and prepare observations
subroutine gwe_gwe_process_obsid(obsrv, dis, inunitobs, iout)
@ brief Obs ID processor
subroutine gwe_gwe_bdsav_model(this, model)
@ brief Budget save
subroutine gwe_gwe_ad(this)
@ brief Advance
subroutine gwe_gwe_df_obs(this)
@ brief Define observations
subroutine gwe_gwe_bd(this, icnvg, isuppress_output, isolnid)
@ brief Budget
subroutine gwe_gwe_da(this)
@ brief Deallocate
subroutine gwe_gwe_save_simvals(this)
@ brief Save simulated flow observations
subroutine allocate_arrays(this)
@ brief Allocate arrays
logical(lgp) function gwe_gwe_connects_model(this, model)
Return true when this exchange provides matrix coefficients for solving.
class(gweexchangetype) function, pointer, public getgweexchangefromlist(list, idx)
@ brief Get exchange from list
class(gweexchangetype) function, pointer, public castasgweexchange(obj)
@ brief Cast polymorphic object as exchange
subroutine source_options(this, iout)
@ brief Source options
logical(lgp) function use_interface_model(this)
Should interface model be used for this exchange.
subroutine, public gweexchange_create(filename, name, id, m1_id, m2_id, input_mempath)
@ brief Create GWT GWT exchange
subroutine gwe_gwe_bdsav(this)
@ brief Budget save
subroutine gwe_gwe_ar(this)
@ brief Allocate and read
subroutine allocate_scalars(this)
@ brief Allocate scalars
subroutine validate_exchange(this)
validate exchange data after reading
subroutine gwe_gwe_fp(this)
@ brief Final processing
subroutine gwe_gwe_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
@ brief Fill coefficients
subroutine gwe_gwe_df(this)
@ brief Define GWE GWE exchange
This module defines variable data types.
type(listtype), public basemodellist
type(listtype), public baseexchangelist
character(len=lenmempath) function create_mem_path(component, subcomponent, context)
returns the path to the memory object
This module contains the derived types ObserveType and ObsDataType.
This module contains the derived type ObsType.
subroutine, public obs_cr(obs, inobs)
@ brief Create a new ObsType object
This module contains simulation methods.
subroutine, public ustop(stopmess, ioutlocal)
Stop the simulation.
subroutine, public store_error(msg, terminate)
Store an error message.
integer(i4b) function, public count_errors()
Return number of errors.
subroutine, public store_error_filename(filename, terminate)
Store the erroring file name.
This module contains simulation variables.
character(len=maxcharlen) errmsg
error message string
integer(i4b), dimension(:), allocatable model_loc_idx
equals the local index into the basemodel list (-1 when not available)
integer(i4b) iout
file unit number for simulation output
This module contains the SourceCommonModule.
logical(lgp) function, public filein_fname(filename, tagname, input_mempath, input_fname)
enforce and set a single input filename provided via FILEIN keyword
subroutine, public table_cr(this, name, title)
logical(lgp), pointer, public readnewdata
flag indicating time to read new data
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
subroutine, public mvt_cr(mvt, name_model, inunit, iout, fmi1, eqnsclfac, depvartype, gwfmodelname1, gwfmodelname2, fmi2)
Create a new mover transport object.
Highest level model type. All models extend this parent type.
This class is used to store a single deferred-length character string. It was designed to work in an ...
Exchange based on connection between discretizations of DisBaseType. The data specifies the connectio...
Derived type for GwtExchangeType.
A generic heterogeneous doubly-linked list.