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
718 if (this%iAdvScheme == 0)
then
719 call store_error(
'Unrecognized input value for ADV_SCHEME option.')
723 this%iAdvScheme = this%iAdvScheme - 1
724 write (iout,
'(4x,a,a)') &
725 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
726 trim(adv_scheme(this%iAdvScheme + 1))
730 if (found%cnd_xt3d_off .and. found%cnd_xt3d_rhs)
then
731 errmsg =
'CND_XT3D_OFF and CND_XT3D_RHS cannot both be set as options.'
734 else if (found%cnd_xt3d_off)
then
736 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
737 else if (found%cnd_xt3d_rhs)
then
739 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
743 if (
filein_fname(mvt_fname,
'MVE6_FILENAME', this%input_mempath, &
746 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
747 write (iout,
'(4x,a)')
'WATER MOVER ENERGY TRANSPORT &
748 &INFORMATION WILL BE READ FROM ', trim(mvt_fname)
752 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
753 this%input_mempath, this%filename))
then
754 this%obs%active = .true.
756 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
759 write (iout,
'(1x,a)')
'END OF GWE-GWE EXCHANGE OPTIONS'
771 integer(I4B),
intent(in) :: iout
776 call mvt_cr(this%mvt, this%name, this%inmvt, iout, this%gwemodel1%fmi, &
777 this%gwemodel1%eqnsclfac, this%gwemodel1%depvartype, &
778 gwfmodelname1=this%gwfmodelname1, &
779 gwfmodelname2=this%gwfmodelname2, &
780 fmi2=this%gwemodel2%fmi)
794 call this%DisConnExchangeType%allocate_scalars()
796 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
798 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
818 if (this%inmvt > 0)
then
819 call this%mvt%mvt_da()
820 deallocate (this%mvt)
822 call this%obs%obs_da()
823 deallocate (this%obs)
828 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
831 if (
associated(this%outputtab1))
then
832 call this%outputtab1%table_da()
833 deallocate (this%outputtab1)
834 nullify (this%outputtab1)
836 if (
associated(this%outputtab2))
then
837 call this%outputtab2%table_da()
838 deallocate (this%outputtab2)
839 nullify (this%outputtab2)
843 deallocate (this%filename)
850 call this%DisConnExchangeType%disconnex_da()
863 character(len=LINELENGTH) :: text
864 integer(I4B) :: ntabcol, i
866 call this%DisConnExchangeType%allocate_arrays()
868 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
869 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
877 if (this%iprflow /= 0)
then
881 if (this%inamedbound > 0)
then
882 ntabcol = ntabcol + 1
887 if (this%v_model1%is_local)
then
888 call table_cr(this%outputtab1, this%name,
' ')
889 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwemodel1%iout, &
892 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
894 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
896 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
897 if (this%inamedbound > 0)
then
899 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
903 if (this%v_model2%is_local)
then
904 call table_cr(this%outputtab2, this%name,
' ')
905 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwemodel2%iout, &
908 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
910 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
912 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
913 if (this%inamedbound > 0)
then
915 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
933 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
950 character(len=LENBOUNDNAME) :: bname
953 10
format(
'Exchange "', a,
'" for observation "', a, &
954 '" is invalid in package "', a,
'"')
955 20
format(
'Exchange id "', i0,
'" for observation "', a, &
956 '" is invalid in package "', a,
'"')
958 do i = 1, this%obs%npakobs
959 obsrv => this%obs%pakobs(i)%obsrv
964 call obsrv%ResetObsIndex()
965 obsrv%BndFound = .false.
967 bname = obsrv%FeatureName
968 if (bname /=
'')
then
974 if (this%boundname(j) == bname)
then
976 obsrv%BndFound = .true.
977 obsrv%CurrentTimeStepEndValue =
dzero
978 call obsrv%AddObsIndex(j)
981 if (.not. jfound)
then
982 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
987 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
989 obsrv%BndFound = .true.
990 obsrv%CurrentTimeStepEndValue =
dzero
991 call obsrv%AddObsIndex(obsrv%intPak1)
995 if (.not. jfound)
then
996 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1025 logical(LGP) :: is_connected
1027 is_connected = .false.
1032 if (
associated(this%gwemodel1, model))
then
1033 is_connected = .true.
1034 else if (
associated(this%gwemodel2, model))
then
1035 is_connected = .true.
1052 logical(LGP) :: use_im
1074 integer(I4B) :: iexg
1079 if (this%obs%npakobs > 0)
then
1080 call this%obs%obs_bd_clear()
1081 do i = 1, this%obs%npakobs
1082 obsrv => this%obs%pakobs(i)%obsrv
1083 do j = 1, obsrv%indxbnds_count
1084 iexg = obsrv%indxbnds(j)
1086 select case (obsrv%ObsTypeId)
1087 case (
'FLOW-JA-FACE')
1088 n1 = this%nodem1(iexg)
1089 n2 = this%nodem2(iexg)
1090 v = this%simvals(iexg)
1092 errmsg =
'Unrecognized observation type: '// &
1093 trim(obsrv%ObsTypeId)
1097 call this%obs%SaveOneSimval(obsrv, v)
1116 integer(I4B),
intent(in) :: inunitobs
1117 integer(I4B),
intent(in) :: iout
1119 integer(I4B) :: n, iexg, istat
1120 integer(I4B) :: icol, istart, istop
1122 character(len=LINELENGTH) :: string
1124 string = obsrv%IDstring
1127 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1128 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1129 if (istat == 0)
then
1130 obsrv%intPak1 = iexg
1134 obsrv%FeatureName = trim(adjustl(string))
1138 obsrv%intPak1 = namedboundflag
1149 class(*),
pointer,
intent(inout) :: obj
1154 if (.not.
associated(obj))
return
1169 type(
listtype),
intent(inout) :: list
1170 integer(I4B),
intent(in) :: idx
1174 class(*),
pointer :: obj
1176 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.