flopy/flopy/mf6/modflow/mfgwfrcha.py

330 lines
12 KiB
Python

# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY
# mf6/utils/createpackages.py
# FILE created on February 18, 2021 16:23:05 UTC
from .. import mfpackage
from ..data.mfdatautil import ListTemplateGenerator, ArrayTemplateGenerator
class ModflowGwfrcha(mfpackage.MFPackage):
"""
ModflowGwfrcha defines a rcha package within a gwf6 model.
Parameters
----------
model : MFModel
Model that this package is a part of. Package is automatically
added to model when it is initialized.
loading_package : bool
Do not set this parameter. It is intended for debugging and internal
processing purposes only.
readasarrays : boolean
* readasarrays (boolean) indicates that array-based input will be used
for the Recharge Package. This keyword must be specified to use
array-based input.
fixed_cell : boolean
* fixed_cell (boolean) indicates that recharge will not be reassigned
to a cell underlying the cell specified in the list if the specified
cell is inactive.
auxiliary : [string]
* auxiliary (string) defines an array of one or more auxiliary variable
names. There is no limit on the number of auxiliary variables that
can be provided on this line; however, lists of information provided
in subsequent blocks must have a column of data for each auxiliary
variable name defined here. The number of auxiliary variables
detected on this line determines the value for naux. Comments cannot
be provided anywhere on this line as they will be interpreted as
auxiliary variable names. Auxiliary variables may not be used by the
package, but they will be available for use by other parts of the
program. The program will terminate with an error if auxiliary
variables are specified on more than one line in the options block.
auxmultname : string
* auxmultname (string) name of auxiliary variable to be used as
multiplier of recharge.
print_input : boolean
* print_input (boolean) keyword to indicate that the list of recharge
information will be written to the listing file immediately after it
is read.
print_flows : boolean
* print_flows (boolean) keyword to indicate that the list of recharge
flow rates will be printed to the listing file for every stress
period time step in which "BUDGET PRINT" is specified in Output
Control. If there is no Output Control option and "PRINT_FLOWS" is
specified, then flow rates are printed for the last time step of each
stress period.
save_flows : boolean
* save_flows (boolean) keyword to indicate that recharge flow terms
will be written to the file specified with "BUDGET FILEOUT" in Output
Control.
timearrayseries : {varname:data} or tas_array data
* Contains data for the tas package. Data can be stored in a dictionary
containing data for the tas package with variable names as keys and
package data as values. Data just for the timearrayseries variable is
also acceptable. See tas package documentation for more information.
observations : {varname:data} or continuous data
* Contains data for the obs package. Data can be stored in a dictionary
containing data for the obs package with variable names as keys and
package data as values. Data just for the observations variable is
also acceptable. See obs package documentation for more information.
irch : [integer]
* irch (integer) IRCH is the layer number that defines the layer in
each vertical column where recharge is applied. If IRCH is omitted,
recharge by default is applied to cells in layer 1. IRCH can only be
used if READASARRAYS is specified in the OPTIONS block. If IRCH is
specified, it must be specified as the first variable in the PERIOD
block or MODFLOW will terminate with an error. This argument is an
index variable, which means that it should be treated as zero-based
when working with FloPy and Python. Flopy will automatically subtract
one when loading index variables and add one when writing index
variables.
recharge : [double]
* recharge (double) is the recharge flux rate (:math:`LT^{-1}`). This
rate is multiplied inside the program by the surface area of the cell
to calculate the volumetric recharge rate. The recharge array may be
defined by a time-array series (see the "Using Time-Array Series in a
Package" section).
aux : [double]
* aux (double) is an array of values for auxiliary variable aux(iaux),
where iaux is a value from 1 to naux, and aux(iaux) must be listed as
part of the auxiliary variables. A separate array can be specified
for each auxiliary variable. If an array is not specified for an
auxiliary variable, then a value of zero is assigned. If the value
specified here for the auxiliary variable is the same as auxmultname,
then the recharge array will be multiplied by this array.
filename : String
File name for this package.
pname : String
Package name for this package.
parent_file : MFPackage
Parent package file that references this package. Only needed for
utility packages (mfutl*). For example, mfutllaktab package must have
a mfgwflak package parent_file.
"""
auxiliary = ListTemplateGenerator(("gwf6", "rcha", "options", "auxiliary"))
tas_filerecord = ListTemplateGenerator(
("gwf6", "rcha", "options", "tas_filerecord")
)
obs_filerecord = ListTemplateGenerator(
("gwf6", "rcha", "options", "obs_filerecord")
)
irch = ArrayTemplateGenerator(("gwf6", "rcha", "period", "irch"))
recharge = ArrayTemplateGenerator(("gwf6", "rcha", "period", "recharge"))
aux = ArrayTemplateGenerator(("gwf6", "rcha", "period", "aux"))
package_abbr = "gwfrcha"
_package_type = "rcha"
dfn_file_name = "gwf-rcha.dfn"
dfn = [
[
"block options",
"name readasarrays",
"type keyword",
"shape",
"reader urword",
"optional false",
"default_value True",
],
[
"block options",
"name fixed_cell",
"type keyword",
"shape",
"reader urword",
"optional true",
],
[
"block options",
"name auxiliary",
"type string",
"shape (naux)",
"reader urword",
"optional true",
],
[
"block options",
"name auxmultname",
"type string",
"shape",
"reader urword",
"optional true",
],
[
"block options",
"name print_input",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name print_flows",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name save_flows",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name tas_filerecord",
"type record tas6 filein tas6_filename",
"shape",
"reader urword",
"tagged true",
"optional true",
"construct_package tas",
"construct_data tas_array",
"parameter_name timearrayseries",
],
[
"block options",
"name tas6",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name filein",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name tas6_filename",
"type string",
"preserve_case true",
"in_record true",
"reader urword",
"optional false",
"tagged false",
],
[
"block options",
"name obs_filerecord",
"type record obs6 filein obs6_filename",
"shape",
"reader urword",
"tagged true",
"optional true",
"construct_package obs",
"construct_data continuous",
"parameter_name observations",
],
[
"block options",
"name obs6",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name obs6_filename",
"type string",
"preserve_case true",
"in_record true",
"tagged false",
"reader urword",
"optional false",
],
[
"block period",
"name iper",
"type integer",
"block_variable True",
"in_record true",
"tagged false",
"shape",
"valid",
"reader urword",
"optional false",
],
[
"block period",
"name irch",
"type integer",
"shape (ncol*nrow; ncpl)",
"reader readarray",
"numeric_index true",
"optional true",
],
[
"block period",
"name recharge",
"type double precision",
"shape (ncol*nrow; ncpl)",
"reader readarray",
"default_value 1.e-3",
],
[
"block period",
"name aux",
"type double precision",
"shape (ncol*nrow; ncpl)",
"reader readarray",
"optional true",
],
]
def __init__(
self,
model,
loading_package=False,
readasarrays=True,
fixed_cell=None,
auxiliary=None,
auxmultname=None,
print_input=None,
print_flows=None,
save_flows=None,
timearrayseries=None,
observations=None,
irch=None,
recharge=1.0e-3,
aux=None,
filename=None,
pname=None,
parent_file=None,
):
super(ModflowGwfrcha, self).__init__(
model, "rcha", filename, pname, loading_package, parent_file
)
# set up variables
self.readasarrays = self.build_mfdata("readasarrays", readasarrays)
self.fixed_cell = self.build_mfdata("fixed_cell", fixed_cell)
self.auxiliary = self.build_mfdata("auxiliary", auxiliary)
self.auxmultname = self.build_mfdata("auxmultname", auxmultname)
self.print_input = self.build_mfdata("print_input", print_input)
self.print_flows = self.build_mfdata("print_flows", print_flows)
self.save_flows = self.build_mfdata("save_flows", save_flows)
self._tas_filerecord = self.build_mfdata("tas_filerecord", None)
self._tas_package = self.build_child_package(
"tas", timearrayseries, "tas_array", self._tas_filerecord
)
self._obs_filerecord = self.build_mfdata("obs_filerecord", None)
self._obs_package = self.build_child_package(
"obs", observations, "continuous", self._obs_filerecord
)
self.irch = self.build_mfdata("irch", irch)
self.recharge = self.build_mfdata("recharge", recharge)
self.aux = self.build_mfdata("aux", aux)
self._init_complete = True