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)
88 character(len=*),
intent(in) :: modelftype
89 character(len=*),
intent(in) :: filename
90 integer(I4B),
intent(in) :: id
91 character(len=*),
intent(in) :: modelname
98 call this%allocate_scalars(modelname)
101 this%filename = filename
102 this%name = modelname
103 this%macronym = trim(modelftype)
114 character(len=*),
intent(in) :: modelname
117 call this%NumericalModelType%allocate_scalars(modelname)
127 call mem_allocate(this%inewtonur,
'INEWTONUR', this%memoryPath)
150 call this%NumericalModelType%allocate_arrays()
152 if (this%indfw == 0)
then
154 call mem_allocate(this%x, this%dis%nodes,
'X', this%memoryPath)
155 call mem_allocate(this%rhs, this%dis%nodes,
'RHS', this%memoryPath)
156 call mem_allocate(this%ibound, this%dis%nodes,
'IBOUND', this%memoryPath)
157 do i = 1, this%dis%nodes
174 class(
bndtype),
pointer :: packobj
177 call this%dis%dis_df()
178 call this%dfw%dfw_df(this%dis)
180 call this%budget%budget_df(
niunit_swf,
'VOLUME',
'L**3')
183 this%neq = this%dis%nodes
184 this%nja = this%dis%nja
185 this%ia => this%dis%con%ia
186 this%ja => this%dis%con%ja
189 call this%allocate_arrays()
192 do ip = 1, this%bndlist%Count()
194 call packobj%bnd_df(this%dis%nodes, this%dis)
198 call this%obs%obs_df(this%iout, this%name,
'SWF', this%dis)
211 class(
bndtype),
pointer :: packobj
215 call this%dis%dis_ac(this%moffset, sparse)
221 do ip = 1, this%bndlist%Count()
223 call packobj%bnd_ac(this%moffset, sparse)
235 class(
bndtype),
pointer :: packobj
240 call this%dis%dis_mc(this%moffset, this%idxglo, matrix_sln)
246 do ip = 1, this%bndlist%Count()
248 call packobj%bnd_mc(this%moffset, matrix_sln)
259 integer(I4B),
dimension(:),
allocatable :: itemp
261 class(
bndtype),
pointer :: packobj
264 if (this%inic > 0)
call this%ic%ic_ar(this%x)
268 allocate (itemp(this%dis%nodes))
271 call this%dis%dis_ar(itemp)
272 if (this%indfw > 0)
call this%dfw%dfw_ar(this%ibound, this%x)
273 if (this%insto > 0)
call this%sto%sto_ar(this%dis, this%ibound)
274 if (this%inobs > 0)
call this%obs%swf_obs_ar(this%ic, this%x, this%flowja)
278 if (this%indfw > 0)
then
279 call this%oc%oc_ar(
'STAGE', this%x, this%dis,
dnodata)
281 call this%budget%set_ibudcsv(this%oc%ibudcsv)
284 do ip = 1, this%bndlist%Count()
286 call packobj%set_pointers(this%dis%nodes, this%ibound, this%x, &
287 this%xold, this%flowja)
289 call packobj%bnd_ar()
302 class(
bndtype),
pointer :: packobj
309 if (this%indfw > 0)
call this%dfw%dfw_rp()
310 if (this%inoc > 0)
call this%oc%oc_rp()
311 if (this%insto > 0)
call this%sto%sto_rp()
313 do ip = 1, this%bndlist%Count()
315 call packobj%bnd_rp()
316 call packobj%bnd_rp_obs()
320 call this%steady_period_check()
331 class(
bndtype),
pointer :: packobj
333 integer(I4B) :: irestore
334 integer(I4B) :: ip, n
339 if (irestore == 0)
then
342 do n = 1, this%dis%nodes
343 this%xold(n) = this%x(n)
348 do n = 1, this%dis%nodes
349 this%x(n) = this%xold(n)
354 if (this%indfw > 0)
call this%dfw%dfw_ad(irestore)
355 if (this%insto > 0)
call this%sto%sto_ad()
357 do ip = 1, this%bndlist%Count()
359 call packobj%bnd_ad()
361 call packobj%bnd_ck()
366 call this%obs%obs_ad()
375 integer(I4B),
intent(in) :: kiter
377 class(
bndtype),
pointer :: packobj
382 do ip = 1, this%bndlist%Count()
384 call packobj%bnd_cf()
391 subroutine swf_fc(this, kiter, matrix_sln, inwtflag)
394 integer(I4B),
intent(in) :: kiter
396 integer(I4B),
intent(in) :: inwtflag
398 class(
bndtype),
pointer :: packobj
400 integer(I4B) :: inwt, inwtpak
415 if (this%indfw > 0)
call this%dfw%dfw_fc(kiter, matrix_sln, this%idxglo, &
416 this%rhs, this%x, this%xold)
418 if (this%insto > 0)
then
419 call this%sto%sto_fc(kiter, this%xold, this%x, matrix_sln, &
420 this%idxglo, this%rhs)
423 do ip = 1, this%bndlist%Count()
425 call packobj%bnd_fc(this%rhs, this%ia, this%idxglo, matrix_sln)
429 if (this%indfw > 0)
then
431 call this%dfw%dfw_fn(kiter, matrix_sln, this%idxglo, this%rhs, this%x)
444 do ip = 1, this%bndlist%Count()
447 if (inwtflag == 1) inwtpak = packobj%inewton
448 if (inwtpak /= 0)
then
449 call packobj%bnd_fn(this%rhs, this%ia, this%idxglo, matrix_sln)
457 subroutine swf_nur(this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
462 integer(I4B),
intent(in) :: neqmod
463 real(DP),
dimension(neqmod),
intent(inout) :: x
464 real(DP),
dimension(neqmod),
intent(in) :: xtemp
465 real(DP),
dimension(neqmod),
intent(inout) :: dx
466 integer(I4B),
intent(inout) :: inewtonur
467 real(DP),
intent(inout) :: dxmax
468 integer(I4B),
intent(inout) :: locmax
472 class(
bndtype),
pointer :: packobj
478 if (this%inewton /= 0 .and. this%inewtonur /= 0)
then
479 if (this%indfw > 0)
then
480 call this%dfw%dfw_nur(neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
484 i0 = this%dis%nodes + 1
485 do ip = 1, this%bndlist%Count()
487 if (packobj%npakeq > 0)
then
488 i1 = i0 + packobj%npakeq - 1
489 call packobj%bnd_nur(packobj%npakeq, x(i0:i1), xtemp(i0:i1), &
490 dx(i0:i1), inewtonur, dxmax, locmax)
500 subroutine swf_cq(this, icnvg, isuppress_output)
504 integer(I4B),
intent(in) :: icnvg
505 integer(I4B),
intent(in) :: isuppress_output
509 class(
bndtype),
pointer :: packobj
516 do i = 1, this%dis%nja
517 this%flowja(i) =
dzero
519 if (this%indfw > 0)
call this%dfw%dfw_cq(this%x, this%xold, this%flowja)
520 if (this%insto > 0)
call this%sto%sto_cq(this%flowja, this%x, this%xold)
525 do ip = 1, this%bndlist%Count()
527 call packobj%bnd_cf()
528 call packobj%bnd_cq(this%x, this%flowja)
535 subroutine swf_bd(this, icnvg, isuppress_output)
540 integer(I4B),
intent(in) :: icnvg
541 integer(I4B),
intent(in) :: isuppress_output
544 class(
bndtype),
pointer :: packobj
555 call this%budget%reset()
556 if (this%insto > 0)
call this%sto%sto_bd(isuppress_output, this%budget)
557 if (this%indfw > 0)
call this%dfw%dfw_bd(isuppress_output, this%budget)
558 do ip = 1, this%bndlist%Count()
560 call packobj%bnd_bd(this%budget)
565 if (this%indfw > 0)
then
566 if (this%dfw%icalcvelocity /= 0)
then
567 call this%dfw%calc_velocity(this%flowja)
581 integer(I4B) :: idvsave
582 integer(I4B) :: idvprint
583 integer(I4B) :: icbcfl
584 integer(I4B) :: icbcun
585 integer(I4B) :: ibudfl
586 integer(I4B) :: ipflag
587 integer(I4B) :: icnvg = 1
594 if (this%oc%oc_save(
'QOUTFLOW')) idvsave = 1
595 if (this%oc%oc_print(
'QOUTFLOW')) idvprint = 1
596 if (this%oc%oc_save(
'BUDGET')) icbcfl = 1
597 if (this%oc%oc_print(
'BUDGET')) ibudfl = 1
598 icbcun = this%oc%oc_save_unit(
'BUDGET')
602 ibudfl = this%oc%set_print_flag(
'BUDGET', icnvg,
endofperiod)
603 idvprint = this%oc%set_print_flag(
'QOUTFLOW', icnvg,
endofperiod)
606 call this%swf_ot_obs()
609 call this%swf_ot_flow(icbcfl, ibudfl, icbcun)
612 call this%swf_ot_dv(idvsave, idvprint, ipflag)
615 call this%swf_ot_bdsummary(ibudfl, ipflag)
619 if (ipflag == 1)
call tdis_ot(this%iout)
627 class(
bndtype),
pointer :: packobj
631 call this%obs%obs_bd()
632 call this%obs%obs_ot()
635 if (this%indfw > 0)
then
636 call this%dfw%dfw_bd_obs()
637 call this%dfw%obs%obs_ot()
641 do ip = 1, this%bndlist%Count()
643 call packobj%bnd_bd_obs()
644 call packobj%bnd_ot_obs()
653 integer(I4B),
intent(in) :: icbcfl
654 integer(I4B),
intent(in) :: ibudfl
655 integer(I4B),
intent(in) :: icbcun
656 class(
bndtype),
pointer :: packobj
660 if (this%insto > 0)
then
661 call this%sto%sto_save_model_flows(icbcfl, icbcun)
663 if (this%indfw > 0)
then
664 call this%dfw%dfw_save_model_flows(this%flowja, icbcfl, icbcun)
666 do ip = 1, this%bndlist%Count()
668 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
672 do ip = 1, this%bndlist%Count()
674 call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
681 if (this%indfw > 0)
then
682 call this%dfw%dfw_print_model_flows(ibudfl, this%flowja)
684 do ip = 1, this%bndlist%Count()
686 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
690 do ip = 1, this%bndlist%Count()
692 call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
704 integer(I4B),
intent(in) :: idvsave
705 integer(I4B),
intent(in) :: idvprint
706 integer(I4B),
intent(inout) :: ipflag
707 class(
bndtype),
pointer :: packobj
711 do ip = 1, this%bndlist%Count()
713 call packobj%bnd_ot_dv(idvsave, idvprint)
717 call this%oc%oc_ot(ipflag)
726 integer(I4B),
intent(in) :: ibudfl
727 integer(I4B),
intent(inout) :: ipflag
728 class(
bndtype),
pointer :: packobj
732 do ip = 1, this%bndlist%Count()
734 call packobj%bnd_ot_bdsummary(
kstp,
kper, this%iout, ibudfl)
743 call this%budget%finalize_step(
delt)
744 if (ibudfl /= 0)
then
746 call this%budget%budget_ot(
kstp,
kper, this%iout)
750 call this%budget%writecsv(
totim)
765 class(
bndtype),
pointer :: packobj
772 call this%dis%dis_da()
773 if (this%insto > 0)
call this%sto%sto_da()
774 if (this%inic > 0)
call this%ic%ic_da()
775 if (this%indfw > 0)
call this%dfw%dfw_da()
776 call this%cxs%cxs_da()
777 call this%obs%obs_da()
779 call this%budget%budget_da()
782 deallocate (this%dis)
783 deallocate (this%budget)
784 deallocate (this%obs)
788 do ip = 1, this%bndlist%Count()
790 call packobj%bnd_da()
807 call this%NumericalModelType%model_da()
822 real(DP),
dimension(:, :),
intent(in) :: budterm
823 character(len=LENBUDTXT),
dimension(:),
intent(in) :: budtxt
824 character(len=*),
intent(in) :: rowlabel
826 call this%budget%addentry(budterm,
delt, budtxt, rowlabel=rowlabel)
841 character(len=*),
intent(in) :: filtyp
842 integer(I4B),
intent(in) :: ipakid
843 integer(I4B),
intent(in) :: ipaknum
844 character(len=*),
intent(in) :: pakname
845 character(len=*),
intent(in) :: mempath
846 integer(I4B),
intent(in) :: inunit
847 integer(I4B),
intent(in) :: iout
849 class(
bndtype),
pointer :: packobj
850 class(
bndtype),
pointer :: packobj2
856 call flw_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
858 packobj%ictMemPath =
''
860 call chd_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
864 call cdb_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
865 pakname, mempath, this%dis, this%cxs, &
866 this%dfw%lengthconv, this%dfw%timeconv)
868 call zdg_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
869 pakname, mempath, this%dis, this%cxs, this%dfw%unitconv)
871 write (
errmsg, *)
'Invalid package type: ', filtyp
878 do ip = 1, this%bndlist%Count()
880 if (packobj2%packName == pakname)
then
881 write (
errmsg,
'(a,a)')
'Cannot create package. Package name '// &
882 'already exists: ', trim(pakname)
896 integer(I4B),
intent(in) :: indis
902 'Discretization Package (DISV1D6 or DIS2D6) not specified.'
905 if (this%inic == 0 .and. this%indfw /= 0)
then
907 'Initial Conditions (IC6) must be specified if the Diffusive &
908 &Wave (DFW) package is used.'
911 if (this%indfw == 0)
then
912 write (
errmsg,
'(1x,a)') &
913 'DFW6 Package must be specified.'
916 if (this%incxs > 0)
then
917 if (this%dis%ndim /= 1)
then
918 write (
errmsg,
'(1x,a)') &
919 'CXS6 Package can only be used for one-dimensional discretization &
920 &package (DISV1D). Remove CXS6 Package from model or convert &
921 &discretization package to DISV1D.'
926 write (
errmsg,
'(a)')
'One or more required package(s) not specified &
927 &and/or there are package incompatibilities.'
943 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
945 pointer,
intent(inout) :: pkgtypes
947 pointer,
intent(inout) :: pkgnames
949 pointer,
intent(inout) :: mempaths
950 integer(I4B),
dimension(:),
contiguous, &
951 pointer,
intent(inout) :: inunits
953 integer(I4B) :: ipakid, ipaknum
954 character(len=LENFTYPE) :: pkgtype, bndptype
955 character(len=LENPACKAGENAME) :: pkgname
956 character(len=LENMEMPATH) :: mempath
957 integer(I4B),
pointer :: inunit
960 if (
allocated(bndpkgs))
then
965 do n = 1,
size(bndpkgs)
967 pkgtype = pkgtypes(bndpkgs(n))
968 pkgname = pkgnames(bndpkgs(n))
969 mempath = mempaths(bndpkgs(n))
970 inunit => inunits(bndpkgs(n))
972 if (bndptype /= pkgtype)
then
977 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
980 ipaknum = ipaknum + 1
1001 use swfdfwmodule,
only: dfw_cr
1010 pointer :: pkgtypes => null()
1012 pointer :: pkgnames => null()
1014 pointer :: mempaths => null()
1015 integer(I4B),
dimension(:),
contiguous, &
1016 pointer :: inunits => null()
1017 character(len=LENMEMPATH) :: model_mempath
1018 character(len=LENPACKAGETYPE) :: pkgtype
1019 character(len=LENPACKAGENAME) :: pkgname
1020 character(len=LENMEMPATH) :: mempath
1021 integer(I4B),
pointer :: inunit
1022 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1024 integer(I4B) :: indis = 0
1025 character(len=LENMEMPATH) :: mempathic =
''
1026 character(len=LENMEMPATH) :: mempathdfw =
''
1027 character(len=LENMEMPATH) :: mempathcxs =
''
1028 character(len=LENMEMPATH) :: mempathsto =
''
1034 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1035 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1036 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1037 call mem_setptr(inunits,
'INUNITS', model_mempath)
1039 do n = 1,
size(pkgtypes)
1042 pkgtype = pkgtypes(n)
1043 pkgname = pkgnames(n)
1044 mempath = mempaths(n)
1045 inunit => inunits(n)
1048 select case (pkgtype)
1051 call disv1d_cr(this%dis, this%name, mempath, indis, this%iout)
1054 call dis2d_cr(this%dis, this%name, mempath, indis, this%iout)
1057 call disv2d_cr(this%dis, this%name, mempath, indis, this%iout)
1060 mempathdfw = mempath
1063 mempathcxs = mempath
1066 mempathsto = mempath
1074 case (
'CHD6',
'FLW6',
'CDB6',
'ZDG6')
1076 bndpkgs(
size(bndpkgs)) = n
1083 if (this%inic > 0)
then
1084 call ic_cr(this%ic, this%name, mempathic, this%inic, this%iout, &
1087 call cxs_cr(this%cxs, this%name, mempathcxs, this%incxs, this%iout, &
1089 if (this%indfw > 0)
then
1090 call dfw_cr(this%dfw, this%name, mempathdfw, this%indfw, this%iout, &
1093 if (this%insto > 0)
then
1094 call sto_cr(this%sto, this%name, mempathsto, this%insto, this%iout, &
1097 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1101 call this%ftype_check(indis)
1103 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1121 if (this%iss == 1)
then
1123 write (
warnmsg,
'(a,a,a,i0,a)') &
1124 'SWF Model (', trim(this%name),
') is steady state for period ', &
1125 kper,
' and adaptive time stepping is active. Adaptive time &
1126 &stepping may not work properly for steady-state conditions.'
1138 integer(I4B) :: iasym
1140 class(
bndtype),
pointer :: packobj
1146 if (this%indfw > 0)
then
1151 do ip = 1, this%bndlist%Count()
1153 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
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 ...