50 use swfdfwmodule,
only: swfdfwtype
68 type(swfdfwtype),
pointer :: dfw => null()
74 integer(I4B),
pointer :: inic => null()
75 integer(I4B),
pointer :: indfw => null()
76 integer(I4B),
pointer :: incxs => null()
77 integer(I4B),
pointer :: insto => null()
78 integer(I4B),
pointer :: inobs => null()
79 integer(I4B),
pointer :: inoc => null()
80 integer(I4B),
pointer :: iss => null()
81 integer(I4B),
pointer :: inewtonur => null()
118 character(len=LENPACKAGETYPE),
dimension(SWF_NBASEPKG) :: &
120 'DFW6 ',
'CXS6 ',
'OC6 ', &
121 'IC6 ',
'OBS6 ',
'STO6 ']
129 character(len=LENPACKAGETYPE),
dimension(SWF_NMULTIPKG) ::
swf_multipkg
130 data swf_multipkg/
'FLW6 ',
'CHD6 ',
'CDB6 ',
'ZDG6 ',
' ', &
144 subroutine swf_cr(filename, id, modelname)
154 character(len=*),
intent(in) :: filename
155 integer(I4B),
intent(in) :: id
156 character(len=*),
intent(in) :: modelname
160 character(len=LENMEMPATH) :: input_mempath
161 character(len=LINELENGTH) :: lst_fname
171 call this%allocate_scalars(modelname)
176 this%filename = filename
177 this%name = modelname
178 this%macronym =
'SWF'
185 call mem_set_value(lst_fname,
'LIST', input_mempath, found%list)
186 call mem_set_value(this%inewton,
'NEWTON', input_mempath, found%newton)
187 call mem_set_value(this%inewtonur,
'UNDER_RELAXATION', input_mempath, &
188 found%under_relaxation)
189 call mem_set_value(this%iprpak,
'PRINT_INPUT', input_mempath, &
191 call mem_set_value(this%iprflow,
'PRINT_FLOWS', input_mempath, &
193 call mem_set_value(this%ipakcb,
'SAVE_FLOWS', input_mempath, found%save_flows)
196 call this%create_lstfile(lst_fname, filename, found%list, &
197 'SURFACE WATER FLOW MODEL (SWF)')
200 if (found%save_flows)
then
205 if (this%iout > 0)
then
206 call this%log_namfile_options(found)
213 call this%create_packages()
224 character(len=*),
intent(in) :: modelname
228 call this%NumericalModelType%allocate_scalars(modelname)
238 call mem_allocate(this%inewtonur,
'INEWTONUR', this%memoryPath)
261 call this%NumericalModelType%allocate_arrays()
266 if (this%indfw == 0)
then
268 call mem_allocate(this%x, this%dis%nodes,
'X', this%memoryPath)
269 call mem_allocate(this%rhs, this%dis%nodes,
'RHS', this%memoryPath)
270 call mem_allocate(this%ibound, this%dis%nodes,
'IBOUND', this%memoryPath)
271 do i = 1, this%dis%nodes
290 class(
bndtype),
pointer :: packobj
293 call this%dis%dis_df()
294 call this%dfw%dfw_df(this%dis)
296 call this%budget%budget_df(
niunit_swf,
'VOLUME',
'L**3')
299 this%neq = this%dis%nodes
300 this%nja = this%dis%nja
301 this%ia => this%dis%con%ia
302 this%ja => this%dis%con%ja
305 call this%allocate_arrays()
308 do ip = 1, this%bndlist%Count()
310 call packobj%bnd_df(this%dis%nodes, this%dis)
314 call this%obs%obs_df(this%iout, this%name,
'SWF', this%dis)
328 class(
bndtype),
pointer :: packobj
332 call this%dis%dis_ac(this%moffset, sparse)
338 do ip = 1, this%bndlist%Count()
340 call packobj%bnd_ac(this%moffset, sparse)
355 class(
bndtype),
pointer :: packobj
360 call this%dis%dis_mc(this%moffset, this%idxglo, matrix_sln)
366 do ip = 1, this%bndlist%Count()
368 call packobj%bnd_mc(this%moffset, matrix_sln)
381 integer(I4B),
dimension(:),
allocatable :: itemp
383 class(
bndtype),
pointer :: packobj
386 if (this%inic > 0)
call this%ic%ic_ar(this%x)
390 allocate (itemp(this%dis%nodes))
393 call this%dis%dis_ar(itemp)
394 if (this%indfw > 0)
call this%dfw%dfw_ar(this%ibound, this%x)
395 if (this%insto > 0)
call this%sto%sto_ar(this%dis, this%ibound)
396 if (this%inobs > 0)
call this%obs%swf_obs_ar(this%ic, this%x, this%flowja)
400 if (this%indfw > 0)
then
401 call this%oc%oc_ar(
'STAGE', this%x, this%dis,
dnodata)
403 call this%budget%set_ibudcsv(this%oc%ibudcsv)
406 do ip = 1, this%bndlist%Count()
408 call packobj%set_pointers(this%dis%nodes, this%ibound, this%x, &
409 this%xold, this%flowja)
411 call packobj%bnd_ar()
429 class(
bndtype),
pointer :: packobj
436 if (this%indfw > 0)
call this%dfw%dfw_rp()
437 if (this%inoc > 0)
call this%oc%oc_rp()
438 if (this%insto > 0)
call this%sto%sto_rp()
440 do ip = 1, this%bndlist%Count()
442 call packobj%bnd_rp()
443 call packobj%bnd_rp_obs()
447 call this%steady_period_check()
463 class(
bndtype),
pointer :: packobj
465 integer(I4B) :: irestore
466 integer(I4B) :: ip, n
471 if (irestore == 0)
then
474 do n = 1, this%dis%nodes
475 this%xold(n) = this%x(n)
480 do n = 1, this%dis%nodes
481 this%x(n) = this%xold(n)
486 if (this%indfw > 0)
call this%dfw%dfw_ad(irestore)
487 if (this%insto > 0)
call this%sto%sto_ad()
489 do ip = 1, this%bndlist%Count()
491 call packobj%bnd_ad()
493 call packobj%bnd_ck()
498 call this%obs%obs_ad()
508 integer(I4B),
intent(in) :: kiter
510 class(
bndtype),
pointer :: packobj
515 do ip = 1, this%bndlist%Count()
517 call packobj%bnd_cf()
525 subroutine swf_fc(this, kiter, matrix_sln, inwtflag)
528 integer(I4B),
intent(in) :: kiter
530 integer(I4B),
intent(in) :: inwtflag
532 class(
bndtype),
pointer :: packobj
534 integer(I4B) :: inwt, inwtpak
549 if (this%indfw > 0)
call this%dfw%dfw_fc(kiter, matrix_sln, this%idxglo, &
550 this%rhs, this%x, this%xold)
552 if (this%insto > 0)
then
553 call this%sto%sto_fc(kiter, this%xold, this%x, matrix_sln, &
554 this%idxglo, this%rhs)
557 do ip = 1, this%bndlist%Count()
559 call packobj%bnd_fc(this%rhs, this%ia, this%idxglo, matrix_sln)
563 if (this%indfw > 0)
then
565 call this%dfw%dfw_fn(kiter, matrix_sln, this%idxglo, this%rhs, this%x)
578 do ip = 1, this%bndlist%Count()
581 if (inwtflag == 1) inwtpak = packobj%inewton
582 if (inwtpak /= 0)
then
583 call packobj%bnd_fn(this%rhs, this%ia, this%idxglo, matrix_sln)
597 subroutine swf_nur(this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
602 integer(I4B),
intent(in) :: neqmod
603 real(DP),
dimension(neqmod),
intent(inout) :: x
604 real(DP),
dimension(neqmod),
intent(in) :: xtemp
605 real(DP),
dimension(neqmod),
intent(inout) :: dx
606 integer(I4B),
intent(inout) :: inewtonur
607 real(DP),
intent(inout) :: dxmax
608 integer(I4B),
intent(inout) :: locmax
612 class(
bndtype),
pointer :: packobj
618 if (this%inewton /= 0 .and. this%inewtonur /= 0)
then
619 if (this%indfw > 0)
then
620 call this%dfw%dfw_nur(neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
624 i0 = this%dis%nodes + 1
625 do ip = 1, this%bndlist%Count()
627 if (packobj%npakeq > 0)
then
628 i1 = i0 + packobj%npakeq - 1
629 call packobj%bnd_nur(packobj%npakeq, x(i0:i1), xtemp(i0:i1), &
630 dx(i0:i1), inewtonur, dxmax, locmax)
642 subroutine swf_cq(this, icnvg, isuppress_output)
646 integer(I4B),
intent(in) :: icnvg
647 integer(I4B),
intent(in) :: isuppress_output
651 class(
bndtype),
pointer :: packobj
658 do i = 1, this%dis%nja
659 this%flowja(i) =
dzero
661 if (this%indfw > 0)
call this%dfw%dfw_cq(this%x, this%xold, this%flowja)
662 if (this%insto > 0)
call this%sto%sto_cq(this%flowja, this%x, this%xold)
667 do ip = 1, this%bndlist%Count()
669 call packobj%bnd_cf()
670 call packobj%bnd_cq(this%x, this%flowja)
679 subroutine swf_bd(this, icnvg, isuppress_output)
684 integer(I4B),
intent(in) :: icnvg
685 integer(I4B),
intent(in) :: isuppress_output
688 class(
bndtype),
pointer :: packobj
699 call this%budget%reset()
700 if (this%insto > 0)
call this%sto%sto_bd(isuppress_output, this%budget)
701 if (this%indfw > 0)
call this%dfw%dfw_bd(isuppress_output, this%budget)
702 do ip = 1, this%bndlist%Count()
704 call packobj%bnd_bd(this%budget)
709 if (this%indfw > 0)
then
710 if (this%dfw%icalcvelocity /= 0)
then
711 call this%dfw%calc_velocity(this%flowja)
726 integer(I4B) :: idvsave
727 integer(I4B) :: idvprint
728 integer(I4B) :: icbcfl
729 integer(I4B) :: icbcun
730 integer(I4B) :: ibudfl
731 integer(I4B) :: ipflag
732 integer(I4B) :: icnvg = 1
740 if (this%oc%oc_save(
'QOUTFLOW')) idvsave = 1
741 if (this%oc%oc_print(
'QOUTFLOW')) idvprint = 1
742 if (this%oc%oc_save(
'BUDGET')) icbcfl = 1
743 if (this%oc%oc_print(
'BUDGET')) ibudfl = 1
744 icbcun = this%oc%oc_save_unit(
'BUDGET')
748 ibudfl = this%oc%set_print_flag(
'BUDGET', icnvg,
endofperiod)
749 idvprint = this%oc%set_print_flag(
'QOUTFLOW', icnvg,
endofperiod)
752 call this%swf_ot_obs()
755 call this%swf_ot_flow(icbcfl, ibudfl, icbcun)
758 call this%swf_ot_dv(idvsave, idvprint, ipflag)
761 call this%swf_ot_bdsummary(ibudfl, ipflag)
765 if (ipflag == 1)
call tdis_ot(this%iout)
773 class(
bndtype),
pointer :: packobj
777 call this%obs%obs_bd()
778 call this%obs%obs_ot()
781 if (this%indfw > 0)
then
782 call this%dfw%dfw_bd_obs()
783 call this%dfw%obs%obs_ot()
787 do ip = 1, this%bndlist%Count()
789 call packobj%bnd_bd_obs()
790 call packobj%bnd_ot_obs()
797 integer(I4B),
intent(in) :: icbcfl
798 integer(I4B),
intent(in) :: ibudfl
799 integer(I4B),
intent(in) :: icbcun
800 class(
bndtype),
pointer :: packobj
804 if (this%insto > 0)
then
805 call this%sto%sto_save_model_flows(icbcfl, icbcun)
807 if (this%indfw > 0)
then
808 call this%dfw%dfw_save_model_flows(this%flowja, icbcfl, icbcun)
810 do ip = 1, this%bndlist%Count()
812 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
816 do ip = 1, this%bndlist%Count()
818 call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
825 if (this%indfw > 0)
then
826 call this%dfw%dfw_print_model_flows(ibudfl, this%flowja)
828 do ip = 1, this%bndlist%Count()
830 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
834 do ip = 1, this%bndlist%Count()
836 call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
846 integer(I4B),
intent(in) :: idvsave
847 integer(I4B),
intent(in) :: idvprint
848 integer(I4B),
intent(inout) :: ipflag
849 class(
bndtype),
pointer :: packobj
853 do ip = 1, this%bndlist%Count()
855 call packobj%bnd_ot_dv(idvsave, idvprint)
859 call this%oc%oc_ot(ipflag)
868 integer(I4B),
intent(in) :: ibudfl
869 integer(I4B),
intent(inout) :: ipflag
870 class(
bndtype),
pointer :: packobj
875 do ip = 1, this%bndlist%Count()
877 call packobj%bnd_ot_bdsummary(
kstp,
kper, this%iout, ibudfl)
886 call this%budget%finalize_step(
delt)
887 if (ibudfl /= 0)
then
889 call this%budget%budget_ot(
kstp,
kper, this%iout)
893 call this%budget%writecsv(
totim)
907 class(
bndtype),
pointer :: packobj
914 call this%dis%dis_da()
915 if (this%insto > 0)
call this%sto%sto_da()
916 if (this%inic > 0)
call this%ic%ic_da()
917 if (this%indfw > 0)
call this%dfw%dfw_da()
918 call this%cxs%cxs_da()
919 call this%obs%obs_da()
921 call this%budget%budget_da()
924 deallocate (this%dis)
925 deallocate (this%budget)
926 deallocate (this%obs)
930 do ip = 1, this%bndlist%Count()
932 call packobj%bnd_da()
949 call this%NumericalModelType%model_da()
969 real(DP),
dimension(:, :),
intent(in) :: budterm
970 character(len=LENBUDTXT),
dimension(:),
intent(in) :: budtxt
971 character(len=*),
intent(in) :: rowlabel
973 call this%budget%addentry(budterm,
delt, budtxt, rowlabel=rowlabel)
992 character(len=*),
intent(in) :: filtyp
993 integer(I4B),
intent(in) :: ipakid
994 integer(I4B),
intent(in) :: ipaknum
995 character(len=*),
intent(in) :: pakname
996 character(len=*),
intent(in) :: mempath
997 integer(I4B),
intent(in) :: inunit
998 integer(I4B),
intent(in) :: iout
1000 class(
bndtype),
pointer :: packobj
1001 class(
bndtype),
pointer :: packobj2
1005 select case (filtyp)
1007 call flw_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
1009 packobj%ictMemPath =
''
1011 call chd_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
1015 call cdb_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
1016 pakname, mempath, this%dis, this%cxs, &
1017 this%dfw%lengthconv, this%dfw%timeconv)
1019 call zdg_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
1020 pakname, mempath, this%dis, this%cxs, this%dfw%unitconv)
1022 write (
errmsg, *)
'Invalid package type: ', filtyp
1029 do ip = 1, this%bndlist%Count()
1031 if (packobj2%packName == pakname)
then
1032 write (
errmsg,
'(a,a)')
'Cannot create package. Package name '// &
1033 'already exists: ', trim(pakname)
1048 integer(I4B),
intent(in) :: indis
1052 if (indis == 0)
then
1054 'Discretization Package (DISV1D6 or DIS2D6) not specified.'
1057 if (this%inic == 0 .and. this%indfw /= 0)
then
1059 'Initial Conditions (IC6) must be specified if the Diffusive &
1060 &Wave (DFW) package is used.'
1063 if (this%indfw == 0)
then
1064 write (
errmsg,
'(1x,a)') &
1065 'DFW6 Package must be specified.'
1069 write (
errmsg,
'(a)')
'One or more required package(s) not specified.'
1087 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
1089 pointer,
intent(inout) :: pkgtypes
1091 pointer,
intent(inout) :: pkgnames
1093 pointer,
intent(inout) :: mempaths
1094 integer(I4B),
dimension(:),
contiguous, &
1095 pointer,
intent(inout) :: inunits
1097 integer(I4B) :: ipakid, ipaknum
1098 character(len=LENFTYPE) :: pkgtype, bndptype
1099 character(len=LENPACKAGENAME) :: pkgname
1100 character(len=LENMEMPATH) :: mempath
1101 integer(I4B),
pointer :: inunit
1104 if (
allocated(bndpkgs))
then
1109 do n = 1,
size(bndpkgs)
1111 pkgtype = pkgtypes(bndpkgs(n))
1112 pkgname = pkgnames(bndpkgs(n))
1113 mempath = mempaths(bndpkgs(n))
1114 inunit => inunits(bndpkgs(n))
1116 if (bndptype /= pkgtype)
then
1121 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
1124 ipaknum = ipaknum + 1
1128 deallocate (bndpkgs)
1148 use swfdfwmodule,
only: dfw_cr
1157 pointer :: pkgtypes => null()
1159 pointer :: pkgnames => null()
1161 pointer :: mempaths => null()
1162 integer(I4B),
dimension(:),
contiguous, &
1163 pointer :: inunits => null()
1164 character(len=LENMEMPATH) :: model_mempath
1165 character(len=LENPACKAGETYPE) :: pkgtype
1166 character(len=LENPACKAGENAME) :: pkgname
1167 character(len=LENMEMPATH) :: mempath
1168 integer(I4B),
pointer :: inunit
1169 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1171 integer(I4B) :: indis = 0
1172 character(len=LENMEMPATH) :: mempathic =
''
1173 character(len=LENMEMPATH) :: mempathdfw =
''
1174 character(len=LENMEMPATH) :: mempathcxs =
''
1180 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1181 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1182 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1183 call mem_setptr(inunits,
'INUNITS', model_mempath)
1185 do n = 1,
size(pkgtypes)
1188 pkgtype = pkgtypes(n)
1189 pkgname = pkgnames(n)
1190 mempath = mempaths(n)
1191 inunit => inunits(n)
1194 select case (pkgtype)
1197 call disv1d_cr(this%dis, this%name, mempath, indis, this%iout)
1200 call dis2d_cr(this%dis, this%name, mempath, indis, this%iout)
1203 call disv2d_cr(this%dis, this%name, mempath, indis, this%iout)
1206 mempathdfw = mempath
1209 mempathcxs = mempath
1219 case (
'CHD6',
'FLW6',
'CDB6',
'ZDG6')
1221 bndpkgs(
size(bndpkgs)) = n
1228 if (this%inic > 0)
then
1229 call ic_cr(this%ic, this%name, mempathic, this%inic, this%iout, &
1232 call cxs_cr(this%cxs, this%name, mempathcxs, this%incxs, this%iout, &
1234 if (this%indfw > 0)
then
1235 call dfw_cr(this%dfw, this%name, mempathdfw, this%indfw, this%iout, &
1238 if (this%insto > 0)
then
1239 call sto_cr(this%sto, this%name, this%insto, this%iout, this%cxs)
1241 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1245 call this%ftype_check(indis)
1247 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1260 write (this%iout,
'(1x,a)')
'NAMEFILE OPTIONS:'
1262 if (found%print_input)
then
1263 write (this%iout,
'(4x,a)')
'STRESS PACKAGE INPUT WILL BE PRINTED '// &
1264 'FOR ALL MODEL STRESS PACKAGES'
1267 if (found%print_flows)
then
1268 write (this%iout,
'(4x,a)')
'PACKAGE FLOWS WILL BE PRINTED '// &
1269 'FOR ALL MODEL PACKAGES'
1272 if (found%save_flows)
then
1273 write (this%iout,
'(4x,a)') &
1274 'FLOWS WILL BE SAVED TO BUDGET FILE SPECIFIED IN OUTPUT CONTROL'
1277 write (this%iout,
'(1x,a)')
'END NAMEFILE OPTIONS:'
1295 if (this%iss == 1)
then
1297 write (
warnmsg,
'(a,a,a,i0,a)') &
1298 'SWF Model (', trim(this%name),
') is steady state for period ', &
1299 kper,
' and adaptive time stepping is active. Adaptive time &
1300 &stepping may not work properly for steady-state conditions.'
1313 integer(I4B) :: iasym
1315 class(
bndtype),
pointer :: packobj
1321 if (this%indfw > 0)
then
1326 do ip = 1, this%bndlist%Count()
1328 if (packobj%iasym /= 0) iasym = 1
logical(lgp) function, public isadaptiveperiod(kper)
@ brief Determine if period is adaptive
subroutine, public addbasemodeltolist(list, model)
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 budget_cr(this, name_model)
@ brief Create a new budget object
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.
type(listtype), public basemodellist
character(len=lenmempath) function create_mem_path(component, subcomponent, context)
returns the path to the memory object
subroutine, public memorylist_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.
Stream Network Flow (SWF) Module.
subroutine swf_ad(this)
Stream Network Flow Model Time Step Advance.
character(len=lenpackagetype), dimension(swf_nbasepkg), public swf_basepkg
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.
character(len=lenpackagetype), dimension(swf_nmultipkg), public swf_multipkg
subroutine swf_ot_obs(this)
subroutine allocate_scalars(this, modelname)
Allocate memory for scalar members.
integer(i4b), parameter, public swf_nbasepkg
SWF base package array descriptors.
subroutine steady_period_check(this)
Check for steady state period.
subroutine swf_ot_dv(this, idvsave, idvprint, ipflag)
subroutine log_namfile_options(this, found)
Write model namfile options to list file.
subroutine swf_mc(this, matrix_sln)
Map the positions of this models connections in the numerical solution coefficient matrix.
subroutine swf_ac(this, sparse)
Add the internal connections of this model to the sparse matrix.
subroutine swf_ot_bdsummary(this, ibudfl, ipflag)
integer(i4b) function swf_get_iasym(this)
return 1 if any package causes the matrix to be asymmetric. Otherwise return 0.
subroutine swf_nur(this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
under-relaxation
subroutine, public swf_cr(filename, id, modelname)
Create a new stream network flow model object.
subroutine swf_cq(this, icnvg, isuppress_output)
Calculate flow.
subroutine swf_da(this)
Deallocate.
subroutine swf_ot_flow(this, icbcfl, ibudfl, icbcun)
subroutine swf_ot(this)
Stream Network Flow Model Output.
subroutine swf_bd(this, icnvg, isuppress_output)
Model Budget.
integer(i4b), parameter, public swf_nmultipkg
SWF multi package array descriptors.
subroutine swf_fc(this, kiter, matrix_sln, inwtflag)
Fill coefficients.
subroutine allocate_arrays(this)
Allocate memory for scalar members.
subroutine swf_rp(this)
Stream Network Flow Model Read and Prepare.
subroutine ftype_check(this, indis)
Check to make sure required input files have been specified.
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, 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 ...