471 lines
17 KiB
Python
471 lines
17 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
|
|
|
|
|
|
class ModflowGwfevt(mfpackage.MFPackage):
|
|
"""
|
|
ModflowGwfevt defines a evt 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.
|
|
fixed_cell : boolean
|
|
* fixed_cell (boolean) indicates that evapotranspiration 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 evapotranspiration rate.
|
|
boundnames : boolean
|
|
* boundnames (boolean) keyword to indicate that boundary names may be
|
|
provided with the list of evapotranspiration cells.
|
|
print_input : boolean
|
|
* print_input (boolean) keyword to indicate that the list of
|
|
evapotranspiration 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
|
|
evapotranspiration 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 evapotranspiration flow
|
|
terms will be written to the file specified with "BUDGET FILEOUT" in
|
|
Output Control.
|
|
timeseries : {varname:data} or timeseries data
|
|
* Contains data for the ts package. Data can be stored in a dictionary
|
|
containing data for the ts package with variable names as keys and
|
|
package data as values. Data just for the timeseries variable is also
|
|
acceptable. See ts 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.
|
|
surf_rate_specified : boolean
|
|
* surf_rate_specified (boolean) indicates that the proportion of the
|
|
evapotranspiration rate at the ET surface will be specified as PETM0
|
|
in list input.
|
|
maxbound : integer
|
|
* maxbound (integer) integer value specifying the maximum number of
|
|
evapotranspiration cells cells that will be specified for use during
|
|
any stress period.
|
|
nseg : integer
|
|
* nseg (integer) number of ET segments. Default is one. When NSEG is
|
|
greater than 1, PXDP and PETM arrays must be specified NSEG - 1 times
|
|
each, in order from the uppermost segment down. PXDP defines the
|
|
extinction-depth proportion at the bottom of a segment. PETM defines
|
|
the proportion of the maximum ET flux rate at the bottom of a
|
|
segment.
|
|
stress_period_data : [cellid, surface, rate, depth, pxdp, petm, petm0, aux,
|
|
boundname]
|
|
* cellid ((integer, ...)) is the cell identifier, and depends on the
|
|
type of grid that is used for the simulation. For a structured grid
|
|
that uses the DIS input file, CELLID is the layer, row, and column.
|
|
For a grid that uses the DISV input file, CELLID is the layer and
|
|
CELL2D number. If the model uses the unstructured discretization
|
|
(DISU) input file, CELLID is the node number for the cell. 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.
|
|
* surface (double) is the elevation of the ET surface (:math:`L`). If
|
|
the Options block includes a TIMESERIESFILE entry (see the "Time-
|
|
Variable Input" section), values can be obtained from a time series
|
|
by entering the time-series name in place of a numeric value.
|
|
* rate (double) is the maximum ET flux rate (:math:`LT^{-1}`). If the
|
|
Options block includes a TIMESERIESFILE entry (see the "Time-Variable
|
|
Input" section), values can be obtained from a time series by
|
|
entering the time-series name in place of a numeric value.
|
|
* depth (double) is the ET extinction depth (:math:`L`). If the Options
|
|
block includes a TIMESERIESFILE entry (see the "Time-Variable Input"
|
|
section), values can be obtained from a time series by entering the
|
|
time-series name in place of a numeric value.
|
|
* pxdp (double) is the proportion of the ET extinction depth at the
|
|
bottom of a segment (dimensionless). If the Options block includes a
|
|
TIMESERIESFILE entry (see the "Time-Variable Input" section), values
|
|
can be obtained from a time series by entering the time-series name
|
|
in place of a numeric value.
|
|
* petm (double) is the proportion of the maximum ET flux rate at the
|
|
bottom of a segment (dimensionless). If the Options block includes a
|
|
TIMESERIESFILE entry (see the "Time-Variable Input" section), values
|
|
can be obtained from a time series by entering the time-series name
|
|
in place of a numeric value.
|
|
* petm0 (double) is the proportion of the maximum ET flux rate that
|
|
will apply when head is at or above the ET surface (dimensionless).
|
|
PETM0 is read only when the SURF_RATE_SPECIFIED option is used. If
|
|
the Options block includes a TIMESERIESFILE entry (see the "Time-
|
|
Variable Input" section), values can be obtained from a time series
|
|
by entering the time-series name in place of a numeric value.
|
|
* aux (double) represents the values of the auxiliary variables for
|
|
each evapotranspiration. The values of auxiliary variables must be
|
|
present for each evapotranspiration. The values must be specified in
|
|
the order of the auxiliary variables specified in the OPTIONS block.
|
|
If the package supports time series and the Options block includes a
|
|
TIMESERIESFILE entry (see the "Time-Variable Input" section), values
|
|
can be obtained from a time series by entering the time-series name
|
|
in place of a numeric value.
|
|
* boundname (string) name of the evapotranspiration cell. BOUNDNAME is
|
|
an ASCII character variable that can contain as many as 40
|
|
characters. If BOUNDNAME contains spaces in it, then the entire name
|
|
must be enclosed within single quotes.
|
|
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", "evt", "options", "auxiliary"))
|
|
ts_filerecord = ListTemplateGenerator(
|
|
("gwf6", "evt", "options", "ts_filerecord")
|
|
)
|
|
obs_filerecord = ListTemplateGenerator(
|
|
("gwf6", "evt", "options", "obs_filerecord")
|
|
)
|
|
stress_period_data = ListTemplateGenerator(
|
|
("gwf6", "evt", "period", "stress_period_data")
|
|
)
|
|
package_abbr = "gwfevt"
|
|
_package_type = "evt"
|
|
dfn_file_name = "gwf-evt.dfn"
|
|
|
|
dfn = [
|
|
[
|
|
"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 boundnames",
|
|
"type keyword",
|
|
"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 ts_filerecord",
|
|
"type record ts6 filein ts6_filename",
|
|
"shape",
|
|
"reader urword",
|
|
"tagged true",
|
|
"optional true",
|
|
"construct_package ts",
|
|
"construct_data timeseries",
|
|
"parameter_name timeseries",
|
|
],
|
|
[
|
|
"block options",
|
|
"name ts6",
|
|
"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 ts6_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 options",
|
|
"name surf_rate_specified",
|
|
"type keyword",
|
|
"reader urword",
|
|
"optional true",
|
|
],
|
|
[
|
|
"block dimensions",
|
|
"name maxbound",
|
|
"type integer",
|
|
"reader urword",
|
|
"optional false",
|
|
],
|
|
[
|
|
"block dimensions",
|
|
"name nseg",
|
|
"type integer",
|
|
"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 stress_period_data",
|
|
"type recarray cellid surface rate depth pxdp petm petm0 aux "
|
|
"boundname",
|
|
"shape (maxbound)",
|
|
"reader urword",
|
|
],
|
|
[
|
|
"block period",
|
|
"name cellid",
|
|
"type integer",
|
|
"shape (ncelldim)",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
],
|
|
[
|
|
"block period",
|
|
"name surface",
|
|
"type double precision",
|
|
"shape",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
"time_series true",
|
|
],
|
|
[
|
|
"block period",
|
|
"name rate",
|
|
"type double precision",
|
|
"shape",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
"time_series true",
|
|
],
|
|
[
|
|
"block period",
|
|
"name depth",
|
|
"type double precision",
|
|
"shape",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
"time_series true",
|
|
],
|
|
[
|
|
"block period",
|
|
"name pxdp",
|
|
"type double precision",
|
|
"shape (nseg-1)",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
"time_series true",
|
|
],
|
|
[
|
|
"block period",
|
|
"name petm",
|
|
"type double precision",
|
|
"shape (nseg-1)",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
"time_series true",
|
|
],
|
|
[
|
|
"block period",
|
|
"name petm0",
|
|
"type double precision",
|
|
"shape",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
"optional true",
|
|
"time_series true",
|
|
],
|
|
[
|
|
"block period",
|
|
"name aux",
|
|
"type double precision",
|
|
"in_record true",
|
|
"tagged false",
|
|
"shape (naux)",
|
|
"reader urword",
|
|
"optional true",
|
|
"time_series true",
|
|
],
|
|
[
|
|
"block period",
|
|
"name boundname",
|
|
"type string",
|
|
"shape",
|
|
"tagged false",
|
|
"in_record true",
|
|
"reader urword",
|
|
"optional true",
|
|
],
|
|
]
|
|
|
|
def __init__(
|
|
self,
|
|
model,
|
|
loading_package=False,
|
|
fixed_cell=None,
|
|
auxiliary=None,
|
|
auxmultname=None,
|
|
boundnames=None,
|
|
print_input=None,
|
|
print_flows=None,
|
|
save_flows=None,
|
|
timeseries=None,
|
|
observations=None,
|
|
surf_rate_specified=None,
|
|
maxbound=None,
|
|
nseg=None,
|
|
stress_period_data=None,
|
|
filename=None,
|
|
pname=None,
|
|
parent_file=None,
|
|
):
|
|
super(ModflowGwfevt, self).__init__(
|
|
model, "evt", filename, pname, loading_package, parent_file
|
|
)
|
|
|
|
# set up variables
|
|
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.boundnames = self.build_mfdata("boundnames", boundnames)
|
|
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._ts_filerecord = self.build_mfdata("ts_filerecord", None)
|
|
self._ts_package = self.build_child_package(
|
|
"ts", timeseries, "timeseries", self._ts_filerecord
|
|
)
|
|
self._obs_filerecord = self.build_mfdata("obs_filerecord", None)
|
|
self._obs_package = self.build_child_package(
|
|
"obs", observations, "continuous", self._obs_filerecord
|
|
)
|
|
self.surf_rate_specified = self.build_mfdata(
|
|
"surf_rate_specified", surf_rate_specified
|
|
)
|
|
self.maxbound = self.build_mfdata("maxbound", maxbound)
|
|
self.nseg = self.build_mfdata("nseg", nseg)
|
|
self.stress_period_data = self.build_mfdata(
|
|
"stress_period_data", stress_period_data
|
|
)
|
|
self._init_complete = True
|