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()
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 =
'GWT-GWT'
145 exchange%iAdvScheme = 0
150 mb => getbasemodelfromlist(basemodellist, m1_index)
151 if (m1_index > 0)
then
154 exchange%model1 => mb
155 exchange%gwtmodel1 => mb
162 if (m2_index > 0)
then
163 mb => getbasemodelfromlist(basemodellist, m2_index)
166 exchange%model2 => mb
167 exchange%gwtmodel2 => mb
173 if (.not.
associated(exchange%gwtmodel1) .and. m1_index > 0)
then
174 write (
errmsg,
'(3a)')
'Problem with GWT-GWT exchange ', &
175 trim(exchange%name), &
176 '. First specified GWT Model does not appear to be of the correct type.'
181 if (.not.
associated(exchange%gwtmodel2) .and. m2_index > 0)
then
182 write (
errmsg,
'(3a)')
'Problem with GWT-GWT exchange ', &
183 trim(exchange%name), &
184 '. Second specified GWT Model does not appear to be of the correct type.'
189 call obs_cr(exchange%obs, exchange%inobs)
206 write (
iout,
'(/a,a)')
' Creating exchange: ', this%name
209 if (this%v_model1%idsoln%get() /= this%v_model2%idsoln%get())
then
210 call store_error(
'Two models are connected in a GWT '// &
211 'exchange but they are in different solutions. '// &
212 'GWT models must be in same solution: '// &
213 trim(this%v_model1%name)//
' '// &
214 trim(this%v_model2%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 if (this%v_model1%is_local)
then
234 call this%mvt%mvt_df(this%gwtmodel1%dis)
236 call this%mvt%mvt_df(this%gwtmodel2%dis)
241 call this%gwt_gwt_df_obs()
242 if (
associated(this%gwtmodel1))
then
243 call this%obs%obs_df(
iout, this%name,
'GWT-GWT', this%gwtmodel1%dis)
247 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'
316 if (this%inmvt > 0)
call this%mvt%mvt_ar()
319 call this%obs%obs_ar()
336 if (this%inmvt > 0)
call this%mvt%mvt_rp()
339 call this%gwt_gwt_rp_obs()
354 call this%obs%obs_ad()
359 integer(I4B),
intent(in) :: kiter
361 real(DP),
dimension(:),
pointer,
contiguous :: x_m1, x_m2
364 if (this%inmvt > 0)
then
367 if (
associated(this%gwtmodel1)) x_m1 => this%gwtmodel1%x
368 if (
associated(this%gwtmodel2)) x_m2 => this%gwtmodel2%x
369 call this%mvt%xmvt_cf(x_m1, x_m2)
378 subroutine gwt_gwt_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
381 integer(I4B),
intent(in) :: kiter
383 real(DP),
dimension(:),
intent(inout) :: rhs_sln
384 integer(I4B),
optional,
intent(in) :: inwtflag
386 real(DP),
dimension(:),
pointer,
contiguous :: x_m1, x_m2
389 if (this%inmvt > 0)
then
392 if (
associated(this%gwtmodel1)) x_m1 => this%gwtmodel1%x
393 if (
associated(this%gwtmodel2)) x_m2 => this%gwtmodel2%x
394 call this%mvt%mvt_fc(x_m1, x_m2)
402 subroutine gwt_gwt_bd(this, icnvg, isuppress_output, isolnid)
408 integer(I4B),
intent(inout) :: icnvg
409 integer(I4B),
intent(in) :: isuppress_output
410 integer(I4B),
intent(in) :: isolnid
412 character(len=LENBUDTXT),
dimension(1) :: budtxt
413 real(DP),
dimension(2, 1) :: budterm
414 real(DP) :: ratin, ratout
417 budtxt(1) =
' FLOW-JA-FACE'
423 if (
associated(this%gwtmodel1))
then
424 budterm(1, 1) = ratin
425 budterm(2, 1) = ratout
426 call this%gwtmodel1%model_bdentry(budterm, budtxt, this%name)
430 if (
associated(this%gwtmodel2))
then
431 budterm(1, 1) = ratout
432 budterm(2, 1) = ratin
433 call this%gwtmodel2%model_bdentry(budterm, budtxt, this%name)
437 if (this%inmvt > 0)
call this%mvt%mvt_bd()
448 integer(I4B) :: icbcfl, ibudfl
451 if (
associated(this%gwtmodel1))
then
452 call this%gwt_gwt_bdsav_model(this%gwtmodel1)
456 if (
associated(this%gwtmodel2))
then
457 call this%gwt_gwt_bdsav_model(this%gwtmodel2)
469 if (this%inobs /= 0)
then
470 call this%gwt_gwt_save_simvals()
486 character(len=LENBOUNDNAME) :: bname
487 character(len=LENPACKAGENAME + 4) :: packname
488 character(len=LENBUDTXT),
dimension(1) :: budtxt
491 character(len=20) :: nodestr
492 integer(I4B) :: ntabrows
493 integer(I4B) :: nodeu
494 integer(I4B) :: i, n1, n2, n1u, n2u
495 integer(I4B) :: ibinun
496 real(DP) :: ratin, ratout, rrate
497 logical(LGP) :: is_for_model1
498 integer(I4B) :: isuppress_output
499 real(DP),
dimension(this%naux) :: auxrow
503 budtxt(1) =
' FLOW-JA-FACE'
504 packname =
'EXG '//this%name
505 packname = adjustr(packname)
506 if (
associated(model, this%gwtmodel1))
then
507 output_tab => this%outputtab1
508 nbr_model => this%v_model2
509 is_for_model1 = .true.
511 output_tab => this%outputtab2
512 nbr_model => this%v_model1
513 is_for_model1 = .false.
517 if (this%iprflow /= 0)
then
520 if (model%oc%oc_save(
'BUDGET'))
then
521 call output_tab%set_title(packname)
525 call output_tab%set_kstpkper(
kstp,
kper)
534 if (this%v_model1%ibound%get(n1) /= 0 .and. &
535 this%v_model2%ibound%get(n2) /= 0)
then
536 ntabrows = ntabrows + 1
539 if (ntabrows > 0)
then
540 call output_tab%set_maxbound(ntabrows)
547 if (this%ipakcb /= 0)
then
548 ibinun = model%oc%oc_save_unit(
'BUDGET')
555 if (.not. model%oc%oc_save(
'BUDGET')) ibinun = 0
556 if (isuppress_output /= 0)
then
561 if (ibinun /= 0)
then
562 call model%dis%record_srcdst_list_header(budtxt(1), &
567 this%naux, this%auxname, &
580 if (this%inamedbound > 0)
then
581 bname = this%boundname(i)
592 if (this%v_model1%ibound%get(n1) /= 0 .and. &
593 this%v_model2%ibound%get(n2) /= 0)
then
594 rrate = this%simvals(i)
597 if (this%iprflow /= 0)
then
598 if (model%oc%oc_save(
'BUDGET'))
then
601 if (is_for_model1)
then
602 nodeu = model%dis%get_nodeuser(n1)
603 call model%dis%nodeu_to_string(nodeu, nodestr)
604 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
607 nodeu = model%dis%get_nodeuser(n2)
608 call model%dis%nodeu_to_string(nodeu, nodestr)
609 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
614 if (rrate <
dzero)
then
615 ratout = ratout - rrate
617 ratin = ratin + rrate
622 n1u = this%v_model1%dis_get_nodeuser(n1)
623 n2u = this%v_model2%dis_get_nodeuser(n2)
624 if (ibinun /= 0)
then
625 if (this%naux > 0)
then
626 auxrow(:) = this%auxvar(:, i)
628 if (is_for_model1)
then
629 call model%dis%record_mf6_list_entry( &
630 ibinun, n1u, n2u, rrate, this%naux, auxrow, &
633 call model%dis%record_mf6_list_entry( &
634 ibinun, n2u, n1u, -rrate, this%naux, auxrow, &
653 integer(I4B) :: iexg, n1, n2
654 integer(I4B) :: ibudfl
656 character(len=LINELENGTH) :: node1str, node2str
658 character(len=*),
parameter :: fmtheader = &
659 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
660 &2a16, 5a16, /, 112('-'))"
661 character(len=*),
parameter :: fmtheader2 = &
662 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
663 &2a16, 4a16, /, 96('-'))"
664 character(len=*),
parameter :: fmtdata = &
668 call this%gwt_gwt_bdsav()
671 if (this%iprflow /= 0)
then
672 write (
iout, fmtheader2) trim(adjustl(this%name)), this%id,
'NODEM1', &
673 'NODEM2',
'COND',
'X_M1',
'X_M2',
'FLOW'
674 do iexg = 1, this%nexg
675 n1 = this%nodem1(iexg)
676 n2 = this%nodem2(iexg)
677 flow = this%simvals(iexg)
678 call this%v_model1%dis_noder_to_string(n1, node1str)
679 call this%v_model2%dis_noder_to_string(n2, node2str)
680 write (
iout, fmtdata) trim(adjustl(node1str)), &
681 trim(adjustl(node2str)), &
682 this%cond(iexg), this%v_model1%x%get(n1), &
683 this%v_model2%x%get(n2), flow
690 if (this%inmvt > 0)
call this%mvt%mvt_ot_bdsummary(ibudfl)
693 call this%obs%obs_ot()
710 integer(I4B),
intent(in) :: iout
713 character(len=LENVARNAME),
dimension(4) :: adv_scheme = &
714 &[character(len=LENVARNAME) ::
'UPSTREAM',
'CENTRAL',
'TVD',
'UTVD']
715 character(len=linelength) :: mvt_fname
718 call mem_set_value(this%gwfmodelname1,
'GWFMODELNAME1', this%input_mempath, &
720 call mem_set_value(this%gwfmodelname2,
'GWFMODELNAME2', this%input_mempath, &
722 call mem_set_value(this%iAdvScheme,
'ADV_SCHEME', this%input_mempath, &
723 adv_scheme, found%adv_scheme)
724 call mem_set_value(this%ixt3d,
'DSP_XT3D_OFF', this%input_mempath, &
726 call mem_set_value(this%ixt3d,
'DSP_XT3D_RHS', this%input_mempath, &
729 write (iout,
'(1x,a)')
'PROCESSING GWT-GWT EXCHANGE OPTIONS'
732 call this%DisConnExchangeType%source_options(iout)
734 if (found%gwfmodelname1)
then
735 write (iout,
'(4x,a,a)') &
736 'GWFMODELNAME1 IS SET TO: ', trim(this%gwfmodelname1)
739 if (found%gwfmodelname2)
then
740 write (iout,
'(4x,a,a)') &
741 'GWFMODELNAME2 IS SET TO: ', trim(this%gwfmodelname2)
744 if (found%adv_scheme)
then
745 if (this%iAdvScheme == 0)
then
746 call store_error(
'Unrecognized input value for ADV_SCHEME option.')
750 this%iAdvScheme = this%iAdvScheme - 1
751 write (iout,
'(4x,a,a)') &
752 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
753 trim(adv_scheme(this%iAdvScheme + 1))
757 if (found%dsp_xt3d_off .and. found%dsp_xt3d_rhs)
then
758 errmsg =
'DSP_XT3D_OFF and DSP_XT3D_RHS cannot both be set as options.'
761 else if (found%dsp_xt3d_off)
then
763 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
764 else if (found%dsp_xt3d_rhs)
then
766 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
770 if (
filein_fname(mvt_fname,
'MVT6_FILENAME', this%input_mempath, &
773 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
774 write (iout,
'(4x,a)') &
775 'WATER MOVER TRANSPORT INFORMATION WILL BE READ FROM ', trim(mvt_fname)
779 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
780 this%input_mempath, this%filename))
then
781 this%obs%active = .true.
783 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
786 write (iout,
'(1x,a)')
'END OF GWT-GWT EXCHANGE OPTIONS'
798 integer(I4B),
intent(in) :: iout
803 tspmodel1 => this%gwtmodel1
804 tspmodel2 => this%gwtmodel2
805 call xmvt_cr(this%mvt, this%name, tspmodel1, tspmodel2, &
806 this%gwfmodelname1, this%gwfmodelname2, this%inmvt, iout)
821 call this%DisConnExchangeType%allocate_scalars()
823 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
825 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
845 if (this%inmvt > 0)
then
846 call this%mvt%mvt_da()
847 deallocate (this%mvt)
849 call this%obs%obs_da()
850 deallocate (this%obs)
855 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
858 if (
associated(this%outputtab1))
then
859 call this%outputtab1%table_da()
860 deallocate (this%outputtab1)
861 nullify (this%outputtab1)
863 if (
associated(this%outputtab2))
then
864 call this%outputtab2%table_da()
865 deallocate (this%outputtab2)
866 nullify (this%outputtab2)
870 deallocate (this%filename)
877 call this%DisConnExchangeType%disconnex_da()
890 character(len=LINELENGTH) :: text
891 integer(I4B) :: ntabcol, i
893 call this%DisConnExchangeType%allocate_arrays()
895 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
896 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
904 if (this%iprflow /= 0)
then
908 if (this%inamedbound > 0)
then
909 ntabcol = ntabcol + 1
914 if (this%v_model1%is_local)
then
915 call table_cr(this%outputtab1, this%name,
' ')
916 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwtmodel1%iout, &
919 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
921 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
923 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
924 if (this%inamedbound > 0)
then
926 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
930 if (this%v_model2%is_local)
then
931 call table_cr(this%outputtab2, this%name,
' ')
932 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwtmodel2%iout, &
935 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
937 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
939 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
940 if (this%inamedbound > 0)
then
942 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
960 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
977 character(len=LENBOUNDNAME) :: bname
980 10
format(
'Exchange "', a,
'" for observation "', a, &
981 '" is invalid in package "', a,
'"')
982 20
format(
'Exchange id "', i0,
'" for observation "', a, &
983 '" is invalid in package "', a,
'"')
985 do i = 1, this%obs%npakobs
986 obsrv => this%obs%pakobs(i)%obsrv
991 call obsrv%ResetObsIndex()
992 obsrv%BndFound = .false.
994 bname = obsrv%FeatureName
995 if (bname /=
'')
then
1001 if (this%boundname(j) == bname)
then
1003 obsrv%BndFound = .true.
1004 obsrv%CurrentTimeStepEndValue =
dzero
1005 call obsrv%AddObsIndex(j)
1008 if (.not. jfound)
then
1009 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
1014 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
1016 obsrv%BndFound = .true.
1017 obsrv%CurrentTimeStepEndValue =
dzero
1018 call obsrv%AddObsIndex(obsrv%intPak1)
1022 if (.not. jfound)
then
1023 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1052 logical(LGP) :: is_connected
1054 is_connected = .false.
1059 if (
associated(this%gwtmodel1, model))
then
1060 is_connected = .true.
1061 else if (
associated(this%gwtmodel2, model))
then
1062 is_connected = .true.
1079 logical(LGP) :: use_im
1101 integer(I4B) :: iexg
1106 if (this%obs%npakobs > 0)
then
1107 call this%obs%obs_bd_clear()
1108 do i = 1, this%obs%npakobs
1109 obsrv => this%obs%pakobs(i)%obsrv
1110 do j = 1, obsrv%indxbnds_count
1111 iexg = obsrv%indxbnds(j)
1113 select case (obsrv%ObsTypeId)
1114 case (
'FLOW-JA-FACE')
1115 n1 = this%nodem1(iexg)
1116 n2 = this%nodem2(iexg)
1117 v = this%simvals(iexg)
1119 errmsg =
'Unrecognized observation type: '// &
1120 trim(obsrv%ObsTypeId)
1124 call this%obs%SaveOneSimval(obsrv, v)
1143 integer(I4B),
intent(in) :: inunitobs
1144 integer(I4B),
intent(in) :: iout
1146 integer(I4B) :: n, iexg, istat
1147 integer(I4B) :: icol, istart, istop
1149 character(len=LINELENGTH) :: string
1151 string = obsrv%IDstring
1154 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1155 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1156 if (istat == 0)
then
1157 obsrv%intPak1 = iexg
1161 obsrv%FeatureName = trim(adjustl(string))
1165 obsrv%intPak1 = namedboundflag
1176 class(*),
pointer,
intent(inout) :: obj
1181 if (.not.
associated(obj))
return
1196 type(
listtype),
intent(inout) :: list
1197 integer(I4B),
intent(in) :: idx
1201 class(*),
pointer :: obj
1203 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
subroutine gwt_gwt_cf(this, kiter)
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
This module contains the base transport model type.
subroutine, public xmvt_cr(mvt, name_exg, tsp_model1, tsp_model2, gwfmodelname1, gwfmodelname2, inunit, iout)
subroutine, public mvt_cr(mvt, name_model, inunit, iout, fmi1, eqnsclfac, depvartype, gwfmodelname1, gwfmodelname2, fmi2)
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.