# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY
# mf6/utils/createpackages.py
from .. import mfpackage
from ..data.mfdatautil import ListTemplateGenerator, ArrayTemplateGenerator
[docs]class ModflowGwtist(mfpackage.MFPackage):
"""
ModflowGwtist defines a ist package within a gwt6 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.
save_flows : boolean
* save_flows (boolean) keyword to indicate that IST flow terms will be
written to the file specified with "BUDGET FILEOUT" in Output
Control.
sorbtion : boolean
* sorbtion (boolean) is a text keyword to indicate that sorbtion will
be activated. Use of this keyword requires that BULK_DENSITY and
DISTCOEF are specified in the GRIDDATA block.
first_order_decay : boolean
* first_order_decay (boolean) is a text keyword to indicate that first-
order decay will occur. Use of this keyword requires that DECAY and
DECAY_SORBED (if sorbtion is active) are specified in the GRIDDATA
block.
zero_order_decay : boolean
* zero_order_decay (boolean) is a text keyword to indicate that zero-
order decay will occur. Use of this keyword requires that DECAY and
DECAY_SORBED (if sorbtion is active) are specified in the GRIDDATA
block.
cim_filerecord : [cimfile]
* cimfile (string) name of the output file to write immobile
concentrations.
cimprintrecord : [columns, width, digits, format]
* columns (integer) number of columns for writing data.
* width (integer) width for writing each number.
* digits (integer) number of digits to use for writing a number.
* format (string) write format can be EXPONENTIAL, FIXED, GENERAL, or
SCIENTIFIC.
cim : [double]
* cim (double) initial concentration of the immobile domain in mass per
length cubed. If CIM is not specified, then it is assumed to be zero.
thetaim : [double]
* thetaim (double) porosity of the immobile domain specified as the
volume of immobile pore space per total volume (dimensionless).
zetaim : [double]
* zetaim (double) mass transfer rate coefficient between the mobile and
immobile domains, in dimensions of per time.
decay : [double]
* decay (double) is the rate coefficient for first or zero-order decay
for the aqueous phase of the immobile domain. A negative value
indicates solute production. The dimensions of decay for first-order
decay is one over time. The dimensions of decay for zero-order decay
is mass per length cubed per time. decay will have no affect on
simulation results unless either first- or zero-order decay is
specified in the options block.
decay_sorbed : [double]
* decay_sorbed (double) is the rate coefficient for first or zero-order
decay for the sorbed phase of the immobile domain. A negative value
indicates solute production. The dimensions of decay_sorbed for
first-order decay is one over time. The dimensions of decay_sorbed
for zero-order decay is mass of solute per mass of aquifer per time.
If decay_sorbed is not specified and both decay and sorbtion are
active, then the sorbed decay rate will be set equal to the aqueous
decay rate. decay_sorbed will have no affect on simulation results
unless the SORPTION keyword and either first- or zero-order decay are
specified in the options block.
bulk_density : [double]
* bulk_density (double) is the bulk density of the aquifer in mass per
length cubed. bulk_density will have no affect on simulation results
unless the SORBTION keyword is specified in the options block.
distcoef : [double]
* distcoef (double) is the distribution coefficient for the
equilibrium-controlled linear sorption isotherm in dimensions of
length cubed per mass. distcoef will have no affect on simulation
results unless the SORBTION keyword is specified in the options
block.
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.
"""
cim_filerecord = ListTemplateGenerator(
("gwt6", "ist", "options", "cim_filerecord")
)
cimprintrecord = ListTemplateGenerator(
("gwt6", "ist", "options", "cimprintrecord")
)
cim = ArrayTemplateGenerator(("gwt6", "ist", "griddata", "cim"))
thetaim = ArrayTemplateGenerator(("gwt6", "ist", "griddata", "thetaim"))
zetaim = ArrayTemplateGenerator(("gwt6", "ist", "griddata", "zetaim"))
decay = ArrayTemplateGenerator(("gwt6", "ist", "griddata", "decay"))
decay_sorbed = ArrayTemplateGenerator(
("gwt6", "ist", "griddata", "decay_sorbed")
)
bulk_density = ArrayTemplateGenerator(
("gwt6", "ist", "griddata", "bulk_density")
)
distcoef = ArrayTemplateGenerator(("gwt6", "ist", "griddata", "distcoef"))
package_abbr = "gwtist"
_package_type = "ist"
dfn_file_name = "gwt-ist.dfn"
dfn = [
[
"block options",
"name save_flows",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name sorbtion",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name first_order_decay",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name zero_order_decay",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name cim_filerecord",
"type record cim fileout cimfile",
"shape",
"reader urword",
"tagged true",
"optional true",
],
[
"block options",
"name cim",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name fileout",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name cimfile",
"type string",
"preserve_case true",
"shape",
"in_record true",
"reader urword",
"tagged false",
"optional false",
],
[
"block options",
"name cimprintrecord",
"type record cim print_format formatrecord",
"shape",
"reader urword",
"optional true",
],
[
"block options",
"name print_format",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name formatrecord",
"type record columns width digits format",
"shape",
"in_record true",
"reader urword",
"tagged",
"optional false",
],
[
"block options",
"name columns",
"type integer",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional",
],
[
"block options",
"name width",
"type integer",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional",
],
[
"block options",
"name digits",
"type integer",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional",
],
[
"block options",
"name format",
"type string",
"shape",
"in_record true",
"reader urword",
"tagged false",
"optional false",
],
[
"block griddata",
"name cim",
"type double precision",
"shape (nodes)",
"reader readarray",
"optional true",
"layered true",
],
[
"block griddata",
"name thetaim",
"type double precision",
"shape (nodes)",
"reader readarray",
"layered true",
],
[
"block griddata",
"name zetaim",
"type double precision",
"shape (nodes)",
"reader readarray",
"layered true",
],
[
"block griddata",
"name decay",
"type double precision",
"shape (nodes)",
"reader readarray",
"layered true",
"optional true",
],
[
"block griddata",
"name decay_sorbed",
"type double precision",
"shape (nodes)",
"reader readarray",
"optional true",
"layered true",
],
[
"block griddata",
"name bulk_density",
"type double precision",
"shape (nodes)",
"reader readarray",
"layered true",
],
[
"block griddata",
"name distcoef",
"type double precision",
"shape (nodes)",
"reader readarray",
"layered true",
],
]
def __init__(
self,
model,
loading_package=False,
save_flows=None,
sorbtion=None,
first_order_decay=None,
zero_order_decay=None,
cim_filerecord=None,
cimprintrecord=None,
cim=None,
thetaim=None,
zetaim=None,
decay=None,
decay_sorbed=None,
bulk_density=None,
distcoef=None,
filename=None,
pname=None,
parent_file=None,
):
super(ModflowGwtist, self).__init__(
model, "ist", filename, pname, loading_package, parent_file
)
# set up variables
self.save_flows = self.build_mfdata("save_flows", save_flows)
self.sorbtion = self.build_mfdata("sorbtion", sorbtion)
self.first_order_decay = self.build_mfdata(
"first_order_decay", first_order_decay
)
self.zero_order_decay = self.build_mfdata(
"zero_order_decay", zero_order_decay
)
self.cim_filerecord = self.build_mfdata(
"cim_filerecord", cim_filerecord
)
self.cimprintrecord = self.build_mfdata(
"cimprintrecord", cimprintrecord
)
self.cim = self.build_mfdata("cim", cim)
self.thetaim = self.build_mfdata("thetaim", thetaim)
self.zetaim = self.build_mfdata("zetaim", zetaim)
self.decay = self.build_mfdata("decay", decay)
self.decay_sorbed = self.build_mfdata("decay_sorbed", decay_sorbed)
self.bulk_density = self.build_mfdata("bulk_density", bulk_density)
self.distcoef = self.build_mfdata("distcoef", distcoef)
self._init_complete = True