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(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_log()
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 call pcp_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
875 pakname, mempath, this%dis, this%dfw, this%cxs)
877 call evp_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
878 pakname, mempath, this%dis, this%dfw, this%cxs)
880 write (
errmsg, *)
'Invalid package type: ', filtyp
887 do ip = 1, this%bndlist%Count()
889 if (packobj2%packName == pakname)
then
890 write (
errmsg,
'(a,a)')
'Cannot create package. Package name '// &
891 'already exists: ', trim(pakname)
905 integer(I4B),
intent(in) :: indis
911 'Discretization Package (DISV1D6 or DIS2D6) not specified.'
914 if (this%inic == 0 .and. this%indfw /= 0)
then
916 'Initial Conditions (IC6) must be specified if the Diffusive &
917 &Wave (DFW) package is used.'
920 if (this%indfw == 0)
then
921 write (
errmsg,
'(1x,a)') &
922 'DFW6 Package must be specified.'
925 if (this%incxs > 0)
then
926 if (this%dis%ndim /= 1)
then
927 write (
errmsg,
'(1x,a)') &
928 'CXS6 Package can only be used for one-dimensional discretization &
929 &package (DISV1D). Remove CXS6 Package from model or convert &
930 &discretization package to DISV1D.'
935 write (
errmsg,
'(a)')
'One or more required package(s) not specified &
936 &and/or there are package incompatibilities.'
952 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
954 pointer,
intent(inout) :: pkgtypes
956 pointer,
intent(inout) :: pkgnames
958 pointer,
intent(inout) :: mempaths
959 integer(I4B),
dimension(:),
contiguous, &
960 pointer,
intent(inout) :: inunits
962 integer(I4B) :: ipakid, ipaknum
963 character(len=LENFTYPE) :: pkgtype, bndptype
964 character(len=LENPACKAGENAME) :: pkgname
965 character(len=LENMEMPATH) :: mempath
966 integer(I4B),
pointer :: inunit
969 if (
allocated(bndpkgs))
then
974 do n = 1,
size(bndpkgs)
976 pkgtype = pkgtypes(bndpkgs(n))
977 pkgname = pkgnames(bndpkgs(n))
978 mempath = mempaths(bndpkgs(n))
979 inunit => inunits(bndpkgs(n))
981 if (bndptype /= pkgtype)
then
986 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
989 ipaknum = ipaknum + 1
1010 use swfdfwmodule,
only: dfw_cr
1019 pointer :: pkgtypes => null()
1021 pointer :: pkgnames => null()
1023 pointer :: mempaths => null()
1024 integer(I4B),
dimension(:),
contiguous, &
1025 pointer :: inunits => null()
1026 character(len=LENMEMPATH) :: model_mempath
1027 character(len=LENPACKAGETYPE) :: pkgtype
1028 character(len=LENPACKAGENAME) :: pkgname
1029 character(len=LENMEMPATH) :: mempath
1030 integer(I4B),
pointer :: inunit
1031 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1033 integer(I4B) :: indis = 0
1034 character(len=LENMEMPATH) :: mempathic =
''
1035 character(len=LENMEMPATH) :: mempathdfw =
''
1036 character(len=LENMEMPATH) :: mempathcxs =
''
1037 character(len=LENMEMPATH) :: mempathoc =
''
1038 character(len=LENMEMPATH) :: mempathsto =
''
1044 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1045 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1046 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1047 call mem_setptr(inunits,
'INUNITS', model_mempath)
1049 do n = 1,
size(pkgtypes)
1052 pkgtype = pkgtypes(n)
1053 pkgname = pkgnames(n)
1054 mempath = mempaths(n)
1055 inunit => inunits(n)
1058 select case (pkgtype)
1061 call disv1d_cr(this%dis, this%name, mempath, indis, this%iout)
1064 call dis2d_cr(this%dis, this%name, mempath, indis, this%iout)
1067 call disv2d_cr(this%dis, this%name, mempath, indis, this%iout)
1070 mempathdfw = mempath
1073 mempathcxs = mempath
1076 mempathsto = mempath
1086 case (
'CHD6',
'FLW6',
'CDB6',
'ZDG6',
'PCP6',
'EVP6')
1088 bndpkgs(
size(bndpkgs)) = n
1095 if (this%inic > 0)
then
1096 call ic_cr(this%ic, this%name, mempathic, this%inic, this%iout, &
1099 call cxs_cr(this%cxs, this%name, mempathcxs, this%incxs, this%iout, &
1101 if (this%indfw > 0)
then
1102 call dfw_cr(this%dfw, this%name, mempathdfw, this%indfw, this%iout, &
1105 if (this%insto > 0)
then
1106 call sto_cr(this%sto, this%name, mempathsto, this%insto, this%iout, &
1109 call oc_cr(this%oc, this%name, mempathoc, this%inoc, this%iout)
1113 call this%ftype_check(indis)
1115 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1133 if (this%iss == 1)
then
1135 write (
warnmsg,
'(a,a,a,i0,a)') &
1136 'SWF Model (', trim(this%name),
') is steady state for period ', &
1137 kper,
' and adaptive time stepping is active. Adaptive time &
1138 &stepping may not work properly for steady-state conditions.'
1150 integer(I4B) :: iasym
1152 class(
bndtype),
pointer :: packobj
1158 if (this%indfw > 0)
then
1163 do ip = 1, this%bndlist%Count()
1165 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 evaporation (EVP) package methods.
subroutine, public evp_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath, dis, dfw, cxs)
Create a Evaporation 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, input_mempath, inunit, iout)
@ brief Create SwfOcType
This module contains the precipitation (PCP) package methods.
subroutine, public pcp_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath, dis, dfw, cxs)
Create a Precipitation Package.
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 ...