MODFLOW 6  version 6.7.0.dev0
USGS Modular Hydrologic Model
swfmodule Module Reference

Surface Water Flow (SWF) Module.

Data Types

type  swfmodeltype
 

Functions/Subroutines

subroutine initialize (this, modelftype, filename, id, modelname)
 Initialize common swf members. More...
 
subroutine allocate_scalars (this, modelname)
 Allocate memory for scalar members. More...
 
subroutine allocate_arrays (this)
 Allocate memory for scalar members. More...
 
subroutine swf_df (this)
 Define packages of the model. More...
 
subroutine swf_ac (this, sparse)
 Add the internal connections of this model to the sparse matrix. More...
 
subroutine swf_mc (this, matrix_sln)
 Map the positions of this models connections in the. More...
 
subroutine swf_ar (this)
 SWF Allocate and Read. More...
 
subroutine swf_rp (this)
 Surface Water Flow Model Read and Prepare. More...
 
subroutine swf_ad (this)
 Surface Water Flow Model Time Step Advance. More...
 
subroutine swf_cf (this, kiter)
 Calculate coefficients. More...
 
subroutine swf_fc (this, kiter, matrix_sln, inwtflag)
 Fill coefficients. More...
 
subroutine swf_nur (this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
 under-relaxation More...
 
subroutine swf_cq (this, icnvg, isuppress_output)
 Calculate flow. More...
 
subroutine swf_bd (this, icnvg, isuppress_output)
 Model Budget. More...
 
subroutine swf_ot (this)
 Surface Water Flow Model Output. More...
 
subroutine swf_ot_obs (this)
 Surface Water Flow Model output observations. More...
 
subroutine swf_ot_flow (this, icbcfl, ibudfl, icbcun)
 Surface Water Flow Model output flows. More...
 
subroutine swf_ot_dv (this, idvsave, idvprint, ipflag)
 Surface Water Flow Model output dependent variable. More...
 
subroutine swf_ot_bdsummary (this, ibudfl, ipflag)
 Surface Water Flow Model output budget summary. More...
 
subroutine swf_da (this)
 Deallocate. More...
 
subroutine swf_bdentry (this, budterm, budtxt, rowlabel)
 Surface Flow Model Budget Entry. More...
 
subroutine package_create (this, filtyp, ipakid, ipaknum, pakname, mempath, inunit, iout)
 Create boundary condition packages for this model. More...
 
subroutine ftype_check (this, indis)
 Check to make sure required input files have been specified. More...
 
subroutine create_bndpkgs (this, bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
 Source package info and begin to process. More...
 
subroutine create_packages (this)
 Source package info and begin to process. More...
 
subroutine steady_period_check (this)
 Check for steady state period. More...
 
integer(i4b) function swf_get_iasym (this)
 return 1 if any package causes the matrix to be asymmetric. More...
 

Variables

integer(i4b), parameter swf_nbasepkg = 9
 
integer(i4b), parameter swf_nmultipkg = 50
 
integer(i4b), parameter niunit_swf = SWF_NBASEPKG + SWF_NMULTIPKG
 

Function/Subroutine Documentation

◆ allocate_arrays()

subroutine swfmodule::allocate_arrays ( class(swfmodeltype this)
private

Definition at line 143 of file swf.f90.

144  ! modules
145  ! dummy
146  class(SwfModelType) :: this
147  integer(I4B) :: i
148 
149  ! allocate members from parent class
150  call this%NumericalModelType%allocate_arrays()
151 
152  if (this%indfw == 0) then
153  ! explicit model, so these must be manually allocated (not used)
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
158  this%x(i) = dzero
159  this%rhs(i) = dzero
160  this%ibound(i) = 1
161  end do
162  end if
163 

◆ allocate_scalars()

subroutine swfmodule::allocate_scalars ( class(swfmodeltype this,
character(len=*), intent(in)  modelname 
)
private

Definition at line 110 of file swf.f90.

111  ! modules
112  ! dummy
113  class(SwfModelType) :: this
114  character(len=*), intent(in) :: modelname
115 
116  ! allocate members from parent class
117  call this%NumericalModelType%allocate_scalars(modelname)
118 
119  ! allocate members that are part of model class
120  call mem_allocate(this%inic, 'INIC', this%memoryPath)
121  call mem_allocate(this%indfw, 'INDFW', this%memoryPath)
122  call mem_allocate(this%incxs, 'INCXS', this%memoryPath)
123  call mem_allocate(this%insto, 'INSTO', this%memoryPath)
124  call mem_allocate(this%inobs, 'INOBS', this%memoryPath)
125  call mem_allocate(this%inoc, 'INOC', this%memoryPath)
126  call mem_allocate(this%iss, 'ISS', this%memoryPath)
127  call mem_allocate(this%inewtonur, 'INEWTONUR', this%memoryPath)
128 
129  ! initialize
130  this%inic = 0
131  this%indfw = 0
132  this%incxs = 0
133  this%insto = 0
134  this%inobs = 0
135  this%inoc = 0
136  this%iss = 1 !default is steady-state (i.e., no STO package)
137  this%inewtonur = 0
138 

◆ create_bndpkgs()

subroutine swfmodule::create_bndpkgs ( class(swfmodeltype this,
integer(i4b), dimension(:), intent(inout), allocatable  bndpkgs,
type(characterstringtype), dimension(:), intent(inout), pointer, contiguous  pkgtypes,
type(characterstringtype), dimension(:), intent(inout), pointer, contiguous  pkgnames,
type(characterstringtype), dimension(:), intent(inout), pointer, contiguous  mempaths,
integer(i4b), dimension(:), intent(inout), pointer, contiguous  inunits 
)
private

Definition at line 936 of file swf.f90.

938  ! modules
941  ! dummy
942  class(SwfModelType) :: this
943  integer(I4B), dimension(:), allocatable, intent(inout) :: bndpkgs
944  type(CharacterStringType), dimension(:), contiguous, &
945  pointer, intent(inout) :: pkgtypes
946  type(CharacterStringType), dimension(:), contiguous, &
947  pointer, intent(inout) :: pkgnames
948  type(CharacterStringType), dimension(:), contiguous, &
949  pointer, intent(inout) :: mempaths
950  integer(I4B), dimension(:), contiguous, &
951  pointer, intent(inout) :: inunits
952  ! local
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
958  integer(I4B) :: n
959 
960  if (allocated(bndpkgs)) then
961 
962  ! create stress packages
963  ipakid = 1
964  bndptype = ''
965  do n = 1, size(bndpkgs)
966  !
967  pkgtype = pkgtypes(bndpkgs(n))
968  pkgname = pkgnames(bndpkgs(n))
969  mempath = mempaths(bndpkgs(n))
970  inunit => inunits(bndpkgs(n))
971  !
972  if (bndptype /= pkgtype) then
973  ipaknum = 1
974  bndptype = pkgtype
975  end if
976  !
977  call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
978  inunit, this%iout)
979  ipakid = ipakid + 1
980  ipaknum = ipaknum + 1
981  end do
982 
983  ! cleanup
984  deallocate (bndpkgs)
985  end if
986 
This module contains simulation constants.
Definition: Constants.f90:9
integer(i4b), parameter lenpackagename
maximum length of the package name
Definition: Constants.f90:23
This class is used to store a single deferred-length character string. It was designed to work in an ...
Definition: CharString.f90:23

◆ create_packages()

subroutine swfmodule::create_packages ( class(swfmodeltype this)

Definition at line 991 of file swf.f90.

992  ! modules
998  use disv1dmodule, only: disv1d_cr
999  use dis2dmodule, only: dis2d_cr
1000  use disv2dmodule, only: disv2d_cr
1001  use swfdfwmodule, only: dfw_cr
1002  use swfcxsmodule, only: cxs_cr
1003  use swfstomodule, only: sto_cr
1004  use swficmodule, only: ic_cr
1005  use swfocmodule, only: oc_cr
1006  ! dummy
1007  class(SwfModelType) :: this
1008  ! local
1009  type(CharacterStringType), dimension(:), contiguous, &
1010  pointer :: pkgtypes => null()
1011  type(CharacterStringType), dimension(:), contiguous, &
1012  pointer :: pkgnames => null()
1013  type(CharacterStringType), dimension(:), contiguous, &
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
1023  integer(I4B) :: n
1024  integer(I4B) :: indis = 0 ! DIS enabled flag
1025  character(len=LENMEMPATH) :: mempathic = ''
1026  character(len=LENMEMPATH) :: mempathdfw = ''
1027  character(len=LENMEMPATH) :: mempathcxs = ''
1028  character(len=LENMEMPATH) :: mempathsto = ''
1029 
1030  ! set input model memory path
1031  model_mempath = create_mem_path(component=this%name, context=idm_context)
1032 
1033  ! set pointers to model path package info
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)
1038 
1039  do n = 1, size(pkgtypes)
1040 
1041  ! attributes for this input package
1042  pkgtype = pkgtypes(n)
1043  pkgname = pkgnames(n)
1044  mempath = mempaths(n)
1045  inunit => inunits(n)
1046 
1047  ! create dis package as it is a prerequisite for other packages
1048  select case (pkgtype)
1049  case ('DISV1D6')
1050  indis = 1
1051  call disv1d_cr(this%dis, this%name, mempath, indis, this%iout)
1052  case ('DIS2D6')
1053  indis = 1
1054  call dis2d_cr(this%dis, this%name, mempath, indis, this%iout)
1055  case ('DISV2D6')
1056  indis = 1
1057  call disv2d_cr(this%dis, this%name, mempath, indis, this%iout)
1058  case ('DFW6')
1059  this%indfw = 1
1060  mempathdfw = mempath
1061  case ('CXS6')
1062  this%incxs = 1
1063  mempathcxs = mempath
1064  case ('STO6')
1065  this%insto = 1
1066  mempathsto = mempath
1067  case ('IC6')
1068  this%inic = 1
1069  mempathic = mempath
1070  case ('OC6')
1071  this%inoc = inunit
1072  case ('OBS6')
1073  this%inobs = inunit
1074  case ('CHD6', 'FLW6', 'CDB6', 'ZDG6')
1075  call expandarray(bndpkgs)
1076  bndpkgs(size(bndpkgs)) = n
1077  case default
1078  ! TODO
1079  end select
1080  end do
1081 
1082  ! Create packages that are tied directly to model
1083  if (this%inic > 0) then
1084  call ic_cr(this%ic, this%name, mempathic, this%inic, this%iout, &
1085  this%dis)
1086  end if
1087  call cxs_cr(this%cxs, this%name, mempathcxs, this%incxs, this%iout, &
1088  this%dis)
1089  if (this%indfw > 0) then
1090  call dfw_cr(this%dfw, this%name, mempathdfw, this%indfw, this%iout, &
1091  this%cxs)
1092  end if
1093  if (this%insto > 0) then
1094  call sto_cr(this%sto, this%name, mempathsto, this%insto, this%iout, &
1095  this%cxs)
1096  end if
1097  call oc_cr(this%oc, this%name, this%inoc, this%iout)
1098  call swf_obs_cr(this%obs, this%inobs)
1099 
1100  ! Check to make sure that required ftype's have been specified
1101  call this%ftype_check(indis)
1102 
1103  call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1104 
integer(i4b), parameter linelength
maximum length of a standard line
Definition: Constants.f90:45
subroutine, public dis2d_cr(dis, name_model, input_mempath, inunit, iout)
Create a new structured discretization object.
Definition: Dis2d.f90:92
subroutine, public disv1d_cr(dis, name_model, input_mempath, inunit, iout)
Definition: Disv1d.f90:89
subroutine, public disv2d_cr(dis, name_model, input_mempath, inunit, iout)
Create a new discretization by vertices object.
Definition: Disv2d.f90:94
This module contains simulation variables.
Definition: SimVariables.f90:9
character(len=linelength) idm_context
subroutine, public cxs_cr(pobj, name_model, input_mempath, inunit, iout, dis)
create package
Definition: swf-cxs.f90:62
subroutine, public ic_cr(ic, name_model, input_mempath, inunit, iout, dis)
Create a new initial conditions object.
Definition: swf-ic.f90:32
subroutine, public oc_cr(ocobj, name_model, inunit, iout)
@ brief Create SwfOcType
Definition: swf-oc.f90:30
This module contains the storage package methods.
Definition: swf-sto.f90:7
subroutine, public sto_cr(stoobj, name_model, mempath, inunit, iout, cxs)
@ brief Create a new package object
Definition: swf-sto.f90:71
Here is the call graph for this function:

◆ ftype_check()

subroutine swfmodule::ftype_check ( class(swfmodeltype this,
integer(i4b), intent(in)  indis 
)

Definition at line 892 of file swf.f90.

893  ! modules
894  ! dummy
895  class(SwfModelType) :: this
896  integer(I4B), intent(in) :: indis
897  ! local
898 
899  ! Check for required packages. Stop if not present.
900  if (indis == 0) then
901  write (errmsg, '(a)') &
902  'Discretization Package (DISV1D6 or DIS2D6) not specified.'
903  call store_error(errmsg)
904  end if
905  if (this%inic == 0 .and. this%indfw /= 0) then
906  write (errmsg, '(a)') &
907  'Initial Conditions (IC6) must be specified if the Diffusive &
908  &Wave (DFW) package is used.'
909  call store_error(errmsg)
910  end if
911  if (this%indfw == 0) then
912  write (errmsg, '(1x,a)') &
913  'DFW6 Package must be specified.'
914  call store_error(errmsg)
915  end if
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.'
922  call store_error(errmsg)
923  end if
924  end if
925  if (count_errors() > 0) then
926  write (errmsg, '(a)') 'One or more required package(s) not specified &
927  &and/or there are package incompatibilities.'
928  call store_error(errmsg)
929  call store_error_filename(this%filename)
930  end if
931 
Here is the call graph for this function:

◆ initialize()

subroutine swfmodule::initialize ( class(swfmodeltype this,
character(len=*), intent(in)  modelftype,
character(len=*), intent(in)  filename,
integer(i4b), intent(in)  id,
character(len=*), intent(in)  modelname 
)
private
Parameters
[in]modelftypeabbreviation for model type (CHF or OLF)
[in]filenameinput file
[in]idconsecutive model number listed in mfsim.nam
[in]modelnamename of the model

Definition at line 84 of file swf.f90.

85  ! modules
86  ! dummy
87  class(SwfModelType) :: this
88  character(len=*), intent(in) :: modelftype !< abbreviation for model type (CHF or OLF)
89  character(len=*), intent(in) :: filename !< input file
90  integer(I4B), intent(in) :: id !< consecutive model number listed in mfsim.nam
91  character(len=*), intent(in) :: modelname !< name of the model
92  ! local
93 
94  ! Set memory path before allocation in memory manager can be done
95  this%memoryPath = create_mem_path(modelname)
96 
97  ! allocate scalars
98  call this%allocate_scalars(modelname)
99 
100  ! Assign values
101  this%filename = filename
102  this%name = modelname
103  this%macronym = trim(modelftype)
104  this%id = id
105 
Here is the call graph for this function:

◆ package_create()

subroutine swfmodule::package_create ( class(swfmodeltype this,
character(len=*), intent(in)  filtyp,
integer(i4b), intent(in)  ipakid,
integer(i4b), intent(in)  ipaknum,
character(len=*), intent(in)  pakname,
character(len=*), intent(in)  mempath,
integer(i4b), intent(in)  inunit,
integer(i4b), intent(in)  iout 
)

Definition at line 832 of file swf.f90.

834  ! modules
835  use swfflwmodule, only: flw_create
836  use chdmodule, only: chd_create
837  use swfcdbmodule, only: cdb_create
838  use swfzdgmodule, only: zdg_create
839  ! dummy
840  class(SwfModelType) :: this
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
848  ! local
849  class(BndType), pointer :: packobj
850  class(BndType), pointer :: packobj2
851  integer(I4B) :: ip
852 
853  ! This part creates the package object
854  select case (filtyp)
855  case ('FLW6')
856  call flw_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
857  pakname, mempath)
858  packobj%ictMemPath = ''
859  case ('CHD6')
860  call chd_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
861  pakname, mempath)
862  packobj%ictMemPath = create_mem_path(this%name, 'DFW')
863  case ('CDB6')
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)
867  case ('ZDG6')
868  call zdg_create(packobj, ipakid, ipaknum, inunit, iout, this%name, &
869  pakname, mempath, this%dis, this%cxs, this%dfw%unitconv)
870  case default
871  write (errmsg, *) 'Invalid package type: ', filtyp
872  call store_error(errmsg)
873  call store_error_filename(this%filename)
874  end select
875 
876  ! Check to make sure that the package name is unique, then store a
877  ! pointer to the package in the model bndlist
878  do ip = 1, this%bndlist%Count()
879  packobj2 => getbndfromlist(this%bndlist, ip)
880  if (packobj2%packName == pakname) then
881  write (errmsg, '(a,a)') 'Cannot create package. Package name '// &
882  'already exists: ', trim(pakname)
883  call store_error(errmsg, terminate=.true.)
884  end if
885  end do
886  call addbndtolist(this%bndlist, packobj)
887 
subroutine, public chd_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath)
Create a new constant head package.
Definition: gwf-chd.f90:56
This module contains the CDB package methods.
Definition: swf-cdb.f90:7
subroutine, public cdb_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath, dis, cxs, lengthconv, timeconv)
@ brief Create a new package object
Definition: swf-cdb.f90:72
This module contains the FLW package methods.
Definition: swf-flw.f90:7
subroutine, public flw_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath)
@ brief Create a new package object
Definition: swf-flw.f90:60
This module contains the ZDG package methods.
Definition: swf-zdg.f90:7
subroutine, public zdg_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath, dis, cxs, unitconv)
@ brief Create a new package object
Definition: swf-zdg.f90:75
Here is the call graph for this function:

◆ steady_period_check()

subroutine swfmodule::steady_period_check ( class(swfmodeltype this)

Write warning message if steady state period and adaptive time stepping is

Definition at line 1112 of file swf.f90.

1113  ! modules
1114  use tdismodule, only: kper
1116  use simvariablesmodule, only: warnmsg
1117  use simmodule, only: store_warning
1118  ! dummy
1119  class(SwfModelType) :: this
1120 
1121  if (this%iss == 1) then
1122  if (isadaptiveperiod(kper)) 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.'
1127  call store_warning(warnmsg)
1128  end if
1129  end if
1130 
logical(lgp) function, public isadaptiveperiod(kper)
@ brief Determine if period is adaptive
Definition: ats.f90:45
This module contains simulation methods.
Definition: Sim.f90:10
subroutine, public store_warning(msg, substring)
Store warning message.
Definition: Sim.f90:236
character(len=maxcharlen) warnmsg
warning message string
integer(i4b), pointer, public kper
current stress period number
Definition: tdis.f90:23
Here is the call graph for this function:

◆ swf_ac()

subroutine swfmodule::swf_ac ( class(swfmodeltype this,
type(sparsematrix), intent(inout)  sparse 
)
private

Definition at line 204 of file swf.f90.

205  ! modules
206  use sparsemodule, only: sparsematrix
207  ! dummy
208  class(SwfModelType) :: this
209  type(sparsematrix), intent(inout) :: sparse
210  ! local
211  class(BndType), pointer :: packobj
212  integer(I4B) :: ip
213 
214  ! Add the primary grid connections of this model to sparse
215  call this%dis%dis_ac(this%moffset, sparse)
216 
217  ! Add any additional connections
218  ! none
219 
220  ! Add any package connections
221  do ip = 1, this%bndlist%Count()
222  packobj => getbndfromlist(this%bndlist, ip)
223  call packobj%bnd_ac(this%moffset, sparse)
224  end do
225 
Here is the call graph for this function:

◆ swf_ad()

subroutine swfmodule::swf_ad ( class(swfmodeltype this)

Definition at line 326 of file swf.f90.

327  ! modules
329  ! dummy
330  class(SwfModelType) :: this
331  class(BndType), pointer :: packobj
332  ! local
333  integer(I4B) :: irestore
334  integer(I4B) :: ip, n
335 
336  ! Reset state variable
337  irestore = 0
338  if (ifailedstepretry > 0) irestore = 1
339  if (irestore == 0) then
340 
341  ! copy x into xold
342  do n = 1, this%dis%nodes
343  this%xold(n) = this%x(n)
344  end do
345  else
346 
347  ! copy xold into x if this time step is a redo
348  do n = 1, this%dis%nodes
349  this%x(n) = this%xold(n)
350  end do
351  end if
352 
353  ! Advance
354  if (this%indfw > 0) call this%dfw%dfw_ad(irestore)
355  if (this%insto > 0) call this%sto%sto_ad()
356  !if (this%inmvr > 0) call this%mvr%mvr_ad()
357  do ip = 1, this%bndlist%Count()
358  packobj => getbndfromlist(this%bndlist, ip)
359  call packobj%bnd_ad()
360  if (isimcheck > 0) then
361  call packobj%bnd_ck()
362  end if
363  end do
364 
365  ! Push simulated values to preceding time/subtime step
366  call this%obs%obs_ad()
367 
integer(i4b) isimcheck
simulation input check flag (1) to check input, (0) to ignore checks
integer(i4b) ifailedstepretry
current retry for this time step
Here is the call graph for this function:

◆ swf_ar()

subroutine swfmodule::swf_ar ( class(swfmodeltype this)
private

Definition at line 255 of file swf.f90.

256  ! dummy
257  class(SwfModelType) :: this
258  ! locals
259  integer(I4B), dimension(:), allocatable :: itemp
260  integer(I4B) :: ip
261  class(BndType), pointer :: packobj
262 
263  ! Allocate and read modules attached to model
264  if (this%inic > 0) call this%ic%ic_ar(this%x)
265 
266  ! need temporary integer variable to pass to dis_ar
267  ! TODO: this should be generalized so dis_ar doesn't have to have it
268  allocate (itemp(this%dis%nodes))
269 
270  ! Call dis_ar to write binary grid file
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)
275  deallocate (itemp)
276 
277  ! set up output control
278  if (this%indfw > 0) then
279  call this%oc%oc_ar('STAGE', this%x, this%dis, dnodata)
280  end if
281  call this%budget%set_ibudcsv(this%oc%ibudcsv)
282 
283  ! Package input files now open, so allocate and read
284  do ip = 1, this%bndlist%Count()
285  packobj => getbndfromlist(this%bndlist, ip)
286  call packobj%set_pointers(this%dis%nodes, this%ibound, this%x, &
287  this%xold, this%flowja)
288  ! Read and allocate package
289  call packobj%bnd_ar()
290  end do
291 
Here is the call graph for this function:

◆ swf_bd()

subroutine swfmodule::swf_bd ( class(swfmodeltype this,
integer(i4b), intent(in)  icnvg,
integer(i4b), intent(in)  isuppress_output 
)
private

Definition at line 535 of file swf.f90.

536  ! modules
537  use sparsemodule, only: csr_diagsum
538  ! dummy
539  class(SwfModelType) :: this
540  integer(I4B), intent(in) :: icnvg
541  integer(I4B), intent(in) :: isuppress_output
542  ! local
543  integer(I4B) :: ip
544  class(BndType), pointer :: packobj
545 
546  ! Finalize calculation of flowja by adding face flows to the diagonal.
547  ! This results in the flow residual being stored in the diagonal
548  ! position for each cell.
549  call csr_diagsum(this%dis%con%ia, this%flowja)
550 
551  ! Budget routines (start by resetting). Sole purpose of this section
552  ! is to add in and outs to model budget. All ins and out for a model
553  ! should be added here to this%budget. In a subsequent exchange call,
554  ! exchange flows might also be added.
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()
559  packobj => getbndfromlist(this%bndlist, ip)
560  call packobj%bnd_bd(this%budget)
561  end do
562 
563  ! dfw velocities have to be calculated here, after swf-swf exchanges
564  ! have passed in their contributions from exg_cq()
565  if (this%indfw > 0) then
566  if (this%dfw%icalcvelocity /= 0) then
567  call this%dfw%calc_velocity(this%flowja)
568  end if
569  end if
570 
subroutine csr_diagsum(ia, flowja)
Definition: Sparse.f90:263
Here is the call graph for this function:

◆ swf_bdentry()

subroutine swfmodule::swf_bdentry ( class(swfmodeltype this,
real(dp), dimension(:, :), intent(in)  budterm,
character(len=lenbudtxt), dimension(:), intent(in)  budtxt,
character(len=*), intent(in)  rowlabel 
)

This subroutine adds a budget entry to the flow budget. It was added as a method for the swf model object so that the exchange object could add its

Definition at line 816 of file swf.f90.

817  ! modules
818  use constantsmodule, only: lenbudtxt
819  use tdismodule, only: delt
820  ! dummy
821  class(SwfModelType) :: this
822  real(DP), dimension(:, :), intent(in) :: budterm
823  character(len=LENBUDTXT), dimension(:), intent(in) :: budtxt
824  character(len=*), intent(in) :: rowlabel
825 
826  call this%budget%addentry(budterm, delt, budtxt, rowlabel=rowlabel)
827 
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
Definition: Constants.f90:37
real(dp), pointer, public delt
length of the current time step
Definition: tdis.f90:29

◆ swf_cf()

subroutine swfmodule::swf_cf ( class(swfmodeltype this,
integer(i4b), intent(in)  kiter 
)

Definition at line 372 of file swf.f90.

373  ! dummy
374  class(SwfModelType) :: this
375  integer(I4B), intent(in) :: kiter
376  ! local
377  class(BndType), pointer :: packobj
378  integer(I4B) :: ip
379 
380  ! Call package cf routines
381  !if (this%indfw > 0) call this%dfw%dfw_cf(kiter, this%dis%nodes, this%x)
382  do ip = 1, this%bndlist%Count()
383  packobj => getbndfromlist(this%bndlist, ip)
384  call packobj%bnd_cf()
385  end do
386 
Here is the call graph for this function:

◆ swf_cq()

subroutine swfmodule::swf_cq ( class(swfmodeltype this,
integer(i4b), intent(in)  icnvg,
integer(i4b), intent(in)  isuppress_output 
)

Definition at line 500 of file swf.f90.

501  ! modules
502  ! dummy
503  class(SwfModelType) :: this
504  integer(I4B), intent(in) :: icnvg
505  integer(I4B), intent(in) :: isuppress_output
506  ! local
507  integer(I4B) :: i
508  integer(I4B) :: ip
509  class(BndType), pointer :: packobj
510 
511  ! Construct the flowja array. Flowja is calculated each time, even if
512  ! output is suppressed. (flowja is positive into a cell.) The diagonal
513  ! position of the flowja array will contain the flow residual after
514  ! these routines are called, so each package is responsible for adding
515  ! its flow to this diagonal position.
516  do i = 1, this%dis%nja
517  this%flowja(i) = dzero
518  end do
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)
521 
522  ! Go through packages and call cq routines. cf() routines are called
523  ! first to regenerate non-linear terms to be consistent with the final
524  ! head solution.
525  do ip = 1, this%bndlist%Count()
526  packobj => getbndfromlist(this%bndlist, ip)
527  call packobj%bnd_cf()
528  call packobj%bnd_cq(this%x, this%flowja)
529  end do
530 
Here is the call graph for this function:

◆ swf_da()

subroutine swfmodule::swf_da ( class(swfmodeltype this)

Definition at line 756 of file swf.f90.

757  ! modules
761  ! dummy
762  class(SwfModelType) :: this
763  ! local
764  integer(I4B) :: ip
765  class(BndType), pointer :: packobj
766 
767  ! Deallocate idm memory
768  call memorystore_remove(this%name, 'NAM', idm_context)
769  call memorystore_remove(component=this%name, context=idm_context)
770 
771  ! Internal flow packages deallocate
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()
778  call this%oc%oc_da()
779  call this%budget%budget_da()
780 
781  ! Internal package objects
782  deallocate (this%dis)
783  deallocate (this%budget)
784  deallocate (this%obs)
785  deallocate (this%oc)
786 
787  ! Boundary packages
788  do ip = 1, this%bndlist%Count()
789  packobj => getbndfromlist(this%bndlist, ip)
790  call packobj%bnd_da()
791  deallocate (packobj)
792  end do
793 
794  ! Scalars
795  call mem_deallocate(this%inic)
796  call mem_deallocate(this%indfw)
797  call mem_deallocate(this%incxs)
798  call mem_deallocate(this%insto)
799  call mem_deallocate(this%inobs)
800  call mem_deallocate(this%inoc)
801  call mem_deallocate(this%iss)
802  call mem_deallocate(this%inewtonur)
803 
804  ! Arrays
805 
806  ! NumericalModelType
807  call this%NumericalModelType%model_da()
808 
subroutine, public memorystore_remove(component, subcomponent, context)
Here is the call graph for this function:

◆ swf_df()

subroutine swfmodule::swf_df ( class(swfmodeltype this)
private

Definition at line 168 of file swf.f90.

169  ! modules
170  ! dummy
171  class(SwfModelType) :: this
172  ! local
173  integer(I4B) :: ip
174  class(BndType), pointer :: packobj
175 
176  ! call package df routines
177  call this%dis%dis_df()
178  call this%dfw%dfw_df(this%dis)
179  call this%oc%oc_df()
180  call this%budget%budget_df(niunit_swf, 'VOLUME', 'L**3')
181 
182  ! set model sizes
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
187 
188  ! Allocate model arrays, now that neq and nja are known
189  call this%allocate_arrays()
190 
191  ! Define packages and assign iout for time series managers
192  do ip = 1, this%bndlist%Count()
193  packobj => getbndfromlist(this%bndlist, ip)
194  call packobj%bnd_df(this%dis%nodes, this%dis)
195  end do
196 
197  ! Store information needed for observations
198  call this%obs%obs_df(this%iout, this%name, 'SWF', this%dis)
199 
Here is the call graph for this function:

◆ swf_fc()

subroutine swfmodule::swf_fc ( class(swfmodeltype this,
integer(i4b), intent(in)  kiter,
class(matrixbasetype), pointer  matrix_sln,
integer(i4b), intent(in)  inwtflag 
)
private

Definition at line 391 of file swf.f90.

392  ! dummy
393  class(SwfModelType) :: this
394  integer(I4B), intent(in) :: kiter
395  class(MatrixBaseType), pointer :: matrix_sln
396  integer(I4B), intent(in) :: inwtflag
397  ! local
398  class(BndType), pointer :: packobj
399  integer(I4B) :: ip
400  integer(I4B) :: inwt, inwtpak
401 
402  ! newton flags
403  inwt = inwtflag
404  ! if (inwtflag == 1) inwt = this%dfw%inewton
405  ! inwtsto = inwtflag
406  ! if (this%insto > 0) then
407  ! if (inwtflag == 1) inwtsto = this%sto%inewton
408  ! end if
409  ! inwtcsub = inwtflag
410  ! if (this%incsub > 0) then
411  ! if (inwtflag == 1) inwtcsub = this%csub%inewton
412  ! end if
413 
414  ! Fill standard conductance terms
415  if (this%indfw > 0) call this%dfw%dfw_fc(kiter, matrix_sln, this%idxglo, &
416  this%rhs, this%x, this%xold)
417  ! storage
418  if (this%insto > 0) then
419  call this%sto%sto_fc(kiter, this%xold, this%x, matrix_sln, &
420  this%idxglo, this%rhs)
421  end if
422  ! if (this%inmvr > 0) call this%mvr%mvr_fc()
423  do ip = 1, this%bndlist%Count()
424  packobj => getbndfromlist(this%bndlist, ip)
425  call packobj%bnd_fc(this%rhs, this%ia, this%idxglo, matrix_sln)
426  end do
427 
428  !--Fill newton terms
429  if (this%indfw > 0) then
430  if (inwt /= 0) then
431  call this%dfw%dfw_fn(kiter, matrix_sln, this%idxglo, this%rhs, this%x)
432  end if
433  end if
434 
435  ! Fill newton terms for storage
436  ! if (this%insto > 0) then
437  ! if (inwtsto /= 0) then
438  ! call this%sto%sto_fn(kiter, this%xold, this%x, matrix_sln, &
439  ! this%idxglo, this%rhs)
440  ! end if
441  ! end if
442 
443  ! Fill Newton terms for packages
444  do ip = 1, this%bndlist%Count()
445  packobj => getbndfromlist(this%bndlist, ip)
446  inwtpak = inwtflag
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)
450  end if
451  end do
452 
Here is the call graph for this function:

◆ swf_get_iasym()

integer(i4b) function swfmodule::swf_get_iasym ( class(swfmodeltype this)

Definition at line 1135 of file swf.f90.

1136  class(SwfModelType) :: this
1137  ! local
1138  integer(I4B) :: iasym
1139  integer(I4B) :: ip
1140  class(BndType), pointer :: packobj
1141 
1142  ! Start by setting iasym to zero
1143  iasym = 0
1144 
1145  ! DFW
1146  if (this%indfw > 0) then
1147  iasym = 1
1148  end if
1149 
1150  ! Check for any packages that introduce matrix asymmetry
1151  do ip = 1, this%bndlist%Count()
1152  packobj => getbndfromlist(this%bndlist, ip)
1153  if (packobj%iasym /= 0) iasym = 1
1154  end do
1155 
Here is the call graph for this function:

◆ swf_mc()

subroutine swfmodule::swf_mc ( class(swfmodeltype this,
class(matrixbasetype), pointer  matrix_sln 
)

Definition at line 230 of file swf.f90.

231  ! dummy
232  class(SwfModelType) :: this
233  class(MatrixBaseType), pointer :: matrix_sln
234  ! local
235  class(BndType), pointer :: packobj
236  integer(I4B) :: ip
237 
238  ! Find the position of each connection in the global ia, ja structure
239  ! and store them in idxglo.
240  call this%dis%dis_mc(this%moffset, this%idxglo, matrix_sln)
241 
242  ! Map any additional connections
243  ! none
244 
245  ! Map any package connections
246  do ip = 1, this%bndlist%Count()
247  packobj => getbndfromlist(this%bndlist, ip)
248  call packobj%bnd_mc(this%moffset, matrix_sln)
249  end do
250 
Here is the call graph for this function:

◆ swf_nur()

subroutine swfmodule::swf_nur ( class(swfmodeltype this,
integer(i4b), intent(in)  neqmod,
real(dp), dimension(neqmod), intent(inout)  x,
real(dp), dimension(neqmod), intent(in)  xtemp,
real(dp), dimension(neqmod), intent(inout)  dx,
integer(i4b), intent(inout)  inewtonur,
real(dp), intent(inout)  dxmax,
integer(i4b), intent(inout)  locmax 
)
private

Definition at line 457 of file swf.f90.

458  ! modules
459  use constantsmodule, only: done, dp9
460  ! dummy
461  class(SwfModelType) :: this
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
469  ! local
470  integer(I4B) :: i0
471  integer(I4B) :: i1
472  class(BndType), pointer :: packobj
473  integer(I4B) :: ip
474 
475  ! apply Newton-Raphson under-relaxation if model is using
476  ! the Newton-Raphson formulation and this Newton-Raphson
477  ! under-relaxation is turned on.
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)
481  end if
482 
483  ! Call package nur routines
484  i0 = this%dis%nodes + 1
485  do ip = 1, this%bndlist%Count()
486  packobj => getbndfromlist(this%bndlist, ip)
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)
491  i0 = i1 + 1
492  end if
493  end do
494  end if
495 
real(dp), parameter dp9
real constant 9/10
Definition: Constants.f90:72
real(dp), parameter done
real constant 1
Definition: Constants.f90:76
Here is the call graph for this function:

◆ swf_ot()

subroutine swfmodule::swf_ot ( class(swfmodeltype this)

Definition at line 575 of file swf.f90.

576  ! modules
577  use tdismodule, only: tdis_ot, endofperiod
578  ! dummy
579  class(SwfModelType) :: this
580  ! local
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
588 
589  ! Set write and print flags
590  idvsave = 0
591  idvprint = 0
592  icbcfl = 0
593  ibudfl = 0
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')
599 
600  ! Override ibudfl and idvprint flags for nonconvergence
601  ! and end of period
602  ibudfl = this%oc%set_print_flag('BUDGET', icnvg, endofperiod)
603  idvprint = this%oc%set_print_flag('QOUTFLOW', icnvg, endofperiod)
604 
605  ! Calculate and save observations
606  call this%swf_ot_obs()
607 
608  ! Save and print flows
609  call this%swf_ot_flow(icbcfl, ibudfl, icbcun)
610 
611  ! Save and print dependent variables
612  call this%swf_ot_dv(idvsave, idvprint, ipflag)
613 
614  ! Print budget summaries
615  call this%swf_ot_bdsummary(ibudfl, ipflag)
616 
617  ! Timing Output; if any dependent variables or budgets
618  ! are printed, then ipflag is set to 1.
619  if (ipflag == 1) call tdis_ot(this%iout)
620 
logical(lgp), pointer, public endofperiod
flag indicating end of stress period
Definition: tdis.f90:27
subroutine, public tdis_ot(iout)
Print simulation time.
Definition: tdis.f90:274
Here is the call graph for this function:

◆ swf_ot_bdsummary()

subroutine swfmodule::swf_ot_bdsummary ( class(swfmodeltype this,
integer(i4b), intent(in)  ibudfl,
integer(i4b), intent(inout)  ipflag 
)
private

Definition at line 723 of file swf.f90.

724  use tdismodule, only: kstp, kper, totim, delt
725  class(SwfModelType) :: this
726  integer(I4B), intent(in) :: ibudfl
727  integer(I4B), intent(inout) :: ipflag
728  class(BndType), pointer :: packobj
729  integer(I4B) :: ip
730 
731  ! Package budget summary
732  do ip = 1, this%bndlist%Count()
733  packobj => getbndfromlist(this%bndlist, ip)
734  call packobj%bnd_ot_bdsummary(kstp, kper, this%iout, ibudfl)
735  end do
736 
737  ! mover budget summary
738  ! if (this%inmvr > 0) then
739  ! call this%mvr%mvr_ot_bdsummary(ibudfl)
740  ! end if
741 
742  ! model budget summary
743  call this%budget%finalize_step(delt)
744  if (ibudfl /= 0) then
745  ipflag = 1
746  call this%budget%budget_ot(kstp, kper, this%iout)
747  end if
748 
749  ! Write to budget csv every time step
750  call this%budget%writecsv(totim)
751 
real(dp), pointer, public totim
time relative to start of simulation
Definition: tdis.f90:32
integer(i4b), pointer, public kstp
current time step number
Definition: tdis.f90:24
Here is the call graph for this function:

◆ swf_ot_dv()

subroutine swfmodule::swf_ot_dv ( class(swfmodeltype this,
integer(i4b), intent(in)  idvsave,
integer(i4b), intent(in)  idvprint,
integer(i4b), intent(inout)  ipflag 
)
private

Definition at line 702 of file swf.f90.

703  class(SwfModelType) :: this
704  integer(I4B), intent(in) :: idvsave
705  integer(I4B), intent(in) :: idvprint
706  integer(I4B), intent(inout) :: ipflag
707  class(BndType), pointer :: packobj
708  integer(I4B) :: ip
709 
710  ! Print advanced package dependent variables
711  do ip = 1, this%bndlist%Count()
712  packobj => getbndfromlist(this%bndlist, ip)
713  call packobj%bnd_ot_dv(idvsave, idvprint)
714  end do
715  !
716  ! save stage and print stage (if implemented)
717  call this%oc%oc_ot(ipflag)
718 
Here is the call graph for this function:

◆ swf_ot_flow()

subroutine swfmodule::swf_ot_flow ( class(swfmodeltype this,
integer(i4b), intent(in)  icbcfl,
integer(i4b), intent(in)  ibudfl,
integer(i4b), intent(in)  icbcun 
)
private

Definition at line 651 of file swf.f90.

652  class(SwfModelType) :: this
653  integer(I4B), intent(in) :: icbcfl
654  integer(I4B), intent(in) :: ibudfl
655  integer(I4B), intent(in) :: icbcun
656  class(BndType), pointer :: packobj
657  integer(I4B) :: ip
658 
659  ! Save SWF flows
660  if (this%insto > 0) then
661  call this%sto%sto_save_model_flows(icbcfl, icbcun)
662  end if
663  if (this%indfw > 0) then
664  call this%dfw%dfw_save_model_flows(this%flowja, icbcfl, icbcun)
665  end if
666  do ip = 1, this%bndlist%Count()
667  packobj => getbndfromlist(this%bndlist, ip)
668  call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
669  end do
670 
671  ! Save advanced package flows
672  do ip = 1, this%bndlist%Count()
673  packobj => getbndfromlist(this%bndlist, ip)
674  call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
675  end do
676  ! if (this%inmvr > 0) then
677  ! call this%mvr%mvr_ot_saveflow(icbcfl, ibudfl)
678  ! end if
679 
680  ! Print SWF flows
681  if (this%indfw > 0) then
682  call this%dfw%dfw_print_model_flows(ibudfl, this%flowja)
683  end if
684  do ip = 1, this%bndlist%Count()
685  packobj => getbndfromlist(this%bndlist, ip)
686  call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
687  end do
688 
689  ! Print advanced package flows
690  do ip = 1, this%bndlist%Count()
691  packobj => getbndfromlist(this%bndlist, ip)
692  call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
693  end do
694  ! if (this%inmvr > 0) then
695  ! call this%mvr%mvr_ot_printflow(icbcfl, ibudfl)
696  ! end if
697 
Here is the call graph for this function:

◆ swf_ot_obs()

subroutine swfmodule::swf_ot_obs ( class(swfmodeltype this)

Definition at line 625 of file swf.f90.

626  class(SwfModelType) :: this
627  class(BndType), pointer :: packobj
628  integer(I4B) :: ip
629 
630  ! Calculate and save SWF observations
631  call this%obs%obs_bd()
632  call this%obs%obs_ot()
633 
634  ! Calculate and save dfw observations
635  if (this%indfw > 0) then
636  call this%dfw%dfw_bd_obs()
637  call this%dfw%obs%obs_ot()
638  end if
639 
640  ! Calculate and save package observations
641  do ip = 1, this%bndlist%Count()
642  packobj => getbndfromlist(this%bndlist, ip)
643  call packobj%bnd_bd_obs()
644  call packobj%bnd_ot_obs()
645  end do
646 
Here is the call graph for this function:

◆ swf_rp()

subroutine swfmodule::swf_rp ( class(swfmodeltype this)
private

Definition at line 296 of file swf.f90.

297  ! modules
298  use tdismodule, only: readnewdata
299  ! dummy
300  class(SwfModelType) :: this
301  ! local
302  class(BndType), pointer :: packobj
303  integer(I4B) :: ip
304 
305  ! Check with TDIS on whether or not it is time to RP
306  if (.not. readnewdata) return
307 
308  ! Read and prepare
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()
312  !if (this%inmvr > 0) call this%mvr%mvr_rp()
313  do ip = 1, this%bndlist%Count()
314  packobj => getbndfromlist(this%bndlist, ip)
315  call packobj%bnd_rp()
316  call packobj%bnd_rp_obs()
317  end do
318 
319  ! Check for steady state period
320  call this%steady_period_check()
321 
logical(lgp), pointer, public readnewdata
flag indicating time to read new data
Definition: tdis.f90:26
Here is the call graph for this function:

Variable Documentation

◆ niunit_swf

integer(i4b), parameter swfmodule::niunit_swf = SWF_NBASEPKG + SWF_NMULTIPKG
private

Definition at line 78 of file swf.f90.

78  integer(I4B), parameter :: NIUNIT_SWF = swf_nbasepkg + swf_nmultipkg

◆ swf_nbasepkg

integer(i4b), parameter swfmodule::swf_nbasepkg = 9
private

Definition at line 76 of file swf.f90.

76  integer(I4B), parameter :: SWF_NBASEPKG = 9

◆ swf_nmultipkg

integer(i4b), parameter swfmodule::swf_nmultipkg = 50
private

Definition at line 77 of file swf.f90.

77  integer(I4B), parameter :: SWF_NMULTIPKG = 50