15 use swfdfwmodule,
only: swfdfwtype
30 type(swfdfwtype),
pointer :: dfw => null()
36 integer(I4B),
pointer :: inic => null()
37 integer(I4B),
pointer :: indfw => null()
38 integer(I4B),
pointer :: incxs => null()
39 integer(I4B),
pointer :: insto => null()
40 integer(I4B),
pointer :: inobs => null()
41 integer(I4B),
pointer :: inoc => null()
42 integer(I4B),
pointer :: iss => null()
43 integer(I4B),
pointer :: inewtonur => null()
84 subroutine initialize(this, modelftype, filename, id, modelname)
89 character(len=*),
intent(in) :: modelftype
90 character(len=*),
intent(in) :: filename
91 integer(I4B),
intent(in) :: id
92 character(len=*),
intent(in) :: modelname
99 call this%allocate_scalars(modelname)
102 this%filename = filename
103 this%name = modelname
104 this%macronym = trim(modelftype)
115 character(len=*),
intent(in) :: modelname
118 call this%NumericalModelType%allocate_scalars(modelname)
128 call mem_allocate(this%inewtonur,
'INEWTONUR', this%memoryPath)
151 call this%NumericalModelType%allocate_arrays()
153 if (this%indfw == 0)
then
155 call mem_allocate(this%x, this%dis%nodes,
'X', this%memoryPath)
156 call mem_allocate(this%rhs, this%dis%nodes,
'RHS', this%memoryPath)
157 call mem_allocate(this%ibound, this%dis%nodes,
'IBOUND', this%memoryPath)
158 do i = 1, this%dis%nodes
175 class(
bndtype),
pointer :: packobj
178 call this%dis%dis_df()
179 call this%dfw%dfw_df(this%dis)
181 call this%budget%budget_df(
niunit_swf,
'VOLUME',
'L**3')
184 this%neq = this%dis%nodes
185 this%nja = this%dis%nja
186 this%ia => this%dis%con%ia
187 this%ja => this%dis%con%ja
190 call this%allocate_arrays()
193 do ip = 1, this%bndlist%Count()
195 call packobj%bnd_df(this%dis%nodes, this%dis)
199 call this%obs%obs_df(this%iout, this%name,
'SWF', this%dis)
212 class(
bndtype),
pointer :: packobj
216 call this%dis%dis_ac(this%moffset, sparse)
222 do ip = 1, this%bndlist%Count()
224 call packobj%bnd_ac(this%moffset, sparse)
236 class(
bndtype),
pointer :: packobj
241 call this%dis%dis_mc(this%moffset, this%idxglo, matrix_sln)
247 do ip = 1, this%bndlist%Count()
249 call packobj%bnd_mc(this%moffset, matrix_sln)
260 integer(I4B),
dimension(:),
allocatable :: itemp
262 class(
bndtype),
pointer :: packobj
265 if (this%inic > 0)
call this%ic%ic_ar(this%x)
269 allocate (itemp(this%dis%nodes))
272 call this%dis%dis_ar(itemp)
273 if (this%indfw > 0)
call this%dfw%dfw_ar(this%ibound, this%x)
274 if (this%insto > 0)
call this%sto%sto_ar(this%dis, this%ibound)
275 if (this%inobs > 0)
call this%obs%swf_obs_ar(this%ic, this%x, this%flowja)
279 if (this%indfw > 0)
then
280 call this%oc%oc_ar(
'STAGE', this%x, this%dis,
dnodata)
282 call this%budget%set_ibudcsv(this%oc%ibudcsv)
285 do ip = 1, this%bndlist%Count()
287 call packobj%set_pointers(this%dis%nodes, this%ibound, this%x, &
288 this%xold, this%flowja)
290 call packobj%bnd_ar()
303 class(
bndtype),
pointer :: packobj
310 if (this%indfw > 0)
call this%dfw%dfw_rp()
311 if (this%inoc > 0)
call this%oc%oc_rp()
312 if (this%insto > 0)
call this%sto%sto_rp()
314 do ip = 1, this%bndlist%Count()
316 call packobj%bnd_rp()
317 call packobj%bnd_rp_obs()
321 call this%steady_period_check()
332 class(
bndtype),
pointer :: packobj
334 integer(I4B) :: irestore
335 integer(I4B) :: ip, n
340 if (irestore == 0)
then
343 do n = 1, this%dis%nodes
344 this%xold(n) = this%x(n)
349 do n = 1, this%dis%nodes
350 this%x(n) = this%xold(n)
355 if (this%indfw > 0)
call this%dfw%dfw_ad(irestore)
356 if (this%insto > 0)
call this%sto%sto_ad()
358 do ip = 1, this%bndlist%Count()
360 call packobj%bnd_ad()
362 call packobj%bnd_ck()
367 call this%obs%obs_ad()
376 integer(I4B),
intent(in) :: kiter
378 class(
bndtype),
pointer :: packobj
383 do ip = 1, this%bndlist%Count()
385 call packobj%bnd_cf()
392 subroutine swf_fc(this, kiter, matrix_sln, inwtflag)
395 integer(I4B),
intent(in) :: kiter
397 integer(I4B),
intent(in) :: inwtflag
399 class(
bndtype),
pointer :: packobj
401 integer(I4B) :: inwt, inwtpak
416 if (this%indfw > 0)
call this%dfw%dfw_fc(kiter, matrix_sln, this%idxglo, &
417 this%rhs, this%x, this%xold)
419 if (this%insto > 0)
then
420 call this%sto%sto_fc(kiter, this%xold, this%x, matrix_sln, &
421 this%idxglo, this%rhs)
424 do ip = 1, this%bndlist%Count()
426 call packobj%bnd_fc(this%rhs, this%ia, this%idxglo, matrix_sln)
430 if (this%indfw > 0)
then
432 call this%dfw%dfw_fn(kiter, matrix_sln, this%idxglo, this%rhs, this%x)
445 do ip = 1, this%bndlist%Count()
448 if (inwtflag == 1) inwtpak = packobj%inewton
449 if (inwtpak /= 0)
then
450 call packobj%bnd_fn(this%rhs, this%ia, this%idxglo, matrix_sln)
458 subroutine swf_nur(this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
463 integer(I4B),
intent(in) :: neqmod
464 real(DP),
dimension(neqmod),
intent(inout) :: x
465 real(DP),
dimension(neqmod),
intent(in) :: xtemp
466 real(DP),
dimension(neqmod),
intent(inout) :: dx
467 integer(I4B),
intent(inout) :: inewtonur
468 real(DP),
intent(inout) :: dxmax
469 integer(I4B),
intent(inout) :: locmax
473 class(
bndtype),
pointer :: packobj
479 if (this%inewton /= 0 .and. this%inewtonur /= 0)
then
480 if (this%indfw > 0)
then
481 call this%dfw%dfw_nur(neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
485 i0 = this%dis%nodes + 1
486 do ip = 1, this%bndlist%Count()
488 if (packobj%npakeq > 0)
then
489 i1 = i0 + packobj%npakeq - 1
490 call packobj%bnd_nur(packobj%npakeq, x(i0:i1), xtemp(i0:i1), &
491 dx(i0:i1), inewtonur, dxmax, locmax)
501 subroutine swf_cq(this, icnvg, isuppress_output)
505 integer(I4B),
intent(in) :: icnvg
506 integer(I4B),
intent(in) :: isuppress_output
510 class(
bndtype),
pointer :: packobj
517 do i = 1, this%dis%nja
518 this%flowja(i) =
dzero
520 if (this%indfw > 0)
call this%dfw%dfw_cq(this%x, this%xold, this%flowja)
521 if (this%insto > 0)
call this%sto%sto_cq(this%flowja, this%x, this%xold)
526 do ip = 1, this%bndlist%Count()
528 call packobj%bnd_cf()
529 call packobj%bnd_cq(this%x, this%flowja)
536 subroutine swf_bd(this, icnvg, isuppress_output)
541 integer(I4B),
intent(in) :: icnvg
542 integer(I4B),
intent(in) :: isuppress_output
545 class(
bndtype),
pointer :: packobj
556 call this%budget%reset()
557 if (this%insto > 0)
call this%sto%sto_bd(isuppress_output, this%budget)
558 if (this%indfw > 0)
call this%dfw%dfw_bd(isuppress_output, this%budget)
559 do ip = 1, this%bndlist%Count()
561 call packobj%bnd_bd(this%budget)
566 if (this%indfw > 0)
then
567 if (this%dfw%icalcvelocity /= 0)
then
568 call this%dfw%calc_velocity(this%flowja)
582 integer(I4B) :: idvsave
583 integer(I4B) :: idvprint
584 integer(I4B) :: icbcfl
585 integer(I4B) :: icbcun
586 integer(I4B) :: ibudfl
587 integer(I4B) :: ipflag
588 integer(I4B) :: icnvg = 1
595 if (this%oc%oc_save(
'QOUTFLOW')) idvsave = 1
596 if (this%oc%oc_print(
'QOUTFLOW')) idvprint = 1
597 if (this%oc%oc_save(
'BUDGET')) icbcfl = 1
598 if (this%oc%oc_print(
'BUDGET')) ibudfl = 1
599 icbcun = this%oc%oc_save_unit(
'BUDGET')
603 ibudfl = this%oc%set_print_flag(
'BUDGET', icnvg,
endofperiod)
604 idvprint = this%oc%set_print_flag(
'QOUTFLOW', icnvg,
endofperiod)
607 call this%swf_ot_obs()
610 call this%swf_ot_flow(icbcfl, ibudfl, icbcun)
613 call this%swf_ot_dv(idvsave, idvprint, ipflag)
616 call this%swf_ot_bdsummary(ibudfl, ipflag)
620 if (ipflag == 1)
call tdis_ot(this%iout)
628 class(
bndtype),
pointer :: packobj
632 call this%obs%obs_bd()
633 call this%obs%obs_ot()
636 if (this%indfw > 0)
then
637 call this%dfw%dfw_bd_obs()
638 call this%dfw%obs%obs_ot()
642 do ip = 1, this%bndlist%Count()
644 call packobj%bnd_bd_obs()
645 call packobj%bnd_ot_obs()
654 integer(I4B),
intent(in) :: icbcfl
655 integer(I4B),
intent(in) :: ibudfl
656 integer(I4B),
intent(in) :: icbcun
657 class(
bndtype),
pointer :: packobj
661 if (this%insto > 0)
then
662 call this%sto%sto_save_model_flows(icbcfl, icbcun)
664 if (this%indfw > 0)
then
665 call this%dfw%dfw_save_model_flows(this%flowja, icbcfl, icbcun)
667 do ip = 1, this%bndlist%Count()
669 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
673 do ip = 1, this%bndlist%Count()
675 call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
682 if (this%indfw > 0)
then
683 call this%dfw%dfw_print_model_flows(ibudfl, this%flowja)
685 do ip = 1, this%bndlist%Count()
687 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
691 do ip = 1, this%bndlist%Count()
693 call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
705 integer(I4B),
intent(in) :: idvsave
706 integer(I4B),
intent(in) :: idvprint
707 integer(I4B),
intent(inout) :: ipflag
708 class(
bndtype),
pointer :: packobj
712 do ip = 1, this%bndlist%Count()
714 call packobj%bnd_ot_dv(idvsave, idvprint)
718 call this%oc%oc_ot(ipflag)
727 integer(I4B),
intent(in) :: ibudfl
728 integer(I4B),
intent(inout) :: ipflag
729 class(
bndtype),
pointer :: packobj
733 do ip = 1, this%bndlist%Count()
735 call packobj%bnd_ot_bdsummary(
kstp,
kper, this%iout, ibudfl)
744 call this%budget%finalize_step(
delt)
745 if (ibudfl /= 0)
then
747 call this%budget%budget_ot(
kstp,
kper, this%iout)
751 call this%budget%writecsv(
totim)
766 class(
bndtype),
pointer :: packobj
773 call this%dis%dis_da()
774 if (this%insto > 0)
call this%sto%sto_da()
775 if (this%inic > 0)
call this%ic%ic_da()
776 if (this%indfw > 0)
call this%dfw%dfw_da()
777 call this%cxs%cxs_da()
778 call this%obs%obs_da()
780 call this%budget%budget_da()
783 deallocate (this%dis)
784 deallocate (this%budget)
785 deallocate (this%obs)
789 do ip = 1, this%bndlist%Count()
791 call packobj%bnd_da()
808 call this%NumericalModelType%model_da()
823 real(DP),
dimension(:, :),
intent(in) :: budterm
824 character(len=LENBUDTXT),
dimension(:),
intent(in) :: budtxt
825 character(len=*),
intent(in) :: rowlabel
827 call this%budget%addentry(budterm,
delt, budtxt, rowlabel=rowlabel)
844 character(len=*),
intent(in) :: filtyp
845 integer(I4B),
intent(in) :: ipakid
846 integer(I4B),
intent(in) :: ipaknum
847 character(len=*),
intent(in) :: pakname
848 character(len=*),
intent(in) :: mempath
849 integer(I4B),
intent(in) :: inunit
850 integer(I4B),
intent(in) :: iout
852 class(
bndtype),
pointer :: packobj
853 class(
bndtype),
pointer :: packobj2
859 call flw_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
861 packobj%ictMemPath =
''
863 call chd_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
867 call cdb_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
868 pakname, mempath, this%dis, this%cxs, &
869 this%dfw%lengthconv, this%dfw%timeconv)
871 call zdg_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
872 pakname, mempath, this%dis, this%cxs, this%dfw%unitconv)
874 write (
errmsg, *)
'Invalid package type: ', filtyp
881 do ip = 1, this%bndlist%Count()
883 if (packobj2%packName == pakname)
then
884 write (
errmsg,
'(a,a)')
'Cannot create package. Package name '// &
885 'already exists: ', trim(pakname)
899 integer(I4B),
intent(in) :: indis
905 'Discretization Package (DISV1D6 or DIS2D6) not specified.'
908 if (this%inic == 0 .and. this%indfw /= 0)
then
910 'Initial Conditions (IC6) must be specified if the Diffusive &
911 &Wave (DFW) package is used.'
914 if (this%indfw == 0)
then
915 write (
errmsg,
'(1x,a)') &
916 'DFW6 Package must be specified.'
919 if (this%incxs > 0)
then
920 if (this%dis%ndim /= 1)
then
921 write (
errmsg,
'(1x,a)') &
922 'CXS6 Package can only be used for one-dimensional discretization &
923 &package (DISV1D). Remove CXS6 Package from model or convert &
924 &discretization package to DISV1D.'
929 write (
errmsg,
'(a)')
'One or more required package(s) not specified &
930 &and/or there are package incompatibilities.'
946 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
948 pointer,
intent(inout) :: pkgtypes
950 pointer,
intent(inout) :: pkgnames
952 pointer,
intent(inout) :: mempaths
953 integer(I4B),
dimension(:),
contiguous, &
954 pointer,
intent(inout) :: inunits
956 integer(I4B) :: ipakid, ipaknum
957 character(len=LENFTYPE) :: pkgtype, bndptype
958 character(len=LENPACKAGENAME) :: pkgname
959 character(len=LENMEMPATH) :: mempath
960 integer(I4B),
pointer :: inunit
963 if (
allocated(bndpkgs))
then
968 do n = 1,
size(bndpkgs)
970 pkgtype = pkgtypes(bndpkgs(n))
971 pkgname = pkgnames(bndpkgs(n))
972 mempath = mempaths(bndpkgs(n))
973 inunit => inunits(bndpkgs(n))
975 if (bndptype /= pkgtype)
then
980 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
983 ipaknum = ipaknum + 1
1005 use swfdfwmodule,
only: dfw_cr
1014 pointer :: pkgtypes => null()
1016 pointer :: pkgnames => null()
1018 pointer :: mempaths => null()
1019 integer(I4B),
dimension(:),
contiguous, &
1020 pointer :: inunits => null()
1021 character(len=LENMEMPATH) :: model_mempath
1022 character(len=LENPACKAGETYPE) :: pkgtype
1023 character(len=LENPACKAGENAME) :: pkgname
1024 character(len=LENMEMPATH) :: mempath
1025 integer(I4B),
pointer :: inunit
1026 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1028 integer(I4B) :: indis = 0
1029 character(len=LENMEMPATH) :: mempathic =
''
1030 character(len=LENMEMPATH) :: mempathdfw =
''
1031 character(len=LENMEMPATH) :: mempathcxs =
''
1032 character(len=LENMEMPATH) :: mempathsto =
''
1038 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1039 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1040 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1041 call mem_setptr(inunits,
'INUNITS', model_mempath)
1043 do n = 1,
size(pkgtypes)
1046 pkgtype = pkgtypes(n)
1047 pkgname = pkgnames(n)
1048 mempath = mempaths(n)
1049 inunit => inunits(n)
1052 select case (pkgtype)
1055 call disv1d_cr(this%dis, this%name, mempath, indis, this%iout)
1058 call dis2d_cr(this%dis, this%name, mempath, indis, this%iout)
1061 call disv2d_cr(this%dis, this%name, mempath, indis, this%iout)
1064 mempathdfw = mempath
1067 mempathcxs = mempath
1070 mempathsto = mempath
1078 case (
'CHD6',
'FLW6',
'CDB6',
'ZDG6')
1080 bndpkgs(
size(bndpkgs)) = n
1087 if (this%inic > 0)
then
1088 call ic_cr(this%ic, this%name, mempathic, this%inic, this%iout, &
1091 call cxs_cr(this%cxs, this%name, mempathcxs, this%incxs, this%iout, &
1093 if (this%indfw > 0)
then
1094 call dfw_cr(this%dfw, this%name, mempathdfw, this%indfw, this%iout, &
1097 if (this%insto > 0)
then
1098 call sto_cr(this%sto, this%name, mempathsto, this%insto, this%iout, &
1101 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1105 call this%ftype_check(indis)
1107 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1125 if (this%iss == 1)
then
1127 write (
warnmsg,
'(a,a,a,i0,a)') &
1128 'SWF Model (', trim(this%name),
') is steady state for period ', &
1129 kper,
' and adaptive time stepping is active. Adaptive time &
1130 &stepping may not work properly for steady-state conditions.'
1142 integer(I4B) :: iasym
1144 class(
bndtype),
pointer :: packobj
1150 if (this%indfw > 0)
then
1155 do ip = 1, this%bndlist%Count()
1157 if (packobj%iasym /= 0) iasym = 1
logical(lgp) function, public isadaptiveperiod(kper)
@ brief Determine if period is adaptive
This module contains the base boundary package.
subroutine, public addbndtolist(list, bnd)
Add boundary to package list.
class(bndtype) function, pointer, public getbndfromlist(list, idx)
Get boundary from package list.
This module contains the BudgetModule.
subroutine, public chd_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath)
Create a new constant head package.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
integer(i4b), parameter lenpackagename
maximum length of the package name
real(dp), parameter dp9
real constant 9/10
real(dp), parameter dnodata
real no data constant
integer(i4b), parameter lenpackagetype
maximum length of a package type (DIS6, SFR6, CSUB6, etc.)
integer(i4b), parameter lenftype
maximum length of a package type (DIS, WEL, OC, etc.)
real(dp), parameter dzero
real constant zero
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
integer(i4b), parameter lenmempath
maximum length of the memory path
real(dp), parameter done
real constant 1
subroutine, public dis2d_cr(dis, name_model, input_mempath, inunit, iout)
Create a new structured discretization object.
subroutine, public disv1d_cr(dis, name_model, input_mempath, inunit, iout)
subroutine, public disv2d_cr(dis, name_model, input_mempath, inunit, iout)
Create a new discretization by vertices object.
This module defines variable data types.
character(len=lenmempath) function create_mem_path(component, subcomponent, context)
returns the path to the memory object
subroutine, public memorystore_remove(component, subcomponent, context)
This module contains simulation methods.
subroutine, public store_warning(msg, substring)
Store warning message.
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
character(len=linelength) idm_context
integer(i4b) isimcheck
simulation input check flag (1) to check input, (0) to ignore checks
integer(i4b) ifailedstepretry
current retry for this time step
character(len=maxcharlen) warnmsg
warning message string
subroutine csr_diagsum(ia, flowja)
This module contains the CDB package methods.
subroutine, public cdb_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath, dis, cxs, lengthconv, timeconv)
@ brief Create a new package object
subroutine, public cxs_cr(pobj, name_model, input_mempath, inunit, iout, dis)
create package
This module contains the FLW package methods.
subroutine, public flw_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath)
@ brief Create a new package object
subroutine, public ic_cr(ic, name_model, input_mempath, inunit, iout, dis)
Create a new initial conditions object.
Surface Water Flow (SWF) Module.
subroutine swf_ad(this)
Surface Water Flow Model Time Step Advance.
subroutine swf_ar(this)
SWF Allocate and Read.
subroutine create_packages(this)
Source package info and begin to process.
subroutine swf_bdentry(this, budterm, budtxt, rowlabel)
Surface Flow Model Budget Entry.
subroutine swf_cf(this, kiter)
Calculate coefficients.
subroutine package_create(this, filtyp, ipakid, ipaknum, pakname, mempath, inunit, iout)
Create boundary condition packages for this model.
subroutine swf_df(this)
Define packages of the model.
integer(i4b), parameter niunit_swf
subroutine create_bndpkgs(this, bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
Source package info and begin to process.
subroutine swf_ot_obs(this)
Surface Water Flow Model output observations.
subroutine initialize(this, modelftype, filename, id, modelname)
Initialize common swf members.
subroutine allocate_scalars(this, modelname)
Allocate memory for scalar members.
subroutine steady_period_check(this)
Check for steady state period.
subroutine swf_ot_dv(this, idvsave, idvprint, ipflag)
Surface Water Flow Model output dependent variable.
subroutine swf_mc(this, matrix_sln)
Map the positions of this models connections in the.
subroutine swf_ac(this, sparse)
Add the internal connections of this model to the sparse matrix.
subroutine swf_ot_bdsummary(this, ibudfl, ipflag)
Surface Water Flow Model output budget summary.
integer(i4b) function swf_get_iasym(this)
return 1 if any package causes the matrix to be asymmetric.
subroutine swf_nur(this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
under-relaxation
subroutine swf_cq(this, icnvg, isuppress_output)
Calculate flow.
subroutine swf_da(this)
Deallocate.
subroutine swf_ot_flow(this, icbcfl, ibudfl, icbcun)
Surface Water Flow Model output flows.
subroutine swf_ot(this)
Surface Water Flow Model Output.
subroutine swf_bd(this, icnvg, isuppress_output)
Model Budget.
subroutine swf_fc(this, kiter, matrix_sln, inwtflag)
Fill coefficients.
subroutine allocate_arrays(this)
Allocate memory for scalar members.
integer(i4b), parameter swf_nmultipkg
subroutine swf_rp(this)
Surface Water Flow Model Read and Prepare.
subroutine ftype_check(this, indis)
Check to make sure required input files have been specified.
integer(i4b), parameter swf_nbasepkg
subroutine, public swf_obs_cr(obs, inobs)
Create a new obs object.
subroutine, public oc_cr(ocobj, name_model, inunit, iout)
@ brief Create SwfOcType
This module contains the storage package methods.
subroutine, public sto_cr(stoobj, name_model, mempath, inunit, iout, cxs)
@ brief Create a new package object
This module contains the ZDG package methods.
subroutine, public zdg_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath, dis, cxs, unitconv)
@ brief Create a new package object
logical(lgp), pointer, public endofperiod
flag indicating end of stress period
subroutine, public tdis_ot(iout)
Print simulation time.
real(dp), pointer, public totim
time relative to start of simulation
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
real(dp), pointer, public delt
length of the current time step
Highest level model type. All models extend this parent type.
Derived type for the Budget object.
This class is used to store a single deferred-length character string. It was designed to work in an ...