# 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 MFPackage
[docs]class ModflowGwegwe(MFPackage):
"""
ModflowGwegwe defines a GWEGWE package.
Parameters
----------
gwfmodelname1 : string
keyword to specify name of first corresponding gwf model. in the simulation
name file, the gwe6-gwe6 entry contains names for gwe models (exgmnamea and
exgmnameb). the gwe model with the name exgmnamea must correspond to the gwf
model with the name gwfmodelname1.
gwfmodelname2 : string
keyword to specify name of second corresponding gwf model. in the simulation
name file, the gwe6-gwe6 entry contains names for gwe models (exgmnamea and
exgmnameb). the gwe model with the name exgmnameb must correspond to the gwf
model with the name gwfmodelname2.
auxiliary : [string]
an array of auxiliary variable names. there is no limit on the number of
auxiliary variables that can be provided. most auxiliary variables will not be
used by the gwe-gwe exchange, but they will be available for use by other parts
of the program. if an auxiliary variable with the name 'angldegx' is found,
then this information will be used as the angle (provided in degrees) between
the connection face normal and the x axis, where a value of zero indicates that
a normal vector points directly along the positive x axis. the connection face
normal is a normal vector on the cell face shared between the cell in model 1
and the cell in model 2 pointing away from the model 1 cell. additional
information on 'angldegx' is provided in the description of the disu package.
if an auxiliary variable with the name 'cdist' is found, then this information
will be used as the straight-line connection distance, including the vertical
component, between the two cell centers. both angldegx and cdist are required
if specific discharge is calculated for either of the groundwater models.
boundnames : keyword
keyword to indicate that boundary names may be provided with the list of gwe
exchange cells.
print_input : keyword
keyword to indicate that the list of exchange entries will be echoed to the
listing file immediately after it is read.
print_flows : keyword
keyword to indicate that the list of exchange flow rates will be printed to the
listing file for every stress period in which 'save budget' is specified in
output control.
save_flows : keyword
keyword to indicate that cell-by-cell flow terms will be written to the budget
file for each model provided that the output control for the models are set up
with the 'budget save file' option.
adv_scheme : string
scheme used to solve the advection term. can be upstream, central, or tvd. if
not specified, upstream weighting is the default weighting scheme.
cnd_xt3d_off : keyword
deactivate the xt3d method for the dispersive flux and use the faster and less
accurate approximation for this exchange.
cnd_xt3d_rhs : keyword
add xt3d dispersion terms to right-hand side, when possible, for this exchange.
perioddata : record mve6 filein mve6_filename
Contains data for the mve package. Data can be passed as a dictionary to the
mve package with variable names as keys and package data as values. Data for
the perioddata variable is also acceptable. See mve 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.
dev_interfacemodel_on : keyword
activates the interface model mechanism for calculating the coefficients at
(and possibly near) the exchange. this keyword should only be used for
development purposes.
nexg : integer
keyword and integer value specifying the number of gwe-gwe exchanges.
exchangedata : [list]
"""
auxiliary = ArrayTemplateGenerator(("gwegwe", "options", "auxiliary"))
mve_filerecord = ListTemplateGenerator(("gwegwe", "options", "mve_filerecord"))
obs_filerecord = ListTemplateGenerator(("gwegwe", "options", "obs_filerecord"))
exchangedata = ListTemplateGenerator(("gwegwe", "exchangedata", "exchangedata"))
package_abbr = "gwegwe"
_package_type = "gwegwe"
dfn_file_name = "exg-gwegwe.dfn"
dfn = [
["header", "multi-package"],
[
"block options",
"name gwfmodelname1",
"type string",
"reader urword",
"optional false",
],
[
"block options",
"name gwfmodelname2",
"type string",
"reader urword",
"optional false",
],
[
"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",
"mf6internal iprpak",
],
[
"block options",
"name print_flows",
"type keyword",
"reader urword",
"optional true",
"mf6internal iprflow",
],
[
"block options",
"name save_flows",
"type keyword",
"reader urword",
"optional true",
"mf6internal ipakcb",
],
[
"block options",
"name adv_scheme",
"type string",
"valid upstream central tvd",
"reader urword",
"optional true",
],
[
"block options",
"name cnd_xt3d_off",
"type keyword",
"shape",
"reader urword",
"optional true",
],
[
"block options",
"name cnd_xt3d_rhs",
"type keyword",
"shape",
"reader urword",
"optional true",
],
[
"block options",
"name filein",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name mve_filerecord",
"type record mve6 filein mve6_filename",
"shape",
"reader urword",
"tagged true",
"optional true",
"construct_package mve",
"construct_data perioddata",
"parameter_name perioddata",
],
[
"block options",
"name mve6",
"type keyword",
"shape",
"in_record true",
"reader urword",
"tagged true",
"optional false",
],
[
"block options",
"name mve6_filename",
"type string",
"preserve_case true",
"in_record true",
"tagged false",
"reader urword",
"optional 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 dev_interfacemodel_on",
"type keyword",
"reader urword",
"optional true",
"mf6internal dev_ifmod_on",
],
[
"block dimensions",
"name nexg",
"type integer",
"reader urword",
"optional false",
],
[
"block exchangedata",
"name exchangedata",
"type recarray cellidm1 cellidm2 ihc cl1 cl2 hwva aux boundname",
"shape (nexg)",
"reader urword",
"optional false",
],
[
"block exchangedata",
"name cellidm1",
"type integer",
"in_record true",
"tagged false",
"reader urword",
"optional false",
"numeric_index true",
],
[
"block exchangedata",
"name cellidm2",
"type integer",
"in_record true",
"tagged false",
"reader urword",
"optional false",
"numeric_index true",
],
[
"block exchangedata",
"name ihc",
"type integer",
"in_record true",
"tagged false",
"reader urword",
"optional false",
],
[
"block exchangedata",
"name cl1",
"type double precision",
"in_record true",
"tagged false",
"reader urword",
"optional false",
],
[
"block exchangedata",
"name cl2",
"type double precision",
"in_record true",
"tagged false",
"reader urword",
"optional false",
],
[
"block exchangedata",
"name hwva",
"type double precision",
"in_record true",
"tagged false",
"reader urword",
"optional false",
],
[
"block exchangedata",
"name aux",
"type double precision",
"in_record true",
"tagged false",
"shape (naux)",
"reader urword",
"optional true",
"mf6internal auxvar",
],
[
"block exchangedata",
"name boundname",
"type string",
"shape",
"tagged false",
"in_record true",
"reader urword",
"optional true",
],
]
def __init__(
self,
simulation,
loading_package=False,
exgtype="GWE6-GWE6",
exgmnamea=None,
exgmnameb=None,
gwfmodelname1=None,
gwfmodelname2=None,
auxiliary=None,
boundnames=None,
print_input=None,
print_flows=None,
save_flows=None,
adv_scheme=None,
cnd_xt3d_off=None,
cnd_xt3d_rhs=None,
perioddata=None,
observations=None,
dev_interfacemodel_on=None,
nexg=None,
exchangedata=None,
filename=None,
pname=None,
**kwargs,
):
"""
ModflowGwegwe defines a GWEGWE package.
simulation : MFSimulation
Simulation that this package is a part of. Package is automatically
added to simulation when it is initialized.
loading_package : bool
Do not set this parameter. It is intended for debugging and internal
processing purposes only.
exgtype : str
The exchange type (GWF-GWF or GWF-GWT).
exgmnamea : str
The name of the first model that is part of this exchange.
exgmnameb : str
The name of the second model that is part of this exchange.
gwfmodelname1 : str
Name of first GWF Model. In the simulation name file, the GWE6-GWE6
entry contains names for GWE Models (exgmnamea and exgmnameb). The
GWE Model with the name exgmnamea must correspond to the GWF Model
with the name gwfmodelname1.
gwfmodelname2 : str
Name of second GWF Model. In the simulation name file, the GWE6-GWE6
entry contains names for GWE Models (exgmnamea and exgmnameb). The
GWE Model with the name exgmnameb must correspond to the GWF Model
with the name gwfmodelname2.
gwfmodelname1 : string
keyword to specify name of first corresponding gwf model. in the simulation
name file, the gwe6-gwe6 entry contains names for gwe models (exgmnamea and
exgmnameb). the gwe model with the name exgmnamea must correspond to the gwf
model with the name gwfmodelname1.
gwfmodelname2 : string
keyword to specify name of second corresponding gwf model. in the simulation
name file, the gwe6-gwe6 entry contains names for gwe models (exgmnamea and
exgmnameb). the gwe model with the name exgmnameb must correspond to the gwf
model with the name gwfmodelname2.
auxiliary : [string]
an array of auxiliary variable names. there is no limit on the number of
auxiliary variables that can be provided. most auxiliary variables will not be
used by the gwe-gwe exchange, but they will be available for use by other parts
of the program. if an auxiliary variable with the name 'angldegx' is found,
then this information will be used as the angle (provided in degrees) between
the connection face normal and the x axis, where a value of zero indicates that
a normal vector points directly along the positive x axis. the connection face
normal is a normal vector on the cell face shared between the cell in model 1
and the cell in model 2 pointing away from the model 1 cell. additional
information on 'angldegx' is provided in the description of the disu package.
if an auxiliary variable with the name 'cdist' is found, then this information
will be used as the straight-line connection distance, including the vertical
component, between the two cell centers. both angldegx and cdist are required
if specific discharge is calculated for either of the groundwater models.
boundnames : keyword
keyword to indicate that boundary names may be provided with the list of gwe
exchange cells.
print_input : keyword
keyword to indicate that the list of exchange entries will be echoed to the
listing file immediately after it is read.
print_flows : keyword
keyword to indicate that the list of exchange flow rates will be printed to the
listing file for every stress period in which 'save budget' is specified in
output control.
save_flows : keyword
keyword to indicate that cell-by-cell flow terms will be written to the budget
file for each model provided that the output control for the models are set up
with the 'budget save file' option.
adv_scheme : string
scheme used to solve the advection term. can be upstream, central, or tvd. if
not specified, upstream weighting is the default weighting scheme.
cnd_xt3d_off : keyword
deactivate the xt3d method for the dispersive flux and use the faster and less
accurate approximation for this exchange.
cnd_xt3d_rhs : keyword
add xt3d dispersion terms to right-hand side, when possible, for this exchange.
perioddata : record mve6 filein mve6_filename
Contains data for the mve package. Data can be passed as a dictionary to the
mve package with variable names as keys and package data as values. Data for
the perioddata variable is also acceptable. See mve 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.
dev_interfacemodel_on : keyword
activates the interface model mechanism for calculating the coefficients at
(and possibly near) the exchange. this keyword should only be used for
development purposes.
nexg : integer
keyword and integer value specifying the number of gwe-gwe exchanges.
exchangedata : [list]
"""
super().__init__(
simulation, "gwegwe", filename, pname, loading_package, **kwargs
)
self.exgtype = exgtype
self.exgmnamea = exgmnamea
self.exgmnameb = exgmnameb
simulation.register_exchange_file(self)
self.gwfmodelname1 = self.build_mfdata("gwfmodelname1", gwfmodelname1)
self.gwfmodelname2 = self.build_mfdata("gwfmodelname2", gwfmodelname2)
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_flows = self.build_mfdata("print_flows", print_flows)
self.save_flows = self.build_mfdata("save_flows", save_flows)
self.adv_scheme = self.build_mfdata("adv_scheme", adv_scheme)
self.cnd_xt3d_off = self.build_mfdata("cnd_xt3d_off", cnd_xt3d_off)
self.cnd_xt3d_rhs = self.build_mfdata("cnd_xt3d_rhs", cnd_xt3d_rhs)
self._mve_filerecord = self.build_mfdata("mve_filerecord", None)
self._mve_package = self.build_child_package(
"mve", perioddata, "perioddata", self._mve_filerecord
)
self._obs_filerecord = self.build_mfdata("obs_filerecord", None)
self._obs_package = self.build_child_package(
"obs", observations, "continuous", self._obs_filerecord
)
self.dev_interfacemodel_on = self.build_mfdata(
"dev_interfacemodel_on", dev_interfacemodel_on
)
self.nexg = self.build_mfdata("nexg", nexg)
self.exchangedata = self.build_mfdata("exchangedata", exchangedata)
self._init_complete = True