51 character(len=LENMODELNAME) :: gwfmodelname1 =
''
52 character(len=LENMODELNAME) :: gwfmodelname2 =
''
53 real(dp),
dimension(:),
pointer,
contiguous :: gwfsimvals => null()
60 integer(I4B),
pointer :: inewton => null()
61 integer(I4B),
pointer :: iadvscheme
65 integer(I4B),
pointer :: inmvt => null()
69 integer(I4B),
pointer :: inobs => null()
73 real(dp),
dimension(:),
pointer,
contiguous :: cond => null()
74 real(dp),
dimension(:),
pointer,
contiguous :: simvals => null()
118 character(len=*),
intent(in) :: filename
119 integer(I4B),
intent(in) :: id
120 character(len=*) :: name
121 integer(I4B),
intent(in) :: m1_id
122 integer(I4B),
intent(in) :: m2_id
123 character(len=*),
intent(in) :: input_mempath
128 integer(I4B) :: m1_index, m2_index
132 baseexchange => exchange
139 exchange%input_mempath = input_mempath
142 call exchange%allocate_scalars()
143 exchange%filename = filename
144 exchange%typename =
'GWE-GWE'
150 mb => getbasemodelfromlist(basemodellist, m1_index)
151 if (m1_index > 0)
then
154 exchange%model1 => mb
155 exchange%gwemodel1 => mb
162 if (m2_index > 0)
then
163 mb => getbasemodelfromlist(basemodellist, m2_index)
166 exchange%model2 => mb
167 exchange%gwemodel2 => mb
173 if (.not.
associated(exchange%gwemodel1) .and. m1_index > 0)
then
174 write (
errmsg,
'(3a)')
'Problem with GWE-GWE exchange ', &
175 trim(exchange%name), &
176 '. First specified GWE Model does not appear to be of the correct type.'
181 if (.not.
associated(exchange%gwemodel2) .and. m2_index > 0)
then
182 write (
errmsg,
'(3a)')
'Problem with GWE-GWE exchange ', &
183 trim(exchange%name), &
184 '. Second specified GWE Model does not appear to be of the correct type.'
189 call obs_cr(exchange%obs, exchange%inobs)
205 write (
iout,
'(/a,a)')
' Creating exchange: ', this%name
208 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
209 if (this%gwemodel1%idsoln /= this%gwemodel2%idsoln)
then
210 call store_error(
'Two models are connect in a GWE '// &
211 'exchange but they are in different solutions. '// &
212 'GWE models must be in same solution: '// &
213 trim(this%gwemodel1%name)//
' '// &
214 trim(this%gwemodel2%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%gwemodel1%dis)
238 call this%gwe_gwe_df_obs()
239 if (
associated(this%gwemodel1))
then
240 call this%obs%obs_df(
iout, this%name,
'GWE-GWE', this%gwemodel1%dis)
244 call this%validate_exchange()
255 if (this%gwfmodelname1 ==
'')
then
256 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
257 ' requires that GWFMODELNAME1 be entered in the &
261 if (this%gwfmodelname2 ==
'')
then
262 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
263 ' requires that GWFMODELNAME2 be entered in the &
269 if (
associated(this%model1, this%model2))
then
270 if (this%ixt3d > 0)
then
271 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
272 ' is a periodic boundary condition which cannot'// &
273 ' be configured with XT3D'
281 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
282 if (this%gwemodel1%incnd /= 0 .or. this%gwemodel2%incnd /= 0)
then
283 if (this%ianglex == 0)
then
284 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
285 ' requires that ANGLDEGX be specified as an'// &
286 ' auxiliary variable because dispersion was '// &
287 'specified in one or both transport models.'
293 if (this%ixt3d > 0 .and. this%ianglex == 0)
then
294 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
295 ' requires that ANGLDEGX be specified as an'// &
296 ' auxiliary variable because XT3D is enabled'
314 if (this%inmvt > 0)
call this%mvt%mvt_ar()
317 call this%obs%obs_ar()
334 if (this%inmvt > 0)
call this%mvt%mvt_rp()
337 call this%gwe_gwe_rp_obs()
352 call this%obs%obs_ad()
359 subroutine gwe_gwe_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
362 integer(I4B),
intent(in) :: kiter
364 real(DP),
dimension(:),
intent(inout) :: rhs_sln
365 integer(I4B),
optional,
intent(in) :: inwtflag
368 if (this%inmvt > 0)
call this%mvt%mvt_fc(this%gwemodel1%x, this%gwemodel2%x)
375 subroutine gwe_gwe_bd(this, icnvg, isuppress_output, isolnid)
381 integer(I4B),
intent(inout) :: icnvg
382 integer(I4B),
intent(in) :: isuppress_output
383 integer(I4B),
intent(in) :: isolnid
385 character(len=LENBUDTXT),
dimension(1) :: budtxt
386 real(DP),
dimension(2, 1) :: budterm
387 real(DP) :: ratin, ratout
390 budtxt(1) =
' FLOW-JA-FACE'
396 if (
associated(this%gwemodel1))
then
397 budterm(1, 1) = ratin
398 budterm(2, 1) = ratout
399 call this%gwemodel1%model_bdentry(budterm, budtxt, this%name)
403 if (
associated(this%gwemodel2))
then
404 budterm(1, 1) = ratout
405 budterm(2, 1) = ratin
406 call this%gwemodel2%model_bdentry(budterm, budtxt, this%name)
410 if (this%inmvt > 0)
call this%mvt%mvt_bd(this%gwemodel1%x, this%gwemodel2%x)
421 integer(I4B) :: icbcfl, ibudfl
424 if (
associated(this%gwemodel1))
then
425 call this%gwe_gwe_bdsav_model(this%gwemodel1)
429 if (
associated(this%gwemodel2))
then
430 call this%gwe_gwe_bdsav_model(this%gwemodel2)
442 if (this%inobs /= 0)
then
443 call this%gwe_gwe_save_simvals()
459 character(len=LENBOUNDNAME) :: bname
460 character(len=LENPACKAGENAME + 4) :: packname
461 character(len=LENBUDTXT),
dimension(1) :: budtxt
464 character(len=20) :: nodestr
465 integer(I4B) :: ntabrows
466 integer(I4B) :: nodeu
467 integer(I4B) :: i, n1, n2, n1u, n2u
468 integer(I4B) :: ibinun
469 real(DP) :: ratin, ratout, rrate
470 logical(LGP) :: is_for_model1
471 integer(I4B) :: isuppress_output
472 real(DP),
dimension(this%naux) :: auxrow
476 budtxt(1) =
' FLOW-JA-FACE'
477 packname =
'EXG '//this%name
478 packname = adjustr(packname)
479 if (
associated(model, this%gwemodel1))
then
480 output_tab => this%outputtab1
481 nbr_model => this%v_model2
482 is_for_model1 = .true.
484 output_tab => this%outputtab2
485 nbr_model => this%v_model1
486 is_for_model1 = .false.
490 if (this%iprflow /= 0)
then
493 if (model%oc%oc_save(
'BUDGET'))
then
494 call output_tab%set_title(packname)
498 call output_tab%set_kstpkper(
kstp,
kper)
507 if (this%v_model1%ibound%get(n1) /= 0 .and. &
508 this%v_model2%ibound%get(n2) /= 0)
then
509 ntabrows = ntabrows + 1
512 if (ntabrows > 0)
then
513 call output_tab%set_maxbound(ntabrows)
520 if (this%ipakcb /= 0)
then
521 ibinun = model%oc%oc_save_unit(
'BUDGET')
528 if (.not. model%oc%oc_save(
'BUDGET')) ibinun = 0
529 if (isuppress_output /= 0)
then
534 if (ibinun /= 0)
then
535 call model%dis%record_srcdst_list_header(budtxt(1), &
540 this%naux, this%auxname, &
553 if (this%inamedbound > 0)
then
554 bname = this%boundname(i)
565 if (this%v_model1%ibound%get(n1) /= 0 .and. &
566 this%v_model2%ibound%get(n2) /= 0)
then
567 rrate = this%simvals(i)
570 if (this%iprflow /= 0)
then
571 if (model%oc%oc_save(
'BUDGET'))
then
574 if (is_for_model1)
then
575 nodeu = model%dis%get_nodeuser(n1)
576 call model%dis%nodeu_to_string(nodeu, nodestr)
577 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
580 nodeu = model%dis%get_nodeuser(n2)
581 call model%dis%nodeu_to_string(nodeu, nodestr)
582 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
587 if (rrate <
dzero)
then
588 ratout = ratout - rrate
590 ratin = ratin + rrate
595 n1u = this%v_model1%dis_get_nodeuser(n1)
596 n2u = this%v_model2%dis_get_nodeuser(n2)
597 if (ibinun /= 0)
then
598 if (this%naux > 0)
then
599 auxrow(:) = this%auxvar(:, i)
601 if (is_for_model1)
then
602 call model%dis%record_mf6_list_entry( &
603 ibinun, n1u, n2u, rrate, this%naux, auxrow, &
606 call model%dis%record_mf6_list_entry( &
607 ibinun, n2u, n1u, -rrate, this%naux, auxrow, &
626 integer(I4B) :: iexg, n1, n2
627 integer(I4B) :: ibudfl
629 character(len=LINELENGTH) :: node1str, node2str
631 character(len=*),
parameter :: fmtheader = &
632 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
633 &2a16, 5a16, /, 112('-'))"
634 character(len=*),
parameter :: fmtheader2 = &
635 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
636 &2a16, 4a16, /, 96('-'))"
637 character(len=*),
parameter :: fmtdata = &
641 call this%gwe_gwe_bdsav()
644 if (this%iprflow /= 0)
then
645 write (
iout, fmtheader2) trim(adjustl(this%name)), this%id,
'NODEM1', &
646 'NODEM2',
'COND',
'X_M1',
'X_M2',
'FLOW'
647 do iexg = 1, this%nexg
648 n1 = this%nodem1(iexg)
649 n2 = this%nodem2(iexg)
650 flow = this%simvals(iexg)
651 call this%v_model1%dis_noder_to_string(n1, node1str)
652 call this%v_model2%dis_noder_to_string(n2, node2str)
653 write (
iout, fmtdata) trim(adjustl(node1str)), &
654 trim(adjustl(node2str)), &
655 this%cond(iexg), this%v_model1%x%get(n1), &
656 this%v_model2%x%get(n2), flow
663 if (this%inmvt > 0)
call this%mvt%mvt_ot_bdsummary(ibudfl)
666 call this%obs%obs_ot()
683 integer(I4B),
intent(in) :: iout
686 character(len=LENVARNAME),
dimension(4) :: adv_scheme = &
687 &[character(len=LENVARNAME) ::
'UPSTREAM',
'CENTRAL',
'TVD',
'UTVD']
688 character(len=linelength) :: mvt_fname
691 call mem_set_value(this%gwfmodelname1,
'GWFMODELNAME1', this%input_mempath, &
693 call mem_set_value(this%gwfmodelname2,
'GWFMODELNAME2', this%input_mempath, &
695 call mem_set_value(this%iAdvScheme,
'ADV_SCHEME', this%input_mempath, &
696 adv_scheme, found%adv_scheme)
697 call mem_set_value(this%ixt3d,
'CND_XT3D_OFF', this%input_mempath, &
699 call mem_set_value(this%ixt3d,
'CND_XT3D_RHS', this%input_mempath, &
702 write (iout,
'(1x,a)')
'PROCESSING GWE-GWE EXCHANGE OPTIONS'
705 call this%DisConnExchangeType%source_options(iout)
707 if (found%gwfmodelname1)
then
708 write (iout,
'(4x,a,a)') &
709 'GWFMODELNAME1 IS SET TO: ', trim(this%gwfmodelname1)
712 if (found%gwfmodelname2)
then
713 write (iout,
'(4x,a,a)') &
714 'GWFMODELNAME2 IS SET TO: ', trim(this%gwfmodelname2)
717 if (found%adv_scheme)
then
719 this%iAdvScheme = this%iAdvScheme - 1
720 write (iout,
'(4x,a,a)') &
721 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
722 trim(adv_scheme(this%iAdvScheme + 1))
725 if (found%cnd_xt3d_off .and. found%cnd_xt3d_rhs)
then
726 errmsg =
'CND_XT3D_OFF and CND_XT3D_RHS cannot both be set as options.'
729 else if (found%cnd_xt3d_off)
then
731 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
732 else if (found%cnd_xt3d_rhs)
then
734 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
738 if (
filein_fname(mvt_fname,
'MVE6_FILENAME', this%input_mempath, &
741 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
742 write (iout,
'(4x,a)')
'WATER MOVER ENERGY TRANSPORT &
743 &INFORMATION WILL BE READ FROM ', trim(mvt_fname)
747 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
748 this%input_mempath, this%filename))
then
749 this%obs%active = .true.
751 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
754 write (iout,
'(1x,a)')
'END OF GWE-GWE EXCHANGE OPTIONS'
766 integer(I4B),
intent(in) :: iout
771 call mvt_cr(this%mvt, this%name, this%inmvt, iout, this%gwemodel1%fmi, &
772 this%gwemodel1%eqnsclfac, this%gwemodel1%depvartype, &
773 gwfmodelname1=this%gwfmodelname1, &
774 gwfmodelname2=this%gwfmodelname2, &
775 fmi2=this%gwemodel2%fmi)
789 call this%DisConnExchangeType%allocate_scalars()
791 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
793 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
813 if (this%inmvt > 0)
then
814 call this%mvt%mvt_da()
815 deallocate (this%mvt)
817 call this%obs%obs_da()
818 deallocate (this%obs)
823 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
826 if (
associated(this%outputtab1))
then
827 call this%outputtab1%table_da()
828 deallocate (this%outputtab1)
829 nullify (this%outputtab1)
831 if (
associated(this%outputtab2))
then
832 call this%outputtab2%table_da()
833 deallocate (this%outputtab2)
834 nullify (this%outputtab2)
838 deallocate (this%filename)
845 call this%DisConnExchangeType%disconnex_da()
858 character(len=LINELENGTH) :: text
859 integer(I4B) :: ntabcol, i
861 call this%DisConnExchangeType%allocate_arrays()
863 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
864 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
872 if (this%iprflow /= 0)
then
876 if (this%inamedbound > 0)
then
877 ntabcol = ntabcol + 1
882 if (this%v_model1%is_local)
then
883 call table_cr(this%outputtab1, this%name,
' ')
884 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwemodel1%iout, &
887 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
889 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
891 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
892 if (this%inamedbound > 0)
then
894 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
898 if (this%v_model2%is_local)
then
899 call table_cr(this%outputtab2, this%name,
' ')
900 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwemodel2%iout, &
903 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
905 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
907 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
908 if (this%inamedbound > 0)
then
910 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
928 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
945 character(len=LENBOUNDNAME) :: bname
948 10
format(
'Exchange "', a,
'" for observation "', a, &
949 '" is invalid in package "', a,
'"')
950 20
format(
'Exchange id "', i0,
'" for observation "', a, &
951 '" is invalid in package "', a,
'"')
953 do i = 1, this%obs%npakobs
954 obsrv => this%obs%pakobs(i)%obsrv
959 call obsrv%ResetObsIndex()
960 obsrv%BndFound = .false.
962 bname = obsrv%FeatureName
963 if (bname /=
'')
then
969 if (this%boundname(j) == bname)
then
971 obsrv%BndFound = .true.
972 obsrv%CurrentTimeStepEndValue =
dzero
973 call obsrv%AddObsIndex(j)
976 if (.not. jfound)
then
977 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
982 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
984 obsrv%BndFound = .true.
985 obsrv%CurrentTimeStepEndValue =
dzero
986 call obsrv%AddObsIndex(obsrv%intPak1)
990 if (.not. jfound)
then
991 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1020 logical(LGP) :: is_connected
1022 is_connected = .false.
1027 if (
associated(this%gwemodel1, model))
then
1028 is_connected = .true.
1029 else if (
associated(this%gwemodel2, model))
then
1030 is_connected = .true.
1047 logical(LGP) :: use_im
1069 integer(I4B) :: iexg
1074 if (this%obs%npakobs > 0)
then
1075 call this%obs%obs_bd_clear()
1076 do i = 1, this%obs%npakobs
1077 obsrv => this%obs%pakobs(i)%obsrv
1078 do j = 1, obsrv%indxbnds_count
1079 iexg = obsrv%indxbnds(j)
1081 select case (obsrv%ObsTypeId)
1082 case (
'FLOW-JA-FACE')
1083 n1 = this%nodem1(iexg)
1084 n2 = this%nodem2(iexg)
1085 v = this%simvals(iexg)
1087 errmsg =
'Unrecognized observation type: '// &
1088 trim(obsrv%ObsTypeId)
1092 call this%obs%SaveOneSimval(obsrv, v)
1111 integer(I4B),
intent(in) :: inunitobs
1112 integer(I4B),
intent(in) :: iout
1114 integer(I4B) :: n, iexg, istat
1115 integer(I4B) :: icol, istart, istop
1117 character(len=LINELENGTH) :: string
1119 string = obsrv%IDstring
1122 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1123 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1124 if (istat == 0)
then
1125 obsrv%intPak1 = iexg
1129 obsrv%FeatureName = trim(adjustl(string))
1133 obsrv%intPak1 = namedboundflag
1144 class(*),
pointer,
intent(inout) :: obj
1149 if (.not.
associated(obj))
return
1164 type(
listtype),
intent(inout) :: list
1165 integer(I4B),
intent(in) :: idx
1169 class(*),
pointer :: obj
1171 obj => list%GetItem(idx)
integer(i4b), parameter adv_scheme_upstream
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.