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)
204 write (
iout,
'(/a,a)')
' Creating exchange: ', this%name
207 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
208 if (this%gwemodel1%idsoln /= this%gwemodel2%idsoln)
then
209 call store_error(
'Two models are connect in a GWE '// &
210 'exchange but they are in different solutions. '// &
211 'GWE models must be in same solution: '// &
212 trim(this%gwemodel1%name)//
' '// &
213 trim(this%gwemodel2%name))
219 call this%source_options(
iout)
222 call this%source_dimensions(
iout)
225 call this%allocate_arrays()
228 call this%source_data(
iout)
231 if (this%inmvt > 0)
then
232 call this%read_mvt(
iout)
233 call this%mvt%mvt_df(this%gwemodel1%dis)
237 call this%gwe_gwe_df_obs()
238 if (
associated(this%gwemodel1))
then
239 call this%obs%obs_df(
iout, this%name,
'GWE-GWE', this%gwemodel1%dis)
243 call this%validate_exchange()
254 if (this%gwfmodelname1 ==
'')
then
255 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
256 ' requires that GWFMODELNAME1 be entered in the &
260 if (this%gwfmodelname2 ==
'')
then
261 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
262 ' requires that GWFMODELNAME2 be entered in the &
268 if (
associated(this%model1, this%model2))
then
269 if (this%ixt3d > 0)
then
270 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
271 ' is a periodic boundary condition which cannot'// &
272 ' be configured with XT3D'
280 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
281 if (this%gwemodel1%incnd /= 0 .or. this%gwemodel2%incnd /= 0)
then
282 if (this%ianglex == 0)
then
283 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
284 ' requires that ANGLDEGX be specified as an'// &
285 ' auxiliary variable because dispersion was '// &
286 'specified in one or both transport models.'
292 if (this%ixt3d > 0 .and. this%ianglex == 0)
then
293 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
294 ' requires that ANGLDEGX be specified as an'// &
295 ' auxiliary variable because XT3D is enabled'
313 if (this%inmvt > 0)
call this%mvt%mvt_ar()
316 call this%obs%obs_ar()
333 if (this%inmvt > 0)
call this%mvt%mvt_rp()
336 call this%gwe_gwe_rp_obs()
351 call this%obs%obs_ad()
358 subroutine gwe_gwe_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
361 integer(I4B),
intent(in) :: kiter
363 real(DP),
dimension(:),
intent(inout) :: rhs_sln
364 integer(I4B),
optional,
intent(in) :: inwtflag
367 if (this%inmvt > 0)
call this%mvt%mvt_fc(this%gwemodel1%x, this%gwemodel2%x)
374 subroutine gwe_gwe_bd(this, icnvg, isuppress_output, isolnid)
380 integer(I4B),
intent(inout) :: icnvg
381 integer(I4B),
intent(in) :: isuppress_output
382 integer(I4B),
intent(in) :: isolnid
384 character(len=LENBUDTXT),
dimension(1) :: budtxt
385 real(DP),
dimension(2, 1) :: budterm
386 real(DP) :: ratin, ratout
389 budtxt(1) =
' FLOW-JA-FACE'
395 if (
associated(this%gwemodel1))
then
396 budterm(1, 1) = ratin
397 budterm(2, 1) = ratout
398 call this%gwemodel1%model_bdentry(budterm, budtxt, this%name)
402 if (
associated(this%gwemodel2))
then
403 budterm(1, 1) = ratout
404 budterm(2, 1) = ratin
405 call this%gwemodel2%model_bdentry(budterm, budtxt, this%name)
409 if (this%inmvt > 0)
call this%mvt%mvt_bd(this%gwemodel1%x, this%gwemodel2%x)
420 integer(I4B) :: icbcfl, ibudfl
423 if (
associated(this%gwemodel1))
then
424 call this%gwe_gwe_bdsav_model(this%gwemodel1)
428 if (
associated(this%gwemodel2))
then
429 call this%gwe_gwe_bdsav_model(this%gwemodel2)
441 if (this%inobs /= 0)
then
442 call this%gwe_gwe_save_simvals()
458 character(len=LENBOUNDNAME) :: bname
459 character(len=LENPACKAGENAME + 4) :: packname
460 character(len=LENBUDTXT),
dimension(1) :: budtxt
463 character(len=20) :: nodestr
464 integer(I4B) :: ntabrows
465 integer(I4B) :: nodeu
466 integer(I4B) :: i, n1, n2, n1u, n2u
467 integer(I4B) :: ibinun
468 real(DP) :: ratin, ratout, rrate
469 logical(LGP) :: is_for_model1
470 integer(I4B) :: isuppress_output
471 real(DP),
dimension(this%naux) :: auxrow
475 budtxt(1) =
' FLOW-JA-FACE'
476 packname =
'EXG '//this%name
477 packname = adjustr(packname)
478 if (
associated(model, this%gwemodel1))
then
479 output_tab => this%outputtab1
480 nbr_model => this%v_model2
481 is_for_model1 = .true.
483 output_tab => this%outputtab2
484 nbr_model => this%v_model1
485 is_for_model1 = .false.
489 if (this%iprflow /= 0)
then
492 if (model%oc%oc_save(
'BUDGET'))
then
493 call output_tab%set_title(packname)
497 call output_tab%set_kstpkper(
kstp,
kper)
506 if (this%v_model1%ibound%get(n1) /= 0 .and. &
507 this%v_model2%ibound%get(n2) /= 0)
then
508 ntabrows = ntabrows + 1
511 if (ntabrows > 0)
then
512 call output_tab%set_maxbound(ntabrows)
519 if (this%ipakcb /= 0)
then
520 ibinun = model%oc%oc_save_unit(
'BUDGET')
527 if (.not. model%oc%oc_save(
'BUDGET')) ibinun = 0
528 if (isuppress_output /= 0)
then
533 if (ibinun /= 0)
then
534 call model%dis%record_srcdst_list_header(budtxt(1), &
539 this%naux, this%auxname, &
552 if (this%inamedbound > 0)
then
553 bname = this%boundname(i)
564 if (this%v_model1%ibound%get(n1) /= 0 .and. &
565 this%v_model2%ibound%get(n2) /= 0)
then
566 rrate = this%simvals(i)
569 if (this%iprflow /= 0)
then
570 if (model%oc%oc_save(
'BUDGET'))
then
573 if (is_for_model1)
then
574 nodeu = model%dis%get_nodeuser(n1)
575 call model%dis%nodeu_to_string(nodeu, nodestr)
576 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
579 nodeu = model%dis%get_nodeuser(n2)
580 call model%dis%nodeu_to_string(nodeu, nodestr)
581 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
586 if (rrate <
dzero)
then
587 ratout = ratout - rrate
589 ratin = ratin + rrate
594 n1u = this%v_model1%dis_get_nodeuser(n1)
595 n2u = this%v_model2%dis_get_nodeuser(n2)
596 if (ibinun /= 0)
then
597 if (this%naux > 0)
then
598 auxrow(:) = this%auxvar(:, i)
600 if (is_for_model1)
then
601 call model%dis%record_mf6_list_entry( &
602 ibinun, n1u, n2u, rrate, this%naux, auxrow, &
605 call model%dis%record_mf6_list_entry( &
606 ibinun, n2u, n1u, -rrate, this%naux, auxrow, &
625 integer(I4B) :: iexg, n1, n2
626 integer(I4B) :: ibudfl
628 character(len=LINELENGTH) :: node1str, node2str
630 character(len=*),
parameter :: fmtheader = &
631 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
632 &2a16, 5a16, /, 112('-'))"
633 character(len=*),
parameter :: fmtheader2 = &
634 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
635 &2a16, 4a16, /, 96('-'))"
636 character(len=*),
parameter :: fmtdata = &
640 call this%gwe_gwe_bdsav()
643 if (this%iprflow /= 0)
then
644 write (
iout, fmtheader2) trim(adjustl(this%name)), this%id,
'NODEM1', &
645 'NODEM2',
'COND',
'X_M1',
'X_M2',
'FLOW'
646 do iexg = 1, this%nexg
647 n1 = this%nodem1(iexg)
648 n2 = this%nodem2(iexg)
649 flow = this%simvals(iexg)
650 call this%v_model1%dis_noder_to_string(n1, node1str)
651 call this%v_model2%dis_noder_to_string(n2, node2str)
652 write (
iout, fmtdata) trim(adjustl(node1str)), &
653 trim(adjustl(node2str)), &
654 this%cond(iexg), this%v_model1%x%get(n1), &
655 this%v_model2%x%get(n2), flow
662 if (this%inmvt > 0)
call this%mvt%mvt_ot_bdsummary(ibudfl)
665 call this%obs%obs_ot()
682 integer(I4B),
intent(in) :: iout
685 character(len=LENVARNAME),
dimension(3) :: adv_scheme = &
686 &[character(len=LENVARNAME) ::
'UPSTREAM',
'CENTRAL',
'TVD']
687 character(len=linelength) :: mvt_fname
690 call mem_set_value(this%gwfmodelname1,
'GWFMODELNAME1', this%input_mempath, &
692 call mem_set_value(this%gwfmodelname2,
'GWFMODELNAME2', this%input_mempath, &
694 call mem_set_value(this%iAdvScheme,
'ADV_SCHEME', this%input_mempath, &
695 adv_scheme, found%adv_scheme)
696 call mem_set_value(this%ixt3d,
'CND_XT3D_OFF', this%input_mempath, &
698 call mem_set_value(this%ixt3d,
'CND_XT3D_RHS', this%input_mempath, &
701 write (iout,
'(1x,a)')
'PROCESSING GWE-GWE EXCHANGE OPTIONS'
704 call this%DisConnExchangeType%source_options(iout)
706 if (found%gwfmodelname1)
then
707 write (iout,
'(4x,a,a)') &
708 'GWFMODELNAME1 IS SET TO: ', trim(this%gwfmodelname1)
711 if (found%gwfmodelname2)
then
712 write (iout,
'(4x,a,a)') &
713 'GWFMODELNAME2 IS SET TO: ', trim(this%gwfmodelname2)
716 if (found%adv_scheme)
then
718 this%iAdvScheme = this%iAdvScheme - 1
719 write (iout,
'(4x,a,a)') &
720 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
721 trim(adv_scheme(this%iAdvScheme + 1))
724 if (found%cnd_xt3d_off .and. found%cnd_xt3d_rhs)
then
725 errmsg =
'CND_XT3D_OFF and CND_XT3D_RHS cannot both be set as options.'
728 else if (found%cnd_xt3d_off)
then
730 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
731 else if (found%cnd_xt3d_rhs)
then
733 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
737 if (
filein_fname(mvt_fname,
'MVE6_FILENAME', this%input_mempath, &
740 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
741 write (iout,
'(4x,a)')
'WATER MOVER ENERGY TRANSPORT &
742 &INFORMATION WILL BE READ FROM ', trim(mvt_fname)
746 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
747 this%input_mempath, this%filename))
then
748 this%obs%active = .true.
750 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
753 write (iout,
'(1x,a)')
'END OF GWE-GWE EXCHANGE OPTIONS'
765 integer(I4B),
intent(in) :: iout
770 call mvt_cr(this%mvt, this%name, this%inmvt, iout, this%gwemodel1%fmi, &
771 this%gwemodel1%eqnsclfac, this%gwemodel1%depvartype, &
772 gwfmodelname1=this%gwfmodelname1, &
773 gwfmodelname2=this%gwfmodelname2, &
774 fmi2=this%gwemodel2%fmi)
788 call this%DisConnExchangeType%allocate_scalars()
790 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
792 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
812 if (this%inmvt > 0)
then
813 call this%mvt%mvt_da()
814 deallocate (this%mvt)
816 call this%obs%obs_da()
817 deallocate (this%obs)
822 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
825 if (
associated(this%outputtab1))
then
826 call this%outputtab1%table_da()
827 deallocate (this%outputtab1)
828 nullify (this%outputtab1)
830 if (
associated(this%outputtab2))
then
831 call this%outputtab2%table_da()
832 deallocate (this%outputtab2)
833 nullify (this%outputtab2)
837 deallocate (this%filename)
844 call this%DisConnExchangeType%disconnex_da()
857 character(len=LINELENGTH) :: text
858 integer(I4B) :: ntabcol, i
860 call this%DisConnExchangeType%allocate_arrays()
862 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
863 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
871 if (this%iprflow /= 0)
then
875 if (this%inamedbound > 0)
then
876 ntabcol = ntabcol + 1
881 if (this%v_model1%is_local)
then
882 call table_cr(this%outputtab1, this%name,
' ')
883 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwemodel1%iout, &
886 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
888 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
890 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
891 if (this%inamedbound > 0)
then
893 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
897 if (this%v_model2%is_local)
then
898 call table_cr(this%outputtab2, this%name,
' ')
899 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwemodel2%iout, &
902 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
904 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
906 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
907 if (this%inamedbound > 0)
then
909 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
927 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
944 character(len=LENBOUNDNAME) :: bname
947 10
format(
'Exchange "', a,
'" for observation "', a, &
948 '" is invalid in package "', a,
'"')
949 20
format(
'Exchange id "', i0,
'" for observation "', a, &
950 '" is invalid in package "', a,
'"')
952 do i = 1, this%obs%npakobs
953 obsrv => this%obs%pakobs(i)%obsrv
958 call obsrv%ResetObsIndex()
959 obsrv%BndFound = .false.
961 bname = obsrv%FeatureName
962 if (bname /=
'')
then
968 if (this%boundname(j) == bname)
then
970 obsrv%BndFound = .true.
971 obsrv%CurrentTimeStepEndValue =
dzero
972 call obsrv%AddObsIndex(j)
975 if (.not. jfound)
then
976 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
981 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
983 obsrv%BndFound = .true.
984 obsrv%CurrentTimeStepEndValue =
dzero
985 call obsrv%AddObsIndex(obsrv%intPak1)
989 if (.not. jfound)
then
990 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1019 logical(LGP) :: is_connected
1021 is_connected = .false.
1026 if (
associated(this%gwemodel1, model))
then
1027 is_connected = .true.
1028 else if (
associated(this%gwemodel2, model))
then
1029 is_connected = .true.
1046 logical(LGP) :: use_im
1068 integer(I4B) :: iexg
1073 if (this%obs%npakobs > 0)
then
1074 call this%obs%obs_bd_clear()
1075 do i = 1, this%obs%npakobs
1076 obsrv => this%obs%pakobs(i)%obsrv
1077 do j = 1, obsrv%indxbnds_count
1078 iexg = obsrv%indxbnds(j)
1080 select case (obsrv%ObsTypeId)
1081 case (
'FLOW-JA-FACE')
1082 n1 = this%nodem1(iexg)
1083 n2 = this%nodem2(iexg)
1084 v = this%simvals(iexg)
1086 errmsg =
'Unrecognized observation type: '// &
1087 trim(obsrv%ObsTypeId)
1091 call this%obs%SaveOneSimval(obsrv, v)
1110 integer(I4B),
intent(in) :: inunitobs
1111 integer(I4B),
intent(in) :: iout
1113 integer(I4B) :: n, iexg, istat
1114 integer(I4B) :: icol, istart, istop
1116 character(len=LINELENGTH) :: string
1118 string = obsrv%IDstring
1121 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1122 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1123 if (istat == 0)
then
1124 obsrv%intPak1 = iexg
1128 obsrv%FeatureName = trim(adjustl(string))
1132 obsrv%intPak1 = namedboundflag
1143 class(*),
pointer,
intent(inout) :: obj
1148 if (.not.
associated(obj))
return
1163 type(
listtype),
intent(inout) :: list
1164 integer(I4B),
intent(in) :: idx
1168 class(*),
pointer :: obj
1170 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.