49 character(len=LENMODELNAME) :: gwfmodelname1 =
''
50 character(len=LENMODELNAME) :: gwfmodelname2 =
''
51 real(dp),
dimension(:),
pointer,
contiguous :: gwfsimvals => null()
58 integer(I4B),
pointer :: inewton => null()
59 integer(I4B),
pointer :: iadvscheme
63 integer(I4B),
pointer :: inmvt => null()
67 integer(I4B),
pointer :: inobs => null()
71 real(dp),
dimension(:),
pointer,
contiguous :: cond => null()
72 real(dp),
dimension(:),
pointer,
contiguous :: simvals => null()
116 character(len=*),
intent(in) :: filename
117 integer(I4B),
intent(in) :: id
118 character(len=*) :: name
119 integer(I4B),
intent(in) :: m1_id
120 integer(I4B),
intent(in) :: m2_id
121 character(len=*),
intent(in) :: input_mempath
126 integer(I4B) :: m1_index, m2_index
130 baseexchange => exchange
137 exchange%input_mempath = input_mempath
140 call exchange%allocate_scalars()
141 exchange%filename = filename
142 exchange%typename =
'GWT-GWT'
143 exchange%iAdvScheme = 0
148 mb => getbasemodelfromlist(basemodellist, m1_index)
149 if (m1_index > 0)
then
152 exchange%model1 => mb
153 exchange%gwtmodel1 => mb
160 if (m2_index > 0)
then
161 mb => getbasemodelfromlist(basemodellist, m2_index)
164 exchange%model2 => mb
165 exchange%gwtmodel2 => mb
171 if (.not.
associated(exchange%gwtmodel1) .and. m1_index > 0)
then
172 write (
errmsg,
'(3a)')
'Problem with GWT-GWT exchange ', &
173 trim(exchange%name), &
174 '. First specified GWT Model does not appear to be of the correct type.'
179 if (.not.
associated(exchange%gwtmodel2) .and. m2_index > 0)
then
180 write (
errmsg,
'(3a)')
'Problem with GWT-GWT exchange ', &
181 trim(exchange%name), &
182 '. Second specified GWT Model does not appear to be of the correct type.'
187 call obs_cr(exchange%obs, exchange%inobs)
207 write (
iout,
'(/a,a)')
' Creating exchange: ', this%name
210 if (this%v_model1%idsoln%get() /= this%v_model2%idsoln%get())
then
211 call store_error(
'Two models are connected in a GWT '// &
212 'exchange but they are in different solutions. '// &
213 'GWT models must be in same solution: '// &
214 trim(this%v_model1%name)//
' '// &
215 trim(this%v_model2%name))
220 call this%source_options(
iout)
223 call this%source_dimensions(
iout)
226 call this%allocate_arrays()
229 call this%source_data(
iout)
232 if (this%inmvt > 0)
then
233 call this%read_mvt(
iout)
234 call this%mvt%mvt_df(this%gwtmodel1%dis)
238 call this%gwt_gwt_df_obs()
239 if (
associated(this%gwtmodel1))
then
240 call this%obs%obs_df(
iout, this%name,
'GWT-GWT', this%gwtmodel1%dis)
244 call this%validate_exchange()
257 if (this%gwfmodelname1 ==
'')
then
258 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
259 ' requires that GWFMODELNAME1 be entered in the &
263 if (this%gwfmodelname2 ==
'')
then
264 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
265 ' requires that GWFMODELNAME2 be entered in the &
271 if (this%v_model1 == this%v_model2)
then
272 if (this%ixt3d > 0)
then
273 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
274 ' is a periodic boundary condition which cannot'// &
275 ' be configured with XT3D'
283 if (
associated(this%gwtmodel1) .and.
associated(this%gwtmodel2))
then
284 if (this%gwtmodel1%indsp /= 0 .or. this%gwtmodel2%indsp /= 0)
then
285 if (this%ianglex == 0)
then
286 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
287 ' requires that ANGLDEGX be specified as an'// &
288 ' auxiliary variable because dispersion was '// &
289 'specified in one or both transport models.'
295 if (this%ixt3d > 0 .and. this%ianglex == 0)
then
296 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
297 ' requires that ANGLDEGX be specified as an'// &
298 ' auxiliary variable because XT3D is enabled'
319 if (this%inmvt > 0)
call this%mvt%mvt_ar()
322 call this%obs%obs_ar()
342 if (this%inmvt > 0)
call this%mvt%mvt_rp()
345 call this%gwt_gwt_rp_obs()
363 call this%obs%obs_ad()
373 subroutine gwt_gwt_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
376 integer(I4B),
intent(in) :: kiter
378 real(DP),
dimension(:),
intent(inout) :: rhs_sln
379 integer(I4B),
optional,
intent(in) :: inwtflag
382 if (this%inmvt > 0)
call this%mvt%mvt_fc(this%gwtmodel1%x, this%gwtmodel2%x)
392 subroutine gwt_gwt_bd(this, icnvg, isuppress_output, isolnid)
398 integer(I4B),
intent(inout) :: icnvg
399 integer(I4B),
intent(in) :: isuppress_output
400 integer(I4B),
intent(in) :: isolnid
402 character(len=LENBUDTXT),
dimension(1) :: budtxt
403 real(DP),
dimension(2, 1) :: budterm
404 real(DP) :: ratin, ratout
407 budtxt(1) =
' FLOW-JA-FACE'
413 if (
associated(this%gwtmodel1))
then
414 budterm(1, 1) = ratin
415 budterm(2, 1) = ratout
416 call this%gwtmodel1%model_bdentry(budterm, budtxt, this%name)
420 if (
associated(this%gwtmodel2))
then
421 budterm(1, 1) = ratout
422 budterm(2, 1) = ratin
423 call this%gwtmodel2%model_bdentry(budterm, budtxt, this%name)
427 if (this%inmvt > 0)
call this%mvt%mvt_bd(this%gwtmodel1%x, this%gwtmodel2%x)
441 integer(I4B) :: icbcfl, ibudfl
444 if (
associated(this%gwtmodel1))
then
445 call this%gwt_gwt_bdsav_model(this%gwtmodel1)
449 if (
associated(this%gwtmodel2))
then
450 call this%gwt_gwt_bdsav_model(this%gwtmodel2)
462 if (this%inobs /= 0)
then
463 call this%gwt_gwt_save_simvals()
482 character(len=LENBOUNDNAME) :: bname
483 character(len=LENPACKAGENAME + 4) :: packname
484 character(len=LENBUDTXT),
dimension(1) :: budtxt
487 character(len=20) :: nodestr
488 integer(I4B) :: ntabrows
489 integer(I4B) :: nodeu
490 integer(I4B) :: i, n1, n2, n1u, n2u
491 integer(I4B) :: ibinun
492 real(DP) :: ratin, ratout, rrate
493 logical(LGP) :: is_for_model1
494 integer(I4B) :: isuppress_output
498 budtxt(1) =
' FLOW-JA-FACE'
499 packname =
'EXG '//this%name
500 packname = adjustr(packname)
501 if (
associated(model, this%gwtmodel1))
then
502 output_tab => this%outputtab1
503 nbr_model => this%v_model2
504 is_for_model1 = .true.
506 output_tab => this%outputtab2
507 nbr_model => this%v_model1
508 is_for_model1 = .false.
512 if (this%iprflow /= 0)
then
515 if (model%oc%oc_save(
'BUDGET'))
then
516 call output_tab%set_title(packname)
520 call output_tab%set_kstpkper(
kstp,
kper)
529 if (this%v_model1%ibound%get(n1) /= 0 .and. &
530 this%v_model2%ibound%get(n2) /= 0)
then
531 ntabrows = ntabrows + 1
534 if (ntabrows > 0)
then
535 call output_tab%set_maxbound(ntabrows)
542 if (this%ipakcb /= 0)
then
543 ibinun = model%oc%oc_save_unit(
'BUDGET')
550 if (.not. model%oc%oc_save(
'BUDGET')) ibinun = 0
551 if (isuppress_output /= 0)
then
556 if (ibinun /= 0)
then
557 call model%dis%record_srcdst_list_header(budtxt(1), &
562 this%naux, this%auxname, &
575 if (this%inamedbound > 0)
then
576 bname = this%boundname(i)
587 if (this%v_model1%ibound%get(n1) /= 0 .and. &
588 this%v_model2%ibound%get(n2) /= 0)
then
589 rrate = this%simvals(i)
592 if (this%iprflow /= 0)
then
593 if (model%oc%oc_save(
'BUDGET'))
then
596 if (is_for_model1)
then
597 nodeu = model%dis%get_nodeuser(n1)
598 call model%dis%nodeu_to_string(nodeu, nodestr)
599 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
602 nodeu = model%dis%get_nodeuser(n2)
603 call model%dis%nodeu_to_string(nodeu, nodestr)
604 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
609 if (rrate <
dzero)
then
610 ratout = ratout - rrate
612 ratin = ratin + rrate
617 n1u = this%v_model1%dis_get_nodeuser(n1)
618 n2u = this%v_model2%dis_get_nodeuser(n2)
619 if (ibinun /= 0)
then
620 if (is_for_model1)
then
621 call model%dis%record_mf6_list_entry( &
622 ibinun, n1u, n2u, rrate, this%naux, this%auxvar(:, i), &
625 call model%dis%record_mf6_list_entry( &
626 ibinun, n2u, n1u, -rrate, this%naux, this%auxvar(:, i), &
648 integer(I4B) :: iexg, n1, n2
649 integer(I4B) :: ibudfl
651 character(len=LINELENGTH) :: node1str, node2str
653 character(len=*),
parameter :: fmtheader = &
654 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
655 &2a16, 5a16, /, 112('-'))"
656 character(len=*),
parameter :: fmtheader2 = &
657 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
658 &2a16, 4a16, /, 96('-'))"
659 character(len=*),
parameter :: fmtdata = &
663 call this%gwt_gwt_bdsav()
666 if (this%iprflow /= 0)
then
667 write (
iout, fmtheader2) trim(adjustl(this%name)), this%id,
'NODEM1', &
668 'NODEM2',
'COND',
'X_M1',
'X_M2',
'FLOW'
669 do iexg = 1, this%nexg
670 n1 = this%nodem1(iexg)
671 n2 = this%nodem2(iexg)
672 flow = this%simvals(iexg)
673 call this%v_model1%dis_noder_to_string(n1, node1str)
674 call this%v_model2%dis_noder_to_string(n2, node2str)
675 write (
iout, fmtdata) trim(adjustl(node1str)), &
676 trim(adjustl(node2str)), &
677 this%cond(iexg), this%v_model1%x%get(n1), &
678 this%v_model2%x%get(n2), flow
685 if (this%inmvt > 0)
call this%mvt%mvt_ot_bdsummary(ibudfl)
688 call this%obs%obs_ot()
708 integer(I4B),
intent(in) :: iout
711 character(len=LENVARNAME),
dimension(3) :: adv_scheme = &
712 &[character(len=LENVARNAME) ::
'UPSTREAM',
'CENTRAL',
'TVD']
713 character(len=linelength) :: mvt_fname
716 call mem_set_value(this%gwfmodelname1,
'GWFMODELNAME1', this%input_mempath, &
718 call mem_set_value(this%gwfmodelname2,
'GWFMODELNAME2', this%input_mempath, &
720 call mem_set_value(this%iAdvScheme,
'ADV_SCHEME', this%input_mempath, &
721 adv_scheme, found%adv_scheme)
722 call mem_set_value(this%ixt3d,
'DSP_XT3D_OFF', this%input_mempath, &
724 call mem_set_value(this%ixt3d,
'DSP_XT3D_RHS', this%input_mempath, &
727 write (iout,
'(1x,a)')
'PROCESSING GWT-GWT EXCHANGE OPTIONS'
730 call this%DisConnExchangeType%source_options(iout)
732 if (found%gwfmodelname1)
then
733 write (iout,
'(4x,a,a)') &
734 'GWFMODELNAME1 IS SET TO: ', trim(this%gwfmodelname1)
737 if (found%gwfmodelname2)
then
738 write (iout,
'(4x,a,a)') &
739 'GWFMODELNAME2 IS SET TO: ', trim(this%gwfmodelname2)
742 if (found%adv_scheme)
then
744 this%iAdvScheme = this%iAdvScheme - 1
745 write (iout,
'(4x,a,a)') &
746 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
747 trim(adv_scheme(this%iAdvScheme + 1))
750 if (found%dsp_xt3d_off .and. found%dsp_xt3d_rhs)
then
751 errmsg =
'DSP_XT3D_OFF and DSP_XT3D_RHS cannot both be set as options.'
754 else if (found%dsp_xt3d_off)
then
756 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
757 else if (found%dsp_xt3d_rhs)
then
759 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
763 if (
filein_fname(mvt_fname,
'MVT6_FILENAME', this%input_mempath, &
766 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
767 write (iout,
'(4x,a)') &
768 'WATER MOVER TRANSPORT INFORMATION WILL BE READ FROM ', trim(mvt_fname)
772 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
773 this%input_mempath, this%filename))
then
774 this%obs%active = .true.
776 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
779 write (iout,
'(1x,a)')
'END OF GWT-GWT EXCHANGE OPTIONS'
794 integer(I4B),
intent(in) :: iout
799 call mvt_cr(this%mvt, this%name, this%inmvt, iout, this%gwtmodel1%fmi, &
800 this%gwtmodel1%eqnsclfac, this%gwtmodel1%depvartype, &
801 gwfmodelname1=this%gwfmodelname1, &
802 gwfmodelname2=this%gwfmodelname2, &
803 fmi2=this%gwtmodel2%fmi)
820 call this%DisConnExchangeType%allocate_scalars()
822 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
824 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
847 if (this%inmvt > 0)
then
848 call this%mvt%mvt_da()
849 deallocate (this%mvt)
851 call this%obs%obs_da()
852 deallocate (this%obs)
857 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
860 if (
associated(this%outputtab1))
then
861 call this%outputtab1%table_da()
862 deallocate (this%outputtab1)
863 nullify (this%outputtab1)
865 if (
associated(this%outputtab2))
then
866 call this%outputtab2%table_da()
867 deallocate (this%outputtab2)
868 nullify (this%outputtab2)
872 deallocate (this%filename)
879 call this%DisConnExchangeType%disconnex_da()
895 character(len=LINELENGTH) :: text
896 integer(I4B) :: ntabcol, i
898 call this%DisConnExchangeType%allocate_arrays()
900 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
901 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
909 if (this%iprflow /= 0)
then
913 if (this%inamedbound > 0)
then
914 ntabcol = ntabcol + 1
919 if (this%v_model1%is_local)
then
920 call table_cr(this%outputtab1, this%name,
' ')
921 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwtmodel1%iout, &
924 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
926 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
928 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
929 if (this%inamedbound > 0)
then
931 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
935 if (this%v_model2%is_local)
then
936 call table_cr(this%outputtab2, this%name,
' ')
937 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwtmodel2%iout, &
940 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
942 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
944 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
945 if (this%inamedbound > 0)
then
947 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
968 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
988 character(len=LENBOUNDNAME) :: bname
991 10
format(
'Exchange "', a,
'" for observation "', a, &
992 '" is invalid in package "', a,
'"')
993 20
format(
'Exchange id "', i0,
'" for observation "', a, &
994 '" is invalid in package "', a,
'"')
996 do i = 1, this%obs%npakobs
997 obsrv => this%obs%pakobs(i)%obsrv
1002 call obsrv%ResetObsIndex()
1003 obsrv%BndFound = .false.
1005 bname = obsrv%FeatureName
1006 if (bname /=
'')
then
1012 if (this%boundname(j) == bname)
then
1014 obsrv%BndFound = .true.
1015 obsrv%CurrentTimeStepEndValue =
dzero
1016 call obsrv%AddObsIndex(j)
1019 if (.not. jfound)
then
1020 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
1025 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
1027 obsrv%BndFound = .true.
1028 obsrv%CurrentTimeStepEndValue =
dzero
1029 call obsrv%AddObsIndex(obsrv%intPak1)
1033 if (.not. jfound)
then
1034 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1069 logical(LGP) :: is_connected
1071 is_connected = .false.
1076 if (
associated(this%gwtmodel1, model))
then
1077 is_connected = .true.
1078 else if (
associated(this%gwtmodel2, model))
then
1079 is_connected = .true.
1099 logical(LGP) :: use_im
1124 integer(I4B) :: iexg
1129 if (this%obs%npakobs > 0)
then
1130 call this%obs%obs_bd_clear()
1131 do i = 1, this%obs%npakobs
1132 obsrv => this%obs%pakobs(i)%obsrv
1133 do j = 1, obsrv%indxbnds_count
1134 iexg = obsrv%indxbnds(j)
1136 select case (obsrv%ObsTypeId)
1137 case (
'FLOW-JA-FACE')
1138 n1 = this%nodem1(iexg)
1139 n2 = this%nodem2(iexg)
1140 v = this%simvals(iexg)
1142 errmsg =
'Unrecognized observation type: '// &
1143 trim(obsrv%ObsTypeId)
1147 call this%obs%SaveOneSimval(obsrv, v)
1169 integer(I4B),
intent(in) :: inunitobs
1170 integer(I4B),
intent(in) :: iout
1172 integer(I4B) :: n, iexg, istat
1173 integer(I4B) :: icol, istart, istop
1175 character(len=LINELENGTH) :: string
1177 string = obsrv%IDstring
1180 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1181 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1182 if (istat == 0)
then
1183 obsrv%intPak1 = iexg
1187 obsrv%FeatureName = trim(adjustl(string))
1191 obsrv%intPak1 = namedboundflag
1205 class(*),
pointer,
intent(inout) :: obj
1210 if (.not.
associated(obj))
return
1228 type(
listtype),
intent(inout) :: list
1229 integer(I4B),
intent(in) :: idx
1233 class(*),
pointer :: obj
1235 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 GwtGwtExchangeModule Module.
class(gwtexchangetype) function, pointer, public castasgwtexchange(obj)
@ brief Cast polymorphic object as exchange
subroutine allocate_scalars(this)
@ brief Allocate scalars
subroutine gwt_gwt_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
@ brief Fill coefficients
subroutine read_mvt(this, iout)
@ brief Read mover
subroutine gwt_gwt_df_obs(this)
@ brief Define observations
subroutine source_options(this, iout)
@ brief Source options
subroutine gwt_gwt_df(this)
@ brief Define GWT GWT exchange
subroutine gwt_gwt_process_obsid(obsrv, dis, inunitobs, iout)
@ brief Obs ID processor
subroutine, public gwtexchange_create(filename, name, id, m1_id, m2_id, input_mempath)
@ brief Create GWT GWT exchange
subroutine validate_exchange(this)
validate exchange data after reading
subroutine gwt_gwt_bdsav(this)
@ brief Budget save
subroutine gwt_gwt_fp(this)
@ brief Final processing
logical(lgp) function gwt_gwt_connects_model(this, model)
Return true when this exchange provides matrix coefficients for solving.
subroutine gwt_gwt_save_simvals(this)
@ brief Save simulated flow observations
subroutine gwt_gwt_ad(this)
@ brief Advance
subroutine gwt_gwt_rp_obs(this)
@ brief Read and prepare observations
subroutine gwt_gwt_bdsav_model(this, model)
@ brief Budget save
class(gwtexchangetype) function, pointer, public getgwtexchangefromlist(list, idx)
@ brief Get exchange from list
subroutine allocate_arrays(this)
@ brief Allocate arrays
subroutine gwt_gwt_ar(this)
@ brief Allocate and read
subroutine gwt_gwt_bd(this, icnvg, isuppress_output, isolnid)
@ brief Budget
logical(lgp) function use_interface_model(this)
Should interface model be used for this exchange.
subroutine gwt_gwt_rp(this)
@ brief Read and prepare
subroutine gwt_gwt_da(this)
@ brief Deallocate
subroutine gwt_gwt_ot(this)
@ brief Output
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.