49 character(len=LENMODELNAME) :: gwfmodelname1 =
''
50 character(len=LENMODELNAME) :: gwfmodelname2 =
''
51 real(dp),
dimension(:),
pointer,
contiguous :: gwfsimvals => null()
58 integer(I4B),
pointer :: inewton => null()
59 integer(I4B),
pointer :: iadvscheme
63 integer(I4B),
pointer :: inmvt => null()
67 integer(I4B),
pointer :: inobs => null()
71 real(dp),
dimension(:),
pointer,
contiguous :: cond => null()
72 real(dp),
dimension(:),
pointer,
contiguous :: simvals => null()
116 character(len=*),
intent(in) :: filename
117 integer(I4B),
intent(in) :: id
118 character(len=*) :: name
119 integer(I4B),
intent(in) :: m1_id
120 integer(I4B),
intent(in) :: m2_id
121 character(len=*),
intent(in) :: input_mempath
126 integer(I4B) :: m1_index, m2_index
130 baseexchange => exchange
137 exchange%input_mempath = input_mempath
140 call exchange%allocate_scalars()
141 exchange%filename = filename
142 exchange%typename =
'GWT-GWT'
143 exchange%iAdvScheme = 0
148 mb => getbasemodelfromlist(basemodellist, m1_index)
149 if (m1_index > 0)
then
152 exchange%model1 => mb
153 exchange%gwtmodel1 => mb
160 if (m2_index > 0)
then
161 mb => getbasemodelfromlist(basemodellist, m2_index)
164 exchange%model2 => mb
165 exchange%gwtmodel2 => mb
171 if (.not.
associated(exchange%gwtmodel1) .and. m1_index > 0)
then
172 write (
errmsg,
'(3a)')
'Problem with GWT-GWT exchange ', &
173 trim(exchange%name), &
174 '. First specified GWT Model does not appear to be of the correct type.'
179 if (.not.
associated(exchange%gwtmodel2) .and. m2_index > 0)
then
180 write (
errmsg,
'(3a)')
'Problem with GWT-GWT exchange ', &
181 trim(exchange%name), &
182 '. Second specified GWT Model does not appear to be of the correct type.'
187 call obs_cr(exchange%obs, exchange%inobs)
204 write (
iout,
'(/a,a)')
' Creating exchange: ', this%name
207 if (this%v_model1%idsoln%get() /= this%v_model2%idsoln%get())
then
208 call store_error(
'Two models are connected in a GWT '// &
209 'exchange but they are in different solutions. '// &
210 'GWT models must be in same solution: '// &
211 trim(this%v_model1%name)//
' '// &
212 trim(this%v_model2%name))
217 call this%source_options(
iout)
220 call this%source_dimensions(
iout)
223 call this%allocate_arrays()
226 call this%source_data(
iout)
229 if (this%inmvt > 0)
then
230 call this%read_mvt(
iout)
231 call this%mvt%mvt_df(this%gwtmodel1%dis)
235 call this%gwt_gwt_df_obs()
236 if (
associated(this%gwtmodel1))
then
237 call this%obs%obs_df(
iout, this%name,
'GWT-GWT', this%gwtmodel1%dis)
241 call this%validate_exchange()
251 if (this%gwfmodelname1 ==
'')
then
252 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
253 ' requires that GWFMODELNAME1 be entered in the &
257 if (this%gwfmodelname2 ==
'')
then
258 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
259 ' requires that GWFMODELNAME2 be entered in the &
265 if (this%v_model1 == this%v_model2)
then
266 if (this%ixt3d > 0)
then
267 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
268 ' is a periodic boundary condition which cannot'// &
269 ' be configured with XT3D'
277 if (
associated(this%gwtmodel1) .and.
associated(this%gwtmodel2))
then
278 if (this%gwtmodel1%indsp /= 0 .or. this%gwtmodel2%indsp /= 0)
then
279 if (this%ianglex == 0)
then
280 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
281 ' requires that ANGLDEGX be specified as an'// &
282 ' auxiliary variable because dispersion was '// &
283 'specified in one or both transport models.'
289 if (this%ixt3d > 0 .and. this%ianglex == 0)
then
290 write (
errmsg,
'(3a)')
'GWT-GWT exchange ', trim(this%name), &
291 ' requires that ANGLDEGX be specified as an'// &
292 ' auxiliary variable because XT3D is enabled'
310 if (this%inmvt > 0)
call this%mvt%mvt_ar()
313 call this%obs%obs_ar()
330 if (this%inmvt > 0)
call this%mvt%mvt_rp()
333 call this%gwt_gwt_rp_obs()
348 call this%obs%obs_ad()
355 subroutine gwt_gwt_fc(this, kiter, matrix_sln, rhs_sln, inwtflag)
358 integer(I4B),
intent(in) :: kiter
360 real(DP),
dimension(:),
intent(inout) :: rhs_sln
361 integer(I4B),
optional,
intent(in) :: inwtflag
364 if (this%inmvt > 0)
call this%mvt%mvt_fc(this%gwtmodel1%x, this%gwtmodel2%x)
371 subroutine gwt_gwt_bd(this, icnvg, isuppress_output, isolnid)
377 integer(I4B),
intent(inout) :: icnvg
378 integer(I4B),
intent(in) :: isuppress_output
379 integer(I4B),
intent(in) :: isolnid
381 character(len=LENBUDTXT),
dimension(1) :: budtxt
382 real(DP),
dimension(2, 1) :: budterm
383 real(DP) :: ratin, ratout
386 budtxt(1) =
' FLOW-JA-FACE'
392 if (
associated(this%gwtmodel1))
then
393 budterm(1, 1) = ratin
394 budterm(2, 1) = ratout
395 call this%gwtmodel1%model_bdentry(budterm, budtxt, this%name)
399 if (
associated(this%gwtmodel2))
then
400 budterm(1, 1) = ratout
401 budterm(2, 1) = ratin
402 call this%gwtmodel2%model_bdentry(budterm, budtxt, this%name)
406 if (this%inmvt > 0)
call this%mvt%mvt_bd(this%gwtmodel1%x, this%gwtmodel2%x)
417 integer(I4B) :: icbcfl, ibudfl
420 if (
associated(this%gwtmodel1))
then
421 call this%gwt_gwt_bdsav_model(this%gwtmodel1)
425 if (
associated(this%gwtmodel2))
then
426 call this%gwt_gwt_bdsav_model(this%gwtmodel2)
438 if (this%inobs /= 0)
then
439 call this%gwt_gwt_save_simvals()
455 character(len=LENBOUNDNAME) :: bname
456 character(len=LENPACKAGENAME + 4) :: packname
457 character(len=LENBUDTXT),
dimension(1) :: budtxt
460 character(len=20) :: nodestr
461 integer(I4B) :: ntabrows
462 integer(I4B) :: nodeu
463 integer(I4B) :: i, n1, n2, n1u, n2u
464 integer(I4B) :: ibinun
465 real(DP) :: ratin, ratout, rrate
466 logical(LGP) :: is_for_model1
467 integer(I4B) :: isuppress_output
468 real(DP),
dimension(this%naux) :: auxrow
472 budtxt(1) =
' FLOW-JA-FACE'
473 packname =
'EXG '//this%name
474 packname = adjustr(packname)
475 if (
associated(model, this%gwtmodel1))
then
476 output_tab => this%outputtab1
477 nbr_model => this%v_model2
478 is_for_model1 = .true.
480 output_tab => this%outputtab2
481 nbr_model => this%v_model1
482 is_for_model1 = .false.
486 if (this%iprflow /= 0)
then
489 if (model%oc%oc_save(
'BUDGET'))
then
490 call output_tab%set_title(packname)
494 call output_tab%set_kstpkper(
kstp,
kper)
503 if (this%v_model1%ibound%get(n1) /= 0 .and. &
504 this%v_model2%ibound%get(n2) /= 0)
then
505 ntabrows = ntabrows + 1
508 if (ntabrows > 0)
then
509 call output_tab%set_maxbound(ntabrows)
516 if (this%ipakcb /= 0)
then
517 ibinun = model%oc%oc_save_unit(
'BUDGET')
524 if (.not. model%oc%oc_save(
'BUDGET')) ibinun = 0
525 if (isuppress_output /= 0)
then
530 if (ibinun /= 0)
then
531 call model%dis%record_srcdst_list_header(budtxt(1), &
536 this%naux, this%auxname, &
549 if (this%inamedbound > 0)
then
550 bname = this%boundname(i)
561 if (this%v_model1%ibound%get(n1) /= 0 .and. &
562 this%v_model2%ibound%get(n2) /= 0)
then
563 rrate = this%simvals(i)
566 if (this%iprflow /= 0)
then
567 if (model%oc%oc_save(
'BUDGET'))
then
570 if (is_for_model1)
then
571 nodeu = model%dis%get_nodeuser(n1)
572 call model%dis%nodeu_to_string(nodeu, nodestr)
573 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
576 nodeu = model%dis%get_nodeuser(n2)
577 call model%dis%nodeu_to_string(nodeu, nodestr)
578 call output_tab%print_list_entry(i, trim(adjustl(nodestr)), &
583 if (rrate <
dzero)
then
584 ratout = ratout - rrate
586 ratin = ratin + rrate
591 n1u = this%v_model1%dis_get_nodeuser(n1)
592 n2u = this%v_model2%dis_get_nodeuser(n2)
593 if (ibinun /= 0)
then
594 if (this%naux > 0)
then
595 auxrow(:) = this%auxvar(:, i)
597 if (is_for_model1)
then
598 call model%dis%record_mf6_list_entry( &
599 ibinun, n1u, n2u, rrate, this%naux, auxrow, &
602 call model%dis%record_mf6_list_entry( &
603 ibinun, n2u, n1u, -rrate, this%naux, auxrow, &
622 integer(I4B) :: iexg, n1, n2
623 integer(I4B) :: ibudfl
625 character(len=LINELENGTH) :: node1str, node2str
627 character(len=*),
parameter :: fmtheader = &
628 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
629 &2a16, 5a16, /, 112('-'))"
630 character(len=*),
parameter :: fmtheader2 = &
631 "(/1x, 'SUMMARY OF EXCHANGE RATES FOR EXCHANGE ', a, ' WITH ID ', i0, /, &
632 &2a16, 4a16, /, 96('-'))"
633 character(len=*),
parameter :: fmtdata = &
637 call this%gwt_gwt_bdsav()
640 if (this%iprflow /= 0)
then
641 write (
iout, fmtheader2) trim(adjustl(this%name)), this%id,
'NODEM1', &
642 'NODEM2',
'COND',
'X_M1',
'X_M2',
'FLOW'
643 do iexg = 1, this%nexg
644 n1 = this%nodem1(iexg)
645 n2 = this%nodem2(iexg)
646 flow = this%simvals(iexg)
647 call this%v_model1%dis_noder_to_string(n1, node1str)
648 call this%v_model2%dis_noder_to_string(n2, node2str)
649 write (
iout, fmtdata) trim(adjustl(node1str)), &
650 trim(adjustl(node2str)), &
651 this%cond(iexg), this%v_model1%x%get(n1), &
652 this%v_model2%x%get(n2), flow
659 if (this%inmvt > 0)
call this%mvt%mvt_ot_bdsummary(ibudfl)
662 call this%obs%obs_ot()
679 integer(I4B),
intent(in) :: iout
682 character(len=LENVARNAME),
dimension(3) :: adv_scheme = &
683 &[character(len=LENVARNAME) ::
'UPSTREAM',
'CENTRAL',
'TVD']
684 character(len=linelength) :: mvt_fname
687 call mem_set_value(this%gwfmodelname1,
'GWFMODELNAME1', this%input_mempath, &
689 call mem_set_value(this%gwfmodelname2,
'GWFMODELNAME2', this%input_mempath, &
691 call mem_set_value(this%iAdvScheme,
'ADV_SCHEME', this%input_mempath, &
692 adv_scheme, found%adv_scheme)
693 call mem_set_value(this%ixt3d,
'DSP_XT3D_OFF', this%input_mempath, &
695 call mem_set_value(this%ixt3d,
'DSP_XT3D_RHS', this%input_mempath, &
698 write (iout,
'(1x,a)')
'PROCESSING GWT-GWT EXCHANGE OPTIONS'
701 call this%DisConnExchangeType%source_options(iout)
703 if (found%gwfmodelname1)
then
704 write (iout,
'(4x,a,a)') &
705 'GWFMODELNAME1 IS SET TO: ', trim(this%gwfmodelname1)
708 if (found%gwfmodelname2)
then
709 write (iout,
'(4x,a,a)') &
710 'GWFMODELNAME2 IS SET TO: ', trim(this%gwfmodelname2)
713 if (found%adv_scheme)
then
715 this%iAdvScheme = this%iAdvScheme - 1
716 write (iout,
'(4x,a,a)') &
717 'ADVECTION SCHEME METHOD HAS BEEN SET TO: ', &
718 trim(adv_scheme(this%iAdvScheme + 1))
721 if (found%dsp_xt3d_off .and. found%dsp_xt3d_rhs)
then
722 errmsg =
'DSP_XT3D_OFF and DSP_XT3D_RHS cannot both be set as options.'
725 else if (found%dsp_xt3d_off)
then
727 write (iout,
'(4x,a)')
'XT3D FORMULATION HAS BEEN SHUT OFF.'
728 else if (found%dsp_xt3d_rhs)
then
730 write (iout,
'(4x,a)')
'XT3D RIGHT-HAND SIDE FORMULATION IS SELECTED.'
734 if (
filein_fname(mvt_fname,
'MVT6_FILENAME', this%input_mempath, &
737 call openfile(this%inmvt, iout, mvt_fname,
'MVT')
738 write (iout,
'(4x,a)') &
739 'WATER MOVER TRANSPORT INFORMATION WILL BE READ FROM ', trim(mvt_fname)
743 if (
filein_fname(this%obs%inputFilename,
'OBS6_FILENAME', &
744 this%input_mempath, this%filename))
then
745 this%obs%active = .true.
747 call openfile(this%obs%inUnitObs, iout, this%obs%inputFilename,
'OBS')
750 write (iout,
'(1x,a)')
'END OF GWT-GWT EXCHANGE OPTIONS'
762 integer(I4B),
intent(in) :: iout
767 call mvt_cr(this%mvt, this%name, this%inmvt, iout, this%gwtmodel1%fmi, &
768 this%gwtmodel1%eqnsclfac, this%gwtmodel1%depvartype, &
769 gwfmodelname1=this%gwfmodelname1, &
770 gwfmodelname2=this%gwfmodelname2, &
771 fmi2=this%gwtmodel2%fmi)
785 call this%DisConnExchangeType%allocate_scalars()
787 call mem_allocate(this%inewton,
'INEWTON', this%memoryPath)
789 call mem_allocate(this%iAdvScheme,
'IADVSCHEME', this%memoryPath)
809 if (this%inmvt > 0)
then
810 call this%mvt%mvt_da()
811 deallocate (this%mvt)
813 call this%obs%obs_da()
814 deallocate (this%obs)
819 call mem_deallocate(this%gwfsimvals,
'GWFSIMVALS', this%memoryPath)
822 if (
associated(this%outputtab1))
then
823 call this%outputtab1%table_da()
824 deallocate (this%outputtab1)
825 nullify (this%outputtab1)
827 if (
associated(this%outputtab2))
then
828 call this%outputtab2%table_da()
829 deallocate (this%outputtab2)
830 nullify (this%outputtab2)
834 deallocate (this%filename)
841 call this%DisConnExchangeType%disconnex_da()
854 character(len=LINELENGTH) :: text
855 integer(I4B) :: ntabcol, i
857 call this%DisConnExchangeType%allocate_arrays()
859 call mem_allocate(this%cond, this%nexg,
'COND', this%memoryPath)
860 call mem_allocate(this%simvals, this%nexg,
'SIMVALS', this%memoryPath)
868 if (this%iprflow /= 0)
then
872 if (this%inamedbound > 0)
then
873 ntabcol = ntabcol + 1
878 if (this%v_model1%is_local)
then
879 call table_cr(this%outputtab1, this%name,
' ')
880 call this%outputtab1%table_df(this%nexg, ntabcol, this%gwtmodel1%iout, &
883 call this%outputtab1%initialize_column(text, 10, alignment=
tabcenter)
885 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
887 call this%outputtab1%initialize_column(text, 15, alignment=
tabcenter)
888 if (this%inamedbound > 0)
then
890 call this%outputtab1%initialize_column(text, 20, alignment=
tableft)
894 if (this%v_model2%is_local)
then
895 call table_cr(this%outputtab2, this%name,
' ')
896 call this%outputtab2%table_df(this%nexg, ntabcol, this%gwtmodel2%iout, &
899 call this%outputtab2%initialize_column(text, 10, alignment=
tabcenter)
901 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
903 call this%outputtab2%initialize_column(text, 15, alignment=
tabcenter)
904 if (this%inamedbound > 0)
then
906 call this%outputtab2%initialize_column(text, 20, alignment=
tableft)
924 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
941 character(len=LENBOUNDNAME) :: bname
944 10
format(
'Exchange "', a,
'" for observation "', a, &
945 '" is invalid in package "', a,
'"')
946 20
format(
'Exchange id "', i0,
'" for observation "', a, &
947 '" is invalid in package "', a,
'"')
949 do i = 1, this%obs%npakobs
950 obsrv => this%obs%pakobs(i)%obsrv
955 call obsrv%ResetObsIndex()
956 obsrv%BndFound = .false.
958 bname = obsrv%FeatureName
959 if (bname /=
'')
then
965 if (this%boundname(j) == bname)
then
967 obsrv%BndFound = .true.
968 obsrv%CurrentTimeStepEndValue =
dzero
969 call obsrv%AddObsIndex(j)
972 if (.not. jfound)
then
973 write (
errmsg, 10) trim(bname), trim(obsrv%ObsTypeId), trim(this%name)
978 if (obsrv%intPak1 <= this%nexg .and. obsrv%intPak1 > 0)
then
980 obsrv%BndFound = .true.
981 obsrv%CurrentTimeStepEndValue =
dzero
982 call obsrv%AddObsIndex(obsrv%intPak1)
986 if (.not. jfound)
then
987 write (
errmsg, 20) obsrv%intPak1, trim(obsrv%ObsTypeId), trim(this%name)
1016 logical(LGP) :: is_connected
1018 is_connected = .false.
1023 if (
associated(this%gwtmodel1, model))
then
1024 is_connected = .true.
1025 else if (
associated(this%gwtmodel2, model))
then
1026 is_connected = .true.
1043 logical(LGP) :: use_im
1065 integer(I4B) :: iexg
1070 if (this%obs%npakobs > 0)
then
1071 call this%obs%obs_bd_clear()
1072 do i = 1, this%obs%npakobs
1073 obsrv => this%obs%pakobs(i)%obsrv
1074 do j = 1, obsrv%indxbnds_count
1075 iexg = obsrv%indxbnds(j)
1077 select case (obsrv%ObsTypeId)
1078 case (
'FLOW-JA-FACE')
1079 n1 = this%nodem1(iexg)
1080 n2 = this%nodem2(iexg)
1081 v = this%simvals(iexg)
1083 errmsg =
'Unrecognized observation type: '// &
1084 trim(obsrv%ObsTypeId)
1088 call this%obs%SaveOneSimval(obsrv, v)
1107 integer(I4B),
intent(in) :: inunitobs
1108 integer(I4B),
intent(in) :: iout
1110 integer(I4B) :: n, iexg, istat
1111 integer(I4B) :: icol, istart, istop
1113 character(len=LINELENGTH) :: string
1115 string = obsrv%IDstring
1118 call urword(string, icol, istart, istop, 1, n, r, iout, inunitobs)
1119 read (string(istart:istop),
'(i10)', iostat=istat) iexg
1120 if (istat == 0)
then
1121 obsrv%intPak1 = iexg
1125 obsrv%FeatureName = trim(adjustl(string))
1129 obsrv%intPak1 = namedboundflag
1140 class(*),
pointer,
intent(inout) :: obj
1145 if (.not.
associated(obj))
return
1160 type(
listtype),
intent(inout) :: list
1161 integer(I4B),
intent(in) :: idx
1165 class(*),
pointer :: obj
1167 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
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
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.