52 character(len=LENMODELNAME) :: gwfmodelname1 =
''
53 character(len=LENMODELNAME) :: gwfmodelname2 =
''
54 real(dp),
dimension(:),
pointer,
contiguous :: gwfsimvals => null()
61 integer(I4B),
pointer :: inewton => null()
62 integer(I4B),
pointer :: iadvscheme
66 integer(I4B),
pointer :: inmvt => null()
70 integer(I4B),
pointer :: inobs => null()
74 real(dp),
dimension(:),
pointer,
contiguous :: cond => null()
75 real(dp),
dimension(:),
pointer,
contiguous :: simvals => null()
120 character(len=*),
intent(in) :: filename
121 integer(I4B),
intent(in) :: id
122 character(len=*) :: name
123 integer(I4B),
intent(in) :: m1_id
124 integer(I4B),
intent(in) :: m2_id
125 character(len=*),
intent(in) :: input_mempath
130 integer(I4B) :: m1_index, m2_index
134 baseexchange => exchange
141 exchange%input_mempath = input_mempath
144 call exchange%allocate_scalars()
145 exchange%filename = filename
146 exchange%typename =
'GWE-GWE'
152 mb => getbasemodelfromlist(basemodellist, m1_index)
153 if (m1_index > 0)
then
156 exchange%model1 => mb
157 exchange%gwemodel1 => mb
164 if (m2_index > 0)
then
165 mb => getbasemodelfromlist(basemodellist, m2_index)
168 exchange%model2 => mb
169 exchange%gwemodel2 => mb
175 if (.not.
associated(exchange%gwemodel1) .and. m1_index > 0)
then
176 write (
errmsg,
'(3a)')
'Problem with GWE-GWE exchange ', &
177 trim(exchange%name), &
178 '. First specified GWE Model does not appear to be of the correct type.'
183 if (.not.
associated(exchange%gwemodel2) .and. m2_index > 0)
then
184 write (
errmsg,
'(3a)')
'Problem with GWE-GWE exchange ', &
185 trim(exchange%name), &
186 '. Second specified GWE Model does not appear to be of the correct type.'
191 call obs_cr(exchange%obs, exchange%inobs)
207 write (
iout,
'(/a,a)')
' Creating exchange: ', this%name
210 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
211 if (this%gwemodel1%idsoln /= this%gwemodel2%idsoln)
then
212 call store_error(
'Two models are connect in a GWE '// &
213 'exchange but they are in different solutions. '// &
214 'GWE models must be in same solution: '// &
215 trim(this%gwemodel1%name)//
' '// &
216 trim(this%gwemodel2%name))
222 call this%source_options(
iout)
225 call this%source_dimensions(
iout)
228 call this%allocate_arrays()
231 call this%source_data(
iout)
234 if (this%inmvt > 0)
then
235 call this%read_mvt(
iout)
236 if (this%v_model1%is_local)
then
237 call this%mvt%mvt_df(this%gwemodel1%dis)
239 call this%mvt%mvt_df(this%gwemodel2%dis)
244 call this%gwe_gwe_df_obs()
245 if (
associated(this%gwemodel1))
then
246 call this%obs%obs_df(
iout, this%name,
'GWE-GWE', this%gwemodel1%dis)
250 call this%validate_exchange()
261 if (this%gwfmodelname1 ==
'')
then
262 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
263 ' requires that GWFMODELNAME1 be entered in the &
267 if (this%gwfmodelname2 ==
'')
then
268 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
269 ' requires that GWFMODELNAME2 be entered in the &
275 if (
associated(this%model1, this%model2))
then
276 if (this%ixt3d > 0)
then
277 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
278 ' is a periodic boundary condition which cannot'// &
279 ' be configured with XT3D'
287 if (
associated(this%gwemodel1) .and.
associated(this%gwemodel2))
then
288 if (this%gwemodel1%incnd /= 0 .or. this%gwemodel2%incnd /= 0)
then
289 if (this%ianglex == 0)
then
290 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
291 ' requires that ANGLDEGX be specified as an'// &
292 ' auxiliary variable because dispersion was '// &
293 'specified in one or both transport models.'
299 if (this%ixt3d > 0 .and. this%ianglex == 0)
then
300 write (
errmsg,
'(3a)')
'GWE-GWE exchange ', trim(this%name), &
301 ' requires that ANGLDEGX be specified as an'// &
302 ' auxiliary variable because XT3D is enabled'
320 if (this%inmvt > 0)
call this%mvt%mvt_ar()
323 call this%obs%obs_ar()
340 if (this%inmvt > 0)
call this%mvt%mvt_rp()
343 call this%gwe_gwe_rp_obs()
358 call this%obs%obs_ad()
363 integer(I4B),
intent(in) :: kiter
365 real(DP),
dimension(:),
pointer,
contiguous :: x_m1, x_m2
368 if (this%inmvt > 0)
then
371 if (
associated(this%gwemodel1)) x_m1 => this%gwemodel1%x
372 if (
associated(this%gwemodel2)) x_m2 => this%gwemodel2%x
373 call this%mvt%xmvt_cf(x_m1, x_m2)
382 subroutine gwe_gwe_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
385 integer(I4B),
intent(in) :: kiter
387 real(DP),
dimension(:),
intent(inout) :: rhs_sln
388 integer(I4B),
optional,
intent(in) :: inwtflag
390 real(DP),
dimension(:),
pointer,
contiguous :: x_m1, x_m2
393 if (this%inmvt > 0)
then
396 if (
associated(this%gwemodel1)) x_m1 => this%gwemodel1%x
397 if (
associated(this%gwemodel2)) x_m2 => this%gwemodel2%x
398 call this%mvt%mvt_fc(x_m1, x_m2)
406 subroutine gwe_gwe_bd(this, icnvg, isuppress_output, isolnid)
412 integer(I4B),
intent(inout) :: icnvg
413 integer(I4B),
intent(in) :: isuppress_output
414 integer(I4B),
intent(in) :: isolnid
416 character(len=LENBUDTXT),
dimension(1) :: budtxt
417 real(DP),
dimension(2, 1) :: budterm
418 real(DP) :: ratin, ratout
421 budtxt(1) =
' FLOW-JA-FACE'
427 if (
associated(this%gwemodel1))
then
428 budterm(1, 1) = ratin
429 budterm(2, 1) = ratout
430 call this%gwemodel1%model_bdentry(budterm, budtxt, this%name)
434 if (
associated(this%gwemodel2))
then
435 budterm(1, 1) = ratout
436 budterm(2, 1) = ratin
437 call this%gwemodel2%model_bdentry(budterm, budtxt, this%name)
441 if (this%inmvt > 0)
call this%mvt%mvt_bd()
452 integer(I4B) :: icbcfl, ibudfl
455 if (
associated(this%gwemodel1))
then
456 call this%gwe_gwe_bdsav_model(this%gwemodel1)
460 if (
associated(this%gwemodel2))
then
461 call this%gwe_gwe_bdsav_model(this%gwemodel2)
473 if (this%inobs /= 0)
then
474 call this%gwe_gwe_save_simvals()
490 character(len=LENBOUNDNAME) :: bname
491 character(len=LENPACKAGENAME + 4) :: packname
492 character(len=LENBUDTXT),
dimension(1) :: budtxt
495 character(len=20) :: nodestr
496 integer(I4B) :: ntabrows
497 integer(I4B) :: nodeu
498 integer(I4B) :: i, n1, n2, n1u, n2u
499 integer(I4B) :: ibinun
500 real(DP) :: ratin, ratout, rrate
501 logical(LGP) :: is_for_model1
502 integer(I4B) :: isuppress_output
503 real(DP),
dimension(this%naux) :: auxrow
507 budtxt(1) =
' FLOW-JA-FACE'
508 packname =
'EXG '//this%name
509 packname = adjustr(packname)
510 if (
associated(model, this%gwemodel1))
then
511 output_tab => this%outputtab1
512 nbr_model => this%v_model2
513 is_for_model1 = .true.
515 output_tab => this%outputtab2
516 nbr_model => this%v_model1
517 is_for_model1 = .false.
521 if (this%iprflow /= 0)
then
524 if (model%oc%oc_save(
'BUDGET'))
then
525 call output_tab%set_title(packname)
529 call output_tab%set_kstpkper(
kstp,
kper)
538 if (this%v_model1%ibound%get(n1) /= 0 .and. &
539 this%v_model2%ibound%get(n2) /= 0)
then
540 ntabrows = ntabrows + 1
543 if (ntabrows > 0)
then
544 call output_tab%set_maxbound(ntabrows)
551 if (this%ipakcb /= 0)
then
552 ibinun = model%oc%oc_save_unit(
'BUDGET')
559 if (.not. model%oc%oc_save(
'BUDGET')) ibinun = 0
560 if (isuppress_output /= 0)
then
565 if (ibinun /= 0)
then
566 call model%dis%record_srcdst_list_header(budtxt(1), &
571 this%naux, this%auxname, &
584 if (this%inamedbound > 0)
then
585 bname = this%boundname(i)
596 if (this%v_model1%ibound%get(n1) /= 0 .and. &
597 this%v_model2%ibound%get(n2) /= 0)
then
598 rrate = this%simvals(i)
601 if (this%iprflow /= 0)
then
602 if (model%oc%oc_save(
'BUDGET'))
then
605 if (is_for_model1)
then
606 nodeu = model%dis%get_nodeuser(n1)
607 call model%dis%nodeu_to_string(nodeu, nodestr)
608 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
611 nodeu = model%dis%get_nodeuser(n2)
612 call model%dis%nodeu_to_string(nodeu, nodestr)
613 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
618 if (rrate <
dzero)
then
619 ratout = ratout - rrate
621 ratin = ratin + rrate
626 n1u = this%v_model1%dis_get_nodeuser(n1)
627 n2u = this%v_model2%dis_get_nodeuser(n2)
628 if (ibinun /= 0)
then
629 if (this%naux > 0)
then
630 auxrow(:) = this%auxvar(:, i)
632 if (is_for_model1)
then
633 call model%dis%record_mf6_list_entry( &
634 ibinun, n1u, n2u, rrate, this%naux, auxrow, &
637 call model%dis%record_mf6_list_entry( &
638 ibinun, n2u, n1u, -rrate, this%naux, auxrow, &
657 integer(I4B) :: iexg, n1, n2
658 integer(I4B) :: ibudfl
660 character(len=LINELENGTH) :: node1str, node2str
662 character(len=*),
parameter :: fmtheader = &
663 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
664 &2a16, 5a16, /, 112('-'))"
665 character(len=*),
parameter :: fmtheader2 = &
666 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
667 &2a16, 4a16, /, 96('-'))"
668 character(len=*),
parameter :: fmtdata = &
672 call this%gwe_gwe_bdsav()
675 if (this%iprflow /= 0)
then
676 write (
iout, fmtheader2) trim(adjustl(this%name)), this%id,
'NODEM1', &
677 'NODEM2',
'COND',
'X_M1',
'X_M2',
'FLOW'
678 do iexg = 1, this%nexg
679 n1 = this%nodem1(iexg)
680 n2 = this%nodem2(iexg)
681 flow = this%simvals(iexg)
682 call this%v_model1%dis_noder_to_string(n1, node1str)
683 call this%v_model2%dis_noder_to_string(n2, node2str)
684 write (
iout, fmtdata) trim(adjustl(node1str)), &
685 trim(adjustl(node2str)), &
686 this%cond(iexg), this%v_model1%x%get(n1), &
687 this%v_model2%x%get(n2), flow
694 if (this%inmvt > 0)
call this%mvt%mvt_ot_bdsummary(ibudfl)
697 call this%obs%obs_ot()
714 integer(I4B),
intent(in) :: iout
717 character(len=LENVARNAME),
dimension(4) :: adv_scheme = &
718 &[character(len=LENVARNAME) ::
'UPSTREAM',
'CENTRAL',
'TVD',
'UTVD']
719 character(len=linelength) :: mvt_fname
722 call mem_set_value(this%gwfmodelname1,
'GWFMODELNAME1', this%input_mempath, &
724 call mem_set_value(this%gwfmodelname2,
'GWFMODELNAME2', this%input_mempath, &
726 call mem_set_value(this%iAdvScheme,
'ADV_SCHEME', this%input_mempath, &
727 adv_scheme, found%adv_scheme)
728 call mem_set_value(this%ixt3d,
'CND_XT3D_OFF', this%input_mempath, &
730 call mem_set_value(this%ixt3d,
'CND_XT3D_RHS', this%input_mempath, &
733 write (iout,
'(1x,a)')
'PROCESSING GWE-GWE EXCHANGE OPTIONS'
736 call this%DisConnExchangeType%source_options(iout)
738 if (found%gwfmodelname1)
then
739 write (iout,
'(4x,a,a)') &
740 'GWFMODELNAME1 IS SET TO: ', trim(this%gwfmodelname1)
743 if (found%gwfmodelname2)
then
744 write (iout,
'(4x,a,a)') &
745 'GWFMODELNAME2 IS SET TO: ', trim(this%gwfmodelname2)
748 if (found%adv_scheme)
then
749 if (this%iAdvScheme == 0)
then
750 call store_error(
'Unrecognized input value for ADV_SCHEME option.')
754 this%iAdvScheme = this%iAdvScheme - 1
755 write (iout,
'(4x,a,a)') &
756 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
757 trim(adv_scheme(this%iAdvScheme + 1))
761 if (found%cnd_xt3d_off .and. found%cnd_xt3d_rhs)
then
762 errmsg =
'CND_XT3D_OFF and CND_XT3D_RHS cannot both be set as options.'
765 else if (found%cnd_xt3d_off)
then
767 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
768 else if (found%cnd_xt3d_rhs)
then
770 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
774 if (
filein_fname(mvt_fname,
'MVE6_FILENAME', this%input_mempath, &
777 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
778 write (iout,
'(4x,a)')
'WATER MOVER ENERGY TRANSPORT &
779 &INFORMATION WILL BE READ FROM ', trim(mvt_fname)
783 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
784 this%input_mempath, this%filename))
then
785 this%obs%active = .true.
787 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
790 write (iout,
'(1x,a)')
'END OF GWE-GWE EXCHANGE OPTIONS'
801 integer(I4B),
intent(in) :: iout
808 tspmodel1 => this%gwemodel1
809 tspmodel2 => this%gwemodel2
810 call xmvt_cr(this%mvt, this%name, tspmodel1, tspmodel2, &
811 this%gwfmodelname1, this%gwfmodelname2, this%inmvt, iout)
825 call this%DisConnExchangeType%allocate_scalars()
827 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
829 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
849 if (this%inmvt > 0)
then
850 call this%mvt%mvt_da()
851 deallocate (this%mvt)
853 call this%obs%obs_da()
854 deallocate (this%obs)
859 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
862 if (
associated(this%outputtab1))
then
863 call this%outputtab1%table_da()
864 deallocate (this%outputtab1)
865 nullify (this%outputtab1)
867 if (
associated(this%outputtab2))
then
868 call this%outputtab2%table_da()
869 deallocate (this%outputtab2)
870 nullify (this%outputtab2)
874 deallocate (this%filename)
881 call this%DisConnExchangeType%disconnex_da()
894 character(len=LINELENGTH) :: text
895 integer(I4B) :: ntabcol, i
897 call this%DisConnExchangeType%allocate_arrays()
899 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
900 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
908 if (this%iprflow /= 0)
then
912 if (this%inamedbound > 0)
then
913 ntabcol = ntabcol + 1
918 if (this%v_model1%is_local)
then
919 call table_cr(this%outputtab1, this%name,
' ')
920 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwemodel1%iout, &
923 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
925 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
927 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
928 if (this%inamedbound > 0)
then
930 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
934 if (this%v_model2%is_local)
then
935 call table_cr(this%outputtab2, this%name,
' ')
936 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwemodel2%iout, &
939 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
941 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
943 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
944 if (this%inamedbound > 0)
then
946 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
964 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
981 character(len=LENBOUNDNAME) :: bname
984 10
format(
'Exchange "', a,
'" for observation "', a, &
985 '" is invalid in package "', a,
'"')
986 20
format(
'Exchange id "', i0,
'" for observation "', a, &
987 '" is invalid in package "', a,
'"')
989 do i = 1, this%obs%npakobs
990 obsrv => this%obs%pakobs(i)%obsrv
995 call obsrv%ResetObsIndex()
996 obsrv%BndFound = .false.
998 bname = obsrv%FeatureName
999 if (bname /=
'')
then
1005 if (this%boundname(j) == bname)
then
1007 obsrv%BndFound = .true.
1008 obsrv%CurrentTimeStepEndValue =
dzero
1009 call obsrv%AddObsIndex(j)
1012 if (.not. jfound)
then
1013 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
1018 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
1020 obsrv%BndFound = .true.
1021 obsrv%CurrentTimeStepEndValue =
dzero
1022 call obsrv%AddObsIndex(obsrv%intPak1)
1026 if (.not. jfound)
then
1027 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1056 logical(LGP) :: is_connected
1058 is_connected = .false.
1063 if (
associated(this%gwemodel1, model))
then
1064 is_connected = .true.
1065 else if (
associated(this%gwemodel2, model))
then
1066 is_connected = .true.
1083 logical(LGP) :: use_im
1105 integer(I4B) :: iexg
1110 if (this%obs%npakobs > 0)
then
1111 call this%obs%obs_bd_clear()
1112 do i = 1, this%obs%npakobs
1113 obsrv => this%obs%pakobs(i)%obsrv
1114 do j = 1, obsrv%indxbnds_count
1115 iexg = obsrv%indxbnds(j)
1117 select case (obsrv%ObsTypeId)
1118 case (
'FLOW-JA-FACE')
1119 n1 = this%nodem1(iexg)
1120 n2 = this%nodem2(iexg)
1121 v = this%simvals(iexg)
1123 errmsg =
'Unrecognized observation type: '// &
1124 trim(obsrv%ObsTypeId)
1128 call this%obs%SaveOneSimval(obsrv, v)
1147 integer(I4B),
intent(in) :: inunitobs
1148 integer(I4B),
intent(in) :: iout
1150 integer(I4B) :: n, iexg, istat
1151 integer(I4B) :: icol, istart, istop
1153 character(len=LINELENGTH) :: string
1155 string = obsrv%IDstring
1158 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1159 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1160 if (istat == 0)
then
1161 obsrv%intPak1 = iexg
1165 obsrv%FeatureName = trim(adjustl(string))
1169 obsrv%intPak1 = namedboundflag
1180 class(*),
pointer,
intent(inout) :: obj
1185 if (.not.
associated(obj))
return
1200 type(
listtype),
intent(inout) :: list
1201 integer(I4B),
intent(in) :: idx
1205 class(*),
pointer :: obj
1207 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_cf(this, kiter)
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
This module contains the base transport model type.
subroutine, public xmvt_cr(mvt, name_exg, tsp_model1, tsp_model2, gwfmodelname1, gwfmodelname2, inunit, iout)
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.