# autogenerated file, do not modify
from os import PathLike, curdir
from typing import Union
from flopy.mf6.data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator
from flopy.mf6.mfpackage import MFChildPackages, MFPackage
[docs]class ModflowGwfmaw(MFPackage):
"""
ModflowGwfmaw defines a MAW package.
Parameters
----------
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.
boundnames : keyword
keyword to indicate that boundary names may be provided with the list of multi-
aquifer well cells.
print_input : keyword
keyword to indicate that the list of multi-aquifer well information will be
written to the listing file immediately after it is read.
print_head : keyword
keyword to indicate that the list of multi-aquifer well {#2} will be printed to
the listing file for every stress period in which 'head print' is specified in
output control. if there is no output control option and print_{#3} is
specified, then {#2} are printed for the last time step of each stress period.
print_flows : keyword
keyword to indicate that the list of multi-aquifer well 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 : keyword
keyword to indicate that multi-aquifer well flow terms will be written to the
file specified with 'budget fileout' in output control.
head_filerecord : (headfile)
* headfile : string
name of the binary output file to write head information.
budget_filerecord : (budgetfile)
* budgetfile : string
name of the binary output file to write budget information.
budgetcsv_filerecord : (budgetcsvfile)
* budgetcsvfile : string
name of the comma-separated value (CSV) output file to write budget summary
information. A budget summary record will be written to this file for each
time step of the simulation.
no_well_storage : keyword
keyword that deactivates inclusion of well storage contributions to the multi-
aquifer well package continuity equation.
flow_correction : keyword
keyword that activates flow corrections in cases where the head in a multi-
aquifer well is below the bottom of the screen for a connection or the head in
a convertible cell connected to a multi-aquifer well is below the cell bottom.
when flow corrections are activated, unit head gradients are used to calculate
the flow between a multi-aquifer well and a connected gwf cell. by default,
flow corrections are not made.
flowing_wells : keyword
keyword that activates the flowing wells option for the multi-aquifer well
package.
shutdown_theta : double precision
value that defines the weight applied to discharge rate for wells that limit
the water level in a discharging well (defined using the head_limit keyword in
the stress period data). shutdown_theta is used to control discharge rate
oscillations when the flow rate from the aquifer is less than the specified
flow rate from the aquifer to the well. values range between 0.0 and 1.0, and
larger values increase the weight (decrease under-relaxation) applied to the
well discharge rate. the head_limit option has been included to facilitate
backward compatibility with previous versions of modflow but use of the
rate_scaling option instead of the head_limit option is recommended. by
default, shutdown_theta is 0.7.
shutdown_kappa : double precision
value that defines the weight applied to discharge rate for wells that limit
the water level in a discharging well (defined using the head_limit keyword in
the stress period data). shutdown_kappa is used to control discharge rate
oscillations when the flow rate from the aquifer is less than the specified
flow rate from the aquifer to the well. values range between 0.0 and 1.0, and
larger values increase the weight applied to the well discharge rate. the
head_limit option has been included to facilitate backward compatibility with
previous versions of modflow but use of the rate_scaling option instead of the
head_limit option is recommended. by default, shutdown_kappa is 0.0001.
mfrcsv_filerecord : (mfrcsvfile)
* mfrcsvfile : string
name of the comma-separated value (CSV) output file to write information about
multi-aquifer well extraction or injection rates that have been reduced by the
program. Entries are only written if the extraction or injection rates are
reduced.
timeseries : record ts6 filein ts6_filename
Contains data for the ts package. Data can be passed as a dictionary to the ts
package with variable names as keys and package data as values. Data for the
timeseries variable is also acceptable. See ts package documentation for more
information.
observations : record obs6 filein obs6_filename
Contains data for the obs package. Data can be passed as a dictionary to the
obs package with variable names as keys and package data as values. Data for
the observations variable is also acceptable. See obs package documentation for
more information.
mover : keyword
keyword to indicate that this instance of the maw package can be used with the
water mover (mvr) package. when the mover option is specified, additional
memory is allocated within the package to store the available, provided, and
received water.
nmawwells : integer
integer value specifying the number of multi-aquifer wells that will be
simulated for all stress periods.
packagedata : [list]
connectiondata : list
perioddata : list
"""
auxiliary = ArrayTemplateGenerator(("gwf6", "maw", "options", "auxiliary"))
head_filerecord = ListTemplateGenerator(
("gwf6", "maw", "options", "head_filerecord")
)
budget_filerecord = ListTemplateGenerator(
("gwf6", "maw", "options", "budget_filerecord")
)
budgetcsv_filerecord = ListTemplateGenerator(
("gwf6", "maw", "options", "budgetcsv_filerecord")
)
mfrcsv_filerecord = ListTemplateGenerator(
("gwf6", "maw", "options", "mfrcsv_filerecord")
)
ts_filerecord = ListTemplateGenerator(("gwf6", "maw", "options", "ts_filerecord"))
obs_filerecord = ListTemplateGenerator(("gwf6", "maw", "options", "obs_filerecord"))
packagedata = ListTemplateGenerator(("gwf6", "maw", "packagedata", "packagedata"))
connectiondata = ListTemplateGenerator(
("gwf6", "maw", "connectiondata", "connectiondata")
)
perioddata = ListTemplateGenerator(("gwf6", "maw", "period", "perioddata"))
package_abbr = "gwfmaw"
_package_type = "maw"
dfn_file_name = "gwf-maw.dfn"
dfn = [
["header", "multi-package", "package-type advanced-stress-package"],
[
"block options",
"name auxiliary",
"type string",
"shape (naux)",
"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_head",
"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 head_filerecord",
"type record head fileout headfile",
"shape",
"reader urword",
"tagged true",
"optional true",
],
[
"block options",
"name head",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name headfile",
"type string",
"preserve_case true",
"shape",
"in_record true",
"reader urword",
"tagged false",
"optional false",
],
[
"block options",
"name budget_filerecord",
"type record budget fileout budgetfile",
"shape",
"reader urword",
"tagged true",
"optional true",
],
[
"block options",
"name budget",
"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 budgetfile",
"type string",
"preserve_case true",
"shape",
"in_record true",
"reader urword",
"tagged false",
"optional false",
],
[
"block options",
"name budgetcsv_filerecord",
"type record budgetcsv fileout budgetcsvfile",
"shape",
"reader urword",
"tagged true",
"optional true",
],
[
"block options",
"name budgetcsv",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name budgetcsvfile",
"type string",
"preserve_case true",
"shape",
"in_record true",
"reader urword",
"tagged false",
"optional false",
],
[
"block options",
"name no_well_storage",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name flow_correction",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name flowing_wells",
"type keyword",
"reader urword",
"optional true",
],
[
"block options",
"name shutdown_theta",
"type double precision",
"reader urword",
"optional true",
],
[
"block options",
"name shutdown_kappa",
"type double precision",
"reader urword",
"optional true",
],
[
"block options",
"name mfrcsv_filerecord",
"type record maw_flow_reduce_csv fileout mfrcsvfile",
"shape",
"reader urword",
"tagged true",
"optional true",
],
[
"block options",
"name maw_flow_reduce_csv",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name mfrcsvfile",
"type string",
"preserve_case true",
"shape",
"in_record true",
"reader urword",
"tagged false",
"optional false",
],
[
"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 observations",
"parameter_name continuous",
],
[
"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 mover",
"type keyword",
"tagged true",
"reader urword",
"optional true",
],
[
"block dimensions",
"name nmawwells",
"type integer",
"reader urword",
"optional false",
],
[
"block packagedata",
"name packagedata",
"type recarray ifno radius bottom strt condeqn ngwfnodes aux boundname",
"shape (nmawwells)",
"reader urword",
],
[
"block packagedata",
"name ifno",
"type integer",
"shape",
"tagged false",
"in_record true",
"reader urword",
"numeric_index true",
],
[
"block packagedata",
"name radius",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block packagedata",
"name bottom",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block packagedata",
"name strt",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block packagedata",
"name condeqn",
"type string",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block packagedata",
"name ngwfnodes",
"type integer",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block packagedata",
"name aux",
"type double precision",
"in_record true",
"tagged false",
"shape (naux)",
"reader urword",
"time_series true",
"optional true",
],
[
"block packagedata",
"name boundname",
"type string",
"shape",
"tagged false",
"in_record true",
"reader urword",
"optional true",
],
[
"block connectiondata",
"name connectiondata",
"type recarray ifno icon cellid scrn_top scrn_bot hk_skin radius_skin",
"reader urword",
],
[
"block connectiondata",
"name ifno",
"type integer",
"shape",
"tagged false",
"in_record true",
"reader urword",
"numeric_index true",
],
[
"block connectiondata",
"name icon",
"type integer",
"shape",
"tagged false",
"in_record true",
"reader urword",
"numeric_index true",
],
[
"block connectiondata",
"name cellid",
"type integer",
"shape (ncelldim)",
"tagged false",
"in_record true",
"reader urword",
],
[
"block connectiondata",
"name scrn_top",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block connectiondata",
"name scrn_bot",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block connectiondata",
"name hk_skin",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block connectiondata",
"name radius_skin",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name iper",
"type integer",
"block_variable True",
"in_record true",
"tagged false",
"shape",
"valid",
"reader urword",
"optional false",
],
[
"block period",
"name perioddata",
"type recarray ifno mawsetting",
"shape",
"reader urword",
],
[
"block period",
"name ifno",
"type integer",
"shape",
"tagged false",
"in_record true",
"reader urword",
"numeric_index true",
],
[
"block period",
"name mawsetting",
"type keystring status flowing_wellrecord rate well_head head_limit shutoffrecord rate_scalingrecord auxiliaryrecord",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name status",
"type string",
"shape",
"tagged true",
"in_record true",
"reader urword",
],
[
"block period",
"name flowing_wellrecord",
"type record flowing_well fwelev fwcond fwrlen",
"shape",
"tagged",
"in_record true",
"reader urword",
],
[
"block period",
"name flowing_well",
"type keyword",
"shape",
"in_record true",
"reader urword",
],
[
"block period",
"name fwelev",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name fwcond",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name fwrlen",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name rate",
"type double precision",
"shape",
"tagged true",
"in_record true",
"reader urword",
"time_series true",
],
[
"block period",
"name well_head",
"type double precision",
"shape",
"tagged true",
"in_record true",
"reader urword",
"time_series true",
],
[
"block period",
"name head_limit",
"type string",
"shape",
"tagged true",
"in_record true",
"reader urword",
],
[
"block period",
"name shutoffrecord",
"type record shut_off minrate maxrate",
"shape",
"tagged",
"in_record true",
"reader urword",
],
[
"block period",
"name shut_off",
"type keyword",
"shape",
"in_record true",
"reader urword",
],
[
"block period",
"name minrate",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name maxrate",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name rate_scalingrecord",
"type record rate_scaling pump_elevation scaling_length",
"shape",
"tagged",
"in_record true",
"reader urword",
],
[
"block period",
"name rate_scaling",
"type keyword",
"shape",
"in_record true",
"reader urword",
],
[
"block period",
"name pump_elevation",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name scaling_length",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name auxiliaryrecord",
"type record auxiliary auxname auxval",
"shape",
"tagged",
"in_record true",
"reader urword",
],
[
"block period",
"name auxiliary",
"type keyword",
"shape",
"in_record true",
"reader urword",
],
[
"block period",
"name auxname",
"type string",
"shape",
"tagged false",
"in_record true",
"reader urword",
],
[
"block period",
"name auxval",
"type double precision",
"shape",
"tagged false",
"in_record true",
"reader urword",
"time_series true",
],
]
def __init__(
self,
model,
loading_package=False,
auxiliary=None,
boundnames=None,
print_input=None,
print_head=None,
print_flows=None,
save_flows=None,
head_filerecord=None,
budget_filerecord=None,
budgetcsv_filerecord=None,
no_well_storage=None,
flow_correction=None,
flowing_wells=None,
shutdown_theta=None,
shutdown_kappa=None,
mfrcsv_filerecord=None,
timeseries=None,
observations=None,
mover=None,
nmawwells=None,
packagedata=None,
connectiondata=None,
perioddata=None,
filename=None,
pname=None,
**kwargs,
):
"""
ModflowGwfmaw defines a MAW package.
Parameters
----------
model
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.
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.
boundnames : keyword
keyword to indicate that boundary names may be provided with the list of multi-
aquifer well cells.
print_input : keyword
keyword to indicate that the list of multi-aquifer well information will be
written to the listing file immediately after it is read.
print_head : keyword
keyword to indicate that the list of multi-aquifer well {#2} will be printed to
the listing file for every stress period in which 'head print' is specified in
output control. if there is no output control option and print_{#3} is
specified, then {#2} are printed for the last time step of each stress period.
print_flows : keyword
keyword to indicate that the list of multi-aquifer well 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 : keyword
keyword to indicate that multi-aquifer well flow terms will be written to the
file specified with 'budget fileout' in output control.
head_filerecord : record
budget_filerecord : record
budgetcsv_filerecord : record
no_well_storage : keyword
keyword that deactivates inclusion of well storage contributions to the multi-
aquifer well package continuity equation.
flow_correction : keyword
keyword that activates flow corrections in cases where the head in a multi-
aquifer well is below the bottom of the screen for a connection or the head in
a convertible cell connected to a multi-aquifer well is below the cell bottom.
when flow corrections are activated, unit head gradients are used to calculate
the flow between a multi-aquifer well and a connected gwf cell. by default,
flow corrections are not made.
flowing_wells : keyword
keyword that activates the flowing wells option for the multi-aquifer well
package.
shutdown_theta : double precision
value that defines the weight applied to discharge rate for wells that limit
the water level in a discharging well (defined using the head_limit keyword in
the stress period data). shutdown_theta is used to control discharge rate
oscillations when the flow rate from the aquifer is less than the specified
flow rate from the aquifer to the well. values range between 0.0 and 1.0, and
larger values increase the weight (decrease under-relaxation) applied to the
well discharge rate. the head_limit option has been included to facilitate
backward compatibility with previous versions of modflow but use of the
rate_scaling option instead of the head_limit option is recommended. by
default, shutdown_theta is 0.7.
shutdown_kappa : double precision
value that defines the weight applied to discharge rate for wells that limit
the water level in a discharging well (defined using the head_limit keyword in
the stress period data). shutdown_kappa is used to control discharge rate
oscillations when the flow rate from the aquifer is less than the specified
flow rate from the aquifer to the well. values range between 0.0 and 1.0, and
larger values increase the weight applied to the well discharge rate. the
head_limit option has been included to facilitate backward compatibility with
previous versions of modflow but use of the rate_scaling option instead of the
head_limit option is recommended. by default, shutdown_kappa is 0.0001.
mfrcsv_filerecord : record
timeseries : record ts6 filein ts6_filename
Contains data for the ts package. Data can be passed as a dictionary to the ts
package with variable names as keys and package data as values. Data for the
timeseries variable is also acceptable. See ts package documentation for more
information.
observations : record obs6 filein obs6_filename
Contains data for the obs package. Data can be passed as a dictionary to the
obs package with variable names as keys and package data as values. Data for
the observations variable is also acceptable. See obs package documentation for
more information.
mover : keyword
keyword to indicate that this instance of the maw package can be used with the
water mover (mvr) package. when the mover option is specified, additional
memory is allocated within the package to store the available, provided, and
received water.
nmawwells : integer
integer value specifying the number of multi-aquifer wells that will be
simulated for all stress periods.
packagedata : [list]
connectiondata : list
perioddata : list
filename : str
File name for this package.
pname : str
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.
"""
super().__init__(model, "maw", filename, pname, loading_package, **kwargs)
self.auxiliary = self.build_mfdata("auxiliary", auxiliary)
self.boundnames = self.build_mfdata("boundnames", boundnames)
self.print_input = self.build_mfdata("print_input", print_input)
self.print_head = self.build_mfdata("print_head", print_head)
self.print_flows = self.build_mfdata("print_flows", print_flows)
self.save_flows = self.build_mfdata("save_flows", save_flows)
self.head_filerecord = self.build_mfdata("head_filerecord", head_filerecord)
self.budget_filerecord = self.build_mfdata(
"budget_filerecord", budget_filerecord
)
self.budgetcsv_filerecord = self.build_mfdata(
"budgetcsv_filerecord", budgetcsv_filerecord
)
self.no_well_storage = self.build_mfdata("no_well_storage", no_well_storage)
self.flow_correction = self.build_mfdata("flow_correction", flow_correction)
self.flowing_wells = self.build_mfdata("flowing_wells", flowing_wells)
self.shutdown_theta = self.build_mfdata("shutdown_theta", shutdown_theta)
self.shutdown_kappa = self.build_mfdata("shutdown_kappa", shutdown_kappa)
self.mfrcsv_filerecord = self.build_mfdata(
"mfrcsv_filerecord", mfrcsv_filerecord
)
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.mover = self.build_mfdata("mover", mover)
self.nmawwells = self.build_mfdata("nmawwells", nmawwells)
self.packagedata = self.build_mfdata("packagedata", packagedata)
self.connectiondata = self.build_mfdata("connectiondata", connectiondata)
self.perioddata = self.build_mfdata("perioddata", perioddata)
self._init_complete = True