From a49b613ec93af4fdcba31cbc8f9760314ea6ee9c Mon Sep 17 00:00:00 2001 From: wpbonelli Date: Thu, 23 May 2024 14:43:56 -0400 Subject: [PATCH] chore(dfns): update dfns and mf6 components (#2195) Update DFN files and generated mf6 component classes in preparation for 3.7.0 release --- flopy/mf6/data/dfn/common.dfn | 3 + flopy/mf6/data/dfn/exg-gwegwe.dfn | 281 ++++++++++++ flopy/mf6/data/dfn/exg-gwfgwe.dfn | 3 + flopy/mf6/data/dfn/exg-gwfgwf.dfn | 4 +- flopy/mf6/data/dfn/exg-gwfprt.dfn | 3 + flopy/mf6/data/dfn/exg-gwtgwt.dfn | 3 +- flopy/mf6/data/dfn/gwe-adv.dfn | 11 + flopy/mf6/data/dfn/gwe-cnd.dfn | 101 ++++ flopy/mf6/data/dfn/gwe-ctp.dfn | 213 +++++++++ flopy/mf6/data/dfn/gwe-dis.dfn | 130 ++++++ flopy/mf6/data/dfn/gwe-disu.dfn | 286 ++++++++++++ flopy/mf6/data/dfn/gwe-disv.dfn | 213 +++++++++ flopy/mf6/data/dfn/gwe-esl.dfn | 205 +++++++++ flopy/mf6/data/dfn/gwe-est.dfn | 106 +++++ flopy/mf6/data/dfn/gwe-fmi.dfn | 58 +++ flopy/mf6/data/dfn/gwe-ic.dfn | 22 + flopy/mf6/data/dfn/gwe-lke.dfn | 481 +++++++++++++++++++ flopy/mf6/data/dfn/gwe-mve.dfn | 106 +++++ flopy/mf6/data/dfn/gwe-mwe.dfn | 447 ++++++++++++++++++ flopy/mf6/data/dfn/gwe-nam.dfn | 74 +++ flopy/mf6/data/dfn/gwe-oc.dfn | 313 +++++++++++++ flopy/mf6/data/dfn/gwe-sfe.dfn | 480 +++++++++++++++++++ flopy/mf6/data/dfn/gwe-ssm.dfn | 122 +++++ flopy/mf6/data/dfn/gwe-uze.dfn | 438 ++++++++++++++++++ flopy/mf6/data/dfn/gwf-dis.dfn | 8 + flopy/mf6/data/dfn/gwf-disu.dfn | 11 +- flopy/mf6/data/dfn/gwf-disv.dfn | 9 + flopy/mf6/data/dfn/gwf-evta.dfn | 2 +- flopy/mf6/data/dfn/gwf-ic.dfn | 11 + flopy/mf6/data/dfn/gwf-nam.dfn | 2 +- flopy/mf6/data/dfn/gwf-npf.dfn | 36 +- flopy/mf6/data/dfn/gwf-rcha.dfn | 4 +- flopy/mf6/data/dfn/gwf-sfr.dfn | 20 +- flopy/mf6/data/dfn/gwf-uzf.dfn | 1 + flopy/mf6/data/dfn/gwf-wel.dfn | 2 +- flopy/mf6/data/dfn/gwt-dis.dfn | 8 + flopy/mf6/data/dfn/gwt-disu.dfn | 11 +- flopy/mf6/data/dfn/gwt-disv.dfn | 9 + flopy/mf6/data/dfn/gwt-dsp.dfn | 9 + flopy/mf6/data/dfn/gwt-ic.dfn | 11 + flopy/mf6/data/dfn/gwt-nam.dfn | 2 +- flopy/mf6/data/dfn/prt-dis.dfn | 130 ++++++ flopy/mf6/data/dfn/prt-disv.dfn | 213 +++++++++ flopy/mf6/data/dfn/prt-fmi.dfn | 50 ++ flopy/mf6/data/dfn/prt-mip.dfn | 41 ++ flopy/mf6/data/dfn/prt-nam.dfn | 73 +++ flopy/mf6/data/dfn/prt-oc.dfn | 381 ++++++++++++++++ flopy/mf6/data/dfn/prt-prp.dfn | 397 ++++++++++++++++ flopy/mf6/data/dfn/sim-nam.dfn | 4 +- flopy/mf6/data/dfn/sln-ims.dfn | 2 +- flopy/mf6/data/dfn/sln-pts.dfn | 178 ++++++++ flopy/mf6/data/dfn/utl-ats.dfn | 2 +- flopy/mf6/data/dfn/utl-spca.dfn | 2 +- flopy/mf6/data/dfn/utl-spt.dfn | 118 +++++ flopy/mf6/data/dfn/utl-spta.dfn | 89 ++++ flopy/mf6/modflow/__init__.py | 33 ++ flopy/mf6/modflow/mfems.py | 2 +- flopy/mf6/modflow/mfgnc.py | 17 +- flopy/mf6/modflow/mfgwe.py | 135 ++++++ flopy/mf6/modflow/mfgweadv.py | 67 +++ flopy/mf6/modflow/mfgwecnd.py | 226 +++++++++ flopy/mf6/modflow/mfgwectp.py | 358 +++++++++++++++ flopy/mf6/modflow/mfgwedis.py | 253 ++++++++++ flopy/mf6/modflow/mfgwedisu.py | 521 +++++++++++++++++++++ flopy/mf6/modflow/mfgwedisv.py | 352 ++++++++++++++ flopy/mf6/modflow/mfgweesl.py | 353 ++++++++++++++ flopy/mf6/modflow/mfgweest.py | 216 +++++++++ flopy/mf6/modflow/mfgwefmi.py | 137 ++++++ flopy/mf6/modflow/mfgwegwe.py | 493 ++++++++++++++++++++ flopy/mf6/modflow/mfgweic.py | 86 ++++ flopy/mf6/modflow/mfgwelke.py | 734 +++++++++++++++++++++++++++++ flopy/mf6/modflow/mfgwemve.py | 256 +++++++++++ flopy/mf6/modflow/mfgwemwe.py | 679 +++++++++++++++++++++++++++ flopy/mf6/modflow/mfgwenam.py | 164 +++++++ flopy/mf6/modflow/mfgweoc.py | 433 ++++++++++++++++++ flopy/mf6/modflow/mfgwesfe.py | 736 ++++++++++++++++++++++++++++++ flopy/mf6/modflow/mfgwessm.py | 219 +++++++++ flopy/mf6/modflow/mfgweuze.py | 676 +++++++++++++++++++++++++++ flopy/mf6/modflow/mfgwf.py | 6 +- flopy/mf6/modflow/mfgwfapi.py | 2 +- flopy/mf6/modflow/mfgwfbuy.py | 2 +- flopy/mf6/modflow/mfgwfchd.py | 2 +- flopy/mf6/modflow/mfgwfcsub.py | 2 +- flopy/mf6/modflow/mfgwfdis.py | 17 +- flopy/mf6/modflow/mfgwfdisu.py | 19 +- flopy/mf6/modflow/mfgwfdisv.py | 17 +- flopy/mf6/modflow/mfgwfdrn.py | 2 +- flopy/mf6/modflow/mfgwfevt.py | 2 +- flopy/mf6/modflow/mfgwfevta.py | 8 +- flopy/mf6/modflow/mfgwfghb.py | 2 +- flopy/mf6/modflow/mfgwfgnc.py | 17 +- flopy/mf6/modflow/mfgwfgwe.py | 70 +++ flopy/mf6/modflow/mfgwfgwf.py | 21 +- flopy/mf6/modflow/mfgwfgwt.py | 2 +- flopy/mf6/modflow/mfgwfhfb.py | 2 +- flopy/mf6/modflow/mfgwfic.py | 17 +- flopy/mf6/modflow/mfgwflak.py | 2 +- flopy/mf6/modflow/mfgwfmaw.py | 2 +- flopy/mf6/modflow/mfgwfmvr.py | 2 +- flopy/mf6/modflow/mfgwfnam.py | 6 +- flopy/mf6/modflow/mfgwfnpf.py | 56 +-- flopy/mf6/modflow/mfgwfoc.py | 2 +- flopy/mf6/modflow/mfgwfprt.py | 70 +++ flopy/mf6/modflow/mfgwfrch.py | 2 +- flopy/mf6/modflow/mfgwfrcha.py | 8 +- flopy/mf6/modflow/mfgwfriv.py | 2 +- flopy/mf6/modflow/mfgwfsfr.py | 44 +- flopy/mf6/modflow/mfgwfsto.py | 2 +- flopy/mf6/modflow/mfgwfuzf.py | 3 +- flopy/mf6/modflow/mfgwfvsc.py | 2 +- flopy/mf6/modflow/mfgwfwel.py | 8 +- flopy/mf6/modflow/mfgwt.py | 6 +- flopy/mf6/modflow/mfgwtadv.py | 2 +- flopy/mf6/modflow/mfgwtapi.py | 2 +- flopy/mf6/modflow/mfgwtcnc.py | 2 +- flopy/mf6/modflow/mfgwtdis.py | 17 +- flopy/mf6/modflow/mfgwtdisu.py | 19 +- flopy/mf6/modflow/mfgwtdisv.py | 17 +- flopy/mf6/modflow/mfgwtdsp.py | 17 +- flopy/mf6/modflow/mfgwtfmi.py | 2 +- flopy/mf6/modflow/mfgwtgwt.py | 13 +- flopy/mf6/modflow/mfgwtic.py | 17 +- flopy/mf6/modflow/mfgwtist.py | 2 +- flopy/mf6/modflow/mfgwtlkt.py | 2 +- flopy/mf6/modflow/mfgwtmst.py | 2 +- flopy/mf6/modflow/mfgwtmvt.py | 2 +- flopy/mf6/modflow/mfgwtmwt.py | 2 +- flopy/mf6/modflow/mfgwtnam.py | 6 +- flopy/mf6/modflow/mfgwtoc.py | 2 +- flopy/mf6/modflow/mfgwtsft.py | 2 +- flopy/mf6/modflow/mfgwtsrc.py | 2 +- flopy/mf6/modflow/mfgwtssm.py | 2 +- flopy/mf6/modflow/mfgwtuzt.py | 2 +- flopy/mf6/modflow/mfims.py | 4 +- flopy/mf6/modflow/mfmvr.py | 2 +- flopy/mf6/modflow/mfmvt.py | 2 +- flopy/mf6/modflow/mfnam.py | 7 +- flopy/mf6/modflow/mfprt.py | 135 ++++++ flopy/mf6/modflow/mfprtdis.py | 253 ++++++++++ flopy/mf6/modflow/mfprtdisv.py | 352 ++++++++++++++ flopy/mf6/modflow/mfprtfmi.py | 113 +++++ flopy/mf6/modflow/mfprtmip.py | 130 ++++++ flopy/mf6/modflow/mfprtnam.py | 163 +++++++ flopy/mf6/modflow/mfprtoc.py | 550 ++++++++++++++++++++++ flopy/mf6/modflow/mfprtprp.py | 628 +++++++++++++++++++++++++ flopy/mf6/modflow/mfpts.py | 327 +++++++++++++ flopy/mf6/modflow/mfsimulation.py | 5 +- flopy/mf6/modflow/mftdis.py | 2 +- flopy/mf6/modflow/mfutlats.py | 4 +- flopy/mf6/modflow/mfutlhpc.py | 2 +- flopy/mf6/modflow/mfutllaktab.py | 2 +- flopy/mf6/modflow/mfutlobs.py | 2 +- flopy/mf6/modflow/mfutlsfrtab.py | 2 +- flopy/mf6/modflow/mfutlspc.py | 2 +- flopy/mf6/modflow/mfutlspca.py | 8 +- flopy/mf6/modflow/mfutlspt.py | 202 ++++++++ flopy/mf6/modflow/mfutlspta.py | 170 +++++++ flopy/mf6/modflow/mfutltas.py | 2 +- flopy/mf6/modflow/mfutlts.py | 2 +- flopy/mf6/modflow/mfutltvk.py | 2 +- flopy/mf6/modflow/mfutltvs.py | 2 +- 161 files changed, 16508 insertions(+), 213 deletions(-) create mode 100644 flopy/mf6/data/dfn/exg-gwegwe.dfn create mode 100644 flopy/mf6/data/dfn/exg-gwfgwe.dfn create mode 100644 flopy/mf6/data/dfn/exg-gwfprt.dfn create mode 100644 flopy/mf6/data/dfn/gwe-adv.dfn create mode 100644 flopy/mf6/data/dfn/gwe-cnd.dfn create mode 100644 flopy/mf6/data/dfn/gwe-ctp.dfn create mode 100644 flopy/mf6/data/dfn/gwe-dis.dfn create mode 100644 flopy/mf6/data/dfn/gwe-disu.dfn create mode 100644 flopy/mf6/data/dfn/gwe-disv.dfn create mode 100644 flopy/mf6/data/dfn/gwe-esl.dfn create mode 100644 flopy/mf6/data/dfn/gwe-est.dfn create mode 100644 flopy/mf6/data/dfn/gwe-fmi.dfn create mode 100644 flopy/mf6/data/dfn/gwe-ic.dfn create mode 100644 flopy/mf6/data/dfn/gwe-lke.dfn create mode 100644 flopy/mf6/data/dfn/gwe-mve.dfn create mode 100644 flopy/mf6/data/dfn/gwe-mwe.dfn create mode 100644 flopy/mf6/data/dfn/gwe-nam.dfn create mode 100644 flopy/mf6/data/dfn/gwe-oc.dfn create mode 100644 flopy/mf6/data/dfn/gwe-sfe.dfn create mode 100644 flopy/mf6/data/dfn/gwe-ssm.dfn create mode 100644 flopy/mf6/data/dfn/gwe-uze.dfn create mode 100644 flopy/mf6/data/dfn/prt-dis.dfn create mode 100644 flopy/mf6/data/dfn/prt-disv.dfn create mode 100644 flopy/mf6/data/dfn/prt-fmi.dfn create mode 100644 flopy/mf6/data/dfn/prt-mip.dfn create mode 100644 flopy/mf6/data/dfn/prt-nam.dfn create mode 100644 flopy/mf6/data/dfn/prt-oc.dfn create mode 100644 flopy/mf6/data/dfn/prt-prp.dfn create mode 100644 flopy/mf6/data/dfn/sln-pts.dfn create mode 100644 flopy/mf6/data/dfn/utl-spt.dfn create mode 100644 flopy/mf6/data/dfn/utl-spta.dfn create mode 100644 flopy/mf6/modflow/mfgwe.py create mode 100644 flopy/mf6/modflow/mfgweadv.py create mode 100644 flopy/mf6/modflow/mfgwecnd.py create mode 100644 flopy/mf6/modflow/mfgwectp.py create mode 100644 flopy/mf6/modflow/mfgwedis.py create mode 100644 flopy/mf6/modflow/mfgwedisu.py create mode 100644 flopy/mf6/modflow/mfgwedisv.py create mode 100644 flopy/mf6/modflow/mfgweesl.py create mode 100644 flopy/mf6/modflow/mfgweest.py create mode 100644 flopy/mf6/modflow/mfgwefmi.py create mode 100644 flopy/mf6/modflow/mfgwegwe.py create mode 100644 flopy/mf6/modflow/mfgweic.py create mode 100644 flopy/mf6/modflow/mfgwelke.py create mode 100644 flopy/mf6/modflow/mfgwemve.py create mode 100644 flopy/mf6/modflow/mfgwemwe.py create mode 100644 flopy/mf6/modflow/mfgwenam.py create mode 100644 flopy/mf6/modflow/mfgweoc.py create mode 100644 flopy/mf6/modflow/mfgwesfe.py create mode 100644 flopy/mf6/modflow/mfgwessm.py create mode 100644 flopy/mf6/modflow/mfgweuze.py create mode 100644 flopy/mf6/modflow/mfgwfgwe.py create mode 100644 flopy/mf6/modflow/mfgwfprt.py create mode 100644 flopy/mf6/modflow/mfprt.py create mode 100644 flopy/mf6/modflow/mfprtdis.py create mode 100644 flopy/mf6/modflow/mfprtdisv.py create mode 100644 flopy/mf6/modflow/mfprtfmi.py create mode 100644 flopy/mf6/modflow/mfprtmip.py create mode 100644 flopy/mf6/modflow/mfprtnam.py create mode 100644 flopy/mf6/modflow/mfprtoc.py create mode 100644 flopy/mf6/modflow/mfprtprp.py create mode 100644 flopy/mf6/modflow/mfpts.py create mode 100644 flopy/mf6/modflow/mfutlspt.py create mode 100644 flopy/mf6/modflow/mfutlspta.py diff --git a/flopy/mf6/data/dfn/common.dfn b/flopy/mf6/data/dfn/common.dfn index b69ae67edf..0fd5220c2f 100644 --- a/flopy/mf6/data/dfn/common.dfn +++ b/flopy/mf6/data/dfn/common.dfn @@ -21,6 +21,9 @@ description keyword to indicate that the list of {#1} {#2} will be printed to th name print_concentration description keyword to indicate that the list of {#1} {#2} will be printed to the listing file for every stress period in which ``CONCENTRATION 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. +name print_temperature +description keyword to indicate that the list of {#1} {#2} will be printed to the listing file for every stress period in which ``TEMPERATURE 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. + name print_flows description keyword to indicate that the list of {#1} 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. diff --git a/flopy/mf6/data/dfn/exg-gwegwe.dfn b/flopy/mf6/data/dfn/exg-gwegwe.dfn new file mode 100644 index 0000000000..7b79ce7e7e --- /dev/null +++ b/flopy/mf6/data/dfn/exg-gwegwe.dfn @@ -0,0 +1,281 @@ +# --------------------- exg gwegwe options --------------------- +# flopy multi-package + +block options +name gwfmodelname1 +type string +reader urword +optional false +longname keyword to specify name of first corresponding GWF Model +description 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. + +block options +name gwfmodelname2 +type string +reader urword +optional false +longname keyword to specify name of second corresponding GWF Model +description 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. + +block options +name auxiliary +type string +shape (naux) +reader urword +optional true +longname keyword to specify aux variables +description 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 GWF-GWF 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. + +block options +name boundnames +type keyword +shape +reader urword +optional true +longname +description REPLACE boundnames {'{#1}': 'GWE Exchange'} + +block options +name print_input +type keyword +reader urword +optional true +longname keyword to print input to list file +description keyword to indicate that the list of exchange entries will be echoed to the listing file immediately after it is read. +mf6internal iprpak + +block options +name print_flows +type keyword +reader urword +optional true +longname keyword to print gwfgwf flows to list file +description 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. +mf6internal iprflow + +block options +name save_flows +type keyword +reader urword +optional true +longname keyword to save GWFGWF flows +description 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. +mf6internal ipakcb + +block options +name adv_scheme +type string +valid upstream central tvd +reader urword +optional true +longname advective scheme +description scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme. + +block options +name cnd_xt3d_off +type keyword +shape +reader urword +optional true +longname deactivate xt3d +description deactivate the xt3d method for the dispersive flux and use the faster and less accurate approximation for this exchange. + +block options +name cnd_xt3d_rhs +type keyword +shape +reader urword +optional true +longname xt3d on right-hand side +description add xt3d dispersion terms to right-hand side, when possible, for this exchange. + +block options +name filein +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an input filename is expected next. + +block options +name mve_filerecord +type record mve6 filein mve6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name mve6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname obs keyword +description keyword to specify that record corresponds to an energy transport mover file. + +block options +name mve6_filename +type string +preserve_case true +in_record true +tagged false +reader urword +optional false +longname mve6 input filename +description is the file name of the transport mover input file to apply to this exchange. Information for the transport mover are provided in the file provided with these keywords. + +block options +name obs_filerecord +type record obs6 filein obs6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name obs6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname obs keyword +description keyword to specify that record corresponds to an observations file. + +block options +name obs6_filename +type string +preserve_case true +in_record true +tagged false +reader urword +optional false +longname obs6 input filename +description is the file name of the observations input file for this exchange. See the ``Observation utility'' section for instructions for preparing observation input files. Table \ref{table:gwe-obstypetable} lists observation type(s) supported by the GWE-GWE package. + +block options +name dev_interfacemodel_on +type keyword +reader urword +optional true +longname activate interface model on exchange +description activates the interface model mechanism for calculating the coefficients at (and possibly near) the exchange. This keyword should only be used for development purposes. +mf6internal dev_ifmod_on + +# --------------------- exg gwegwe dimensions --------------------- + +block dimensions +name nexg +type integer +reader urword +optional false +longname number of exchanges +description keyword and integer value specifying the number of GWE-GWE exchanges. + + +# --------------------- exg gwegwe exchangedata --------------------- + +block exchangedata +name exchangedata +type recarray cellidm1 cellidm2 ihc cl1 cl2 hwva aux boundname +shape (nexg) +reader urword +optional false +longname exchange data +description + +block exchangedata +name cellidm1 +type integer +in_record true +tagged false +reader urword +optional false +longname cellid of first cell +description is the cellid of the cell in model 1 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM1 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM1 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM1 is the node number for the cell. +numeric_index true + +block exchangedata +name cellidm2 +type integer +in_record true +tagged false +reader urword +optional false +longname cellid of second cell +description is the cellid of the cell in model 2 as specified in the simulation name file. For a structured grid that uses the DIS input file, CELLIDM2 is the layer, row, and column numbers of the cell. For a grid that uses the DISV input file, CELLIDM2 is the layer number and CELL2D number for the two cells. If the model uses the unstructured discretization (DISU) input file, then CELLIDM2 is the node number for the cell. +numeric_index true + +block exchangedata +name ihc +type integer +in_record true +tagged false +reader urword +optional false +longname integer flag for connection type +description is an integer flag indicating the direction between node n and all of its m connections. If IHC = 0 then the connection is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 then the connection is horizontal for a vertically staggered grid. + +block exchangedata +name cl1 +type double precision +in_record true +tagged false +reader urword +optional false +longname connection distance +description is the distance between the center of cell 1 and the its shared face with cell 2. + +block exchangedata +name cl2 +type double precision +in_record true +tagged false +reader urword +optional false +longname connection distance +description is the distance between the center of cell 2 and the its shared face with cell 1. + +block exchangedata +name hwva +type double precision +in_record true +tagged false +reader urword +optional false +longname horizontal cell width or area for vertical flow +description is the horizontal width of the flow connection between cell 1 and cell 2 if IHC $>$ 0, or it is the area perpendicular to flow of the vertical connection between cell 1 and cell 2 if IHC = 0. + +block exchangedata +name aux +type double precision +in_record true +tagged false +shape (naux) +reader urword +optional true +longname auxiliary variables +description represents the values of the auxiliary variables for each GWEGWE Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. +mf6internal auxvar + +block exchangedata +name boundname +type string +shape +tagged false +in_record true +reader urword +optional true +longname exchange boundname +description REPLACE boundname {'{#1}': 'GWE Exchange'} diff --git a/flopy/mf6/data/dfn/exg-gwfgwe.dfn b/flopy/mf6/data/dfn/exg-gwfgwe.dfn new file mode 100644 index 0000000000..fe5410261f --- /dev/null +++ b/flopy/mf6/data/dfn/exg-gwfgwe.dfn @@ -0,0 +1,3 @@ +# --------------------- exg gwfgwe options --------------------- + + diff --git a/flopy/mf6/data/dfn/exg-gwfgwf.dfn b/flopy/mf6/data/dfn/exg-gwfgwf.dfn index 2232bfbdf9..0f68acead6 100644 --- a/flopy/mf6/data/dfn/exg-gwfgwf.dfn +++ b/flopy/mf6/data/dfn/exg-gwfgwf.dfn @@ -8,7 +8,8 @@ shape (naux) reader urword optional true longname keyword to specify aux variables -description 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 GWF-GWF 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. +description 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 GWF-GWF 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'' and when it is required 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 in the calculation of specific discharge within model cells connected by the exchange. For a horizontal connection, CDIST should be specified as the horizontal distance between the cell centers, and should not include the vertical component. For vertical connections, CDIST should be specified as the difference in elevation between the two cell centers. Both ANGLDEGX and CDIST are required if specific discharge is calculated for either of the groundwater models. + block options name boundnames @@ -306,6 +307,7 @@ reader urword optional true longname auxiliary variables description represents the values of the auxiliary variables for each GWFGWF Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. +mf6internal auxvar block exchangedata name boundname diff --git a/flopy/mf6/data/dfn/exg-gwfprt.dfn b/flopy/mf6/data/dfn/exg-gwfprt.dfn new file mode 100644 index 0000000000..1008a71819 --- /dev/null +++ b/flopy/mf6/data/dfn/exg-gwfprt.dfn @@ -0,0 +1,3 @@ +# --------------------- exg gwfprt options --------------------- + + diff --git a/flopy/mf6/data/dfn/exg-gwtgwt.dfn b/flopy/mf6/data/dfn/exg-gwtgwt.dfn index f5aeb24199..11af74961a 100644 --- a/flopy/mf6/data/dfn/exg-gwtgwt.dfn +++ b/flopy/mf6/data/dfn/exg-gwtgwt.dfn @@ -24,7 +24,7 @@ shape (naux) reader urword optional true longname keyword to specify aux variables -description 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 GWF-GWF 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. +description 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 GWT-GWT 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. ANGLDEGX must be specified if dispersion is simulated in the connected GWT models. block options name boundnames @@ -267,6 +267,7 @@ reader urword optional true longname auxiliary variables description represents the values of the auxiliary variables for each GWTGWT Exchange. The values of auxiliary variables must be present for each exchange. The values must be specified in the order of the auxiliary variables specified in the OPTIONS block. +mf6internal auxvar block exchangedata name boundname diff --git a/flopy/mf6/data/dfn/gwe-adv.dfn b/flopy/mf6/data/dfn/gwe-adv.dfn new file mode 100644 index 0000000000..682ed4a756 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-adv.dfn @@ -0,0 +1,11 @@ +# --------------------- gwe adv options --------------------- + +block options +name scheme +type string +valid central upstream tvd +reader urword +optional true +longname advective scheme +description scheme used to solve the advection term. Can be upstream, central, or TVD. If not specified, upstream weighting is the default weighting scheme. + diff --git a/flopy/mf6/data/dfn/gwe-cnd.dfn b/flopy/mf6/data/dfn/gwe-cnd.dfn new file mode 100644 index 0000000000..d9d51b3011 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-cnd.dfn @@ -0,0 +1,101 @@ +# --------------------- gwe cnd options --------------------- + +block options +name xt3d_off +type keyword +shape +reader urword +optional true +longname deactivate xt3d +description deactivate the xt3d method and use the faster and less accurate approximation. This option may provide a fast and accurate solution under some circumstances, such as when flow aligns with the model grid, there is no mechanical dispersion, or when the longitudinal and transverse dispersivities are equal. This option may also be used to assess the computational demand of the XT3D approach by noting the run time differences with and without this option on. + +block options +name xt3d_rhs +type keyword +shape +reader urword +optional true +longname xt3d on right-hand side +description add xt3d terms to right-hand side, when possible. This option uses less memory, but may require more iterations. + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +# --------------------- gwe cnd griddata --------------------- + +block griddata +name alh +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname longitudinal dispersivity in horizontal direction +description longitudinal dispersivity in horizontal direction. If flow is strictly horizontal, then this is the longitudinal dispersivity that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required. + +block griddata +name alv +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname longitudinal dispersivity in vertical direction +description longitudinal dispersivity in vertical direction. If flow is strictly vertical, then this is the longitudinal dispsersivity value that will be used. If flow is not strictly horizontal or strictly vertical, then the longitudinal dispersivity is a function of both ALH and ALV. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ALH. + +block griddata +name ath1 +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname transverse dispersivity in horizontal direction +description transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the second ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the y direction. If mechanical dispersion is represented (by specifying any dispersivity values) then this array is required. + +block griddata +name ath2 +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname transverse dispersivity in horizontal direction +description transverse dispersivity in horizontal direction. This is the transverse dispersivity value for the third ellipsoid axis. If flow is strictly horizontal and directed in the x direction (along a row for a regular grid), then this value controls spreading in the z direction. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH1. + +block griddata +name atv +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname transverse dispersivity when flow is in vertical direction +description transverse dispersivity when flow is in vertical direction. If flow is strictly vertical and directed in the z direction, then this value controls spreading in the x and y directions. If this value is not specified and mechanical dispersion is represented, then this array is set equal to ATH2. + +block griddata +name ktw +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname thermal conductivity of the simulated fluid +description thermal conductivity of the simulated fluid. Note that the CND Package does not account for the tortuosity of the flow paths when solving for the conductive spread of heat. If tortuosity plays an important role in the thermal conductivity calculation, its effect should be reflected in the value specified for KTW. + +block griddata +name kts +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname thermal conductivity of the aquifer material +description thermal conductivity of the aquifer material + diff --git a/flopy/mf6/data/dfn/gwe-ctp.dfn b/flopy/mf6/data/dfn/gwe-ctp.dfn new file mode 100644 index 0000000000..d8dd2bc68b --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-ctp.dfn @@ -0,0 +1,213 @@ +# --------------------- gwe ctp options --------------------- +# flopy multi-package + +block options +name auxiliary +type string +shape (naux) +reader urword +optional true +longname keyword to specify aux variables +description REPLACE auxnames {'{#1}': 'Groundwater Energy Transport'} + +block options +name auxmultname +type string +shape +reader urword +optional true +longname name of auxiliary variable for multiplier +description REPLACE auxmultname {'{#1}': 'temperature value'} + +block options +name boundnames +type keyword +shape +reader urword +optional true +longname +description REPLACE boundnames {'{#1}': 'constant temperature'} + +block options +name print_input +type keyword +reader urword +optional true +longname print input to listing file +description REPLACE print_input {'{#1}': 'constant temperature'} +mf6internal iprflow + +block options +name print_flows +type keyword +reader urword +optional true +longname print calculated flows to listing file +description REPLACE print_flows {'{#1}': 'constant temperature'} +mf6internal ipakcb + +block options +name save_flows +type keyword +reader urword +optional true +longname save constant temperature flows to budget file +description REPLACE save_flows {'{#1}': 'constant temperature'} +mf6internal iprpak + +block options +name ts_filerecord +type record ts6 filein ts6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name ts6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname time series keyword +description keyword to specify that record corresponds to a time-series file. + +block options +name filein +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an input filename is expected next. + +block options +name ts6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of time series information +description REPLACE timeseriesfile {} + +block options +name obs_filerecord +type record obs6 filein obs6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name obs6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname obs keyword +description keyword to specify that record corresponds to an observations file. + +block options +name obs6_filename +type string +preserve_case true +in_record true +tagged false +reader urword +optional false +longname obs6 input filename +description REPLACE obs6_filename {'{#1}': 'Constant Temperature'} + + +# --------------------- gwe ctp dimensions --------------------- + +block dimensions +name maxbound +type integer +reader urword +optional false +longname maximum number of constant temperatures +description REPLACE maxbound {'{#1}': 'constant temperatures'} + + +# --------------------- gwe ctp period --------------------- + +block period +name iper +type integer +block_variable True +in_record true +tagged false +shape +valid +reader urword +optional false +longname stress period number +description REPLACE iper {} + +block period +name stress_period_data +type recarray cellid temp aux boundname +shape (maxbound) +reader urword +longname +description +mf6internal spd + +block period +name cellid +type integer +shape (ncelldim) +tagged false +in_record true +reader urword +longname cell identifier +description REPLACE cellid {} + +block period +name temp +type double precision +shape +tagged false +in_record true +reader urword +time_series true +longname constant temperature value +description is the constant temperature value. 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. +mf6internal tspvar + +block period +name aux +type double precision +in_record true +tagged false +shape (naux) +reader urword +optional true +time_series true +longname auxiliary variables +description REPLACE aux {'{#1}': 'constant temperature'} +mf6internal auxvar + +block period +name boundname +type string +shape +tagged false +in_record true +reader urword +optional true +longname constant temperature name +description REPLACE boundname {'{#1}': 'constant temperature'} diff --git a/flopy/mf6/data/dfn/gwe-dis.dfn b/flopy/mf6/data/dfn/gwe-dis.dfn new file mode 100644 index 0000000000..2326105aa0 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-dis.dfn @@ -0,0 +1,130 @@ +# --------------------- gwe dis options --------------------- + +block options +name length_units +type string +reader urword +optional true +longname model length units +description is the length units used for this model. Values can be ``FEET'', ``METERS'', or ``CENTIMETERS''. If not specified, the default is ``UNKNOWN''. + +block options +name nogrb +type keyword +reader urword +optional true +longname do not write binary grid file +description keyword to deactivate writing of the binary grid file. + +block options +name xorigin +type double precision +reader urword +optional true +longname x-position of the model grid origin +description x-position of the lower-left corner of the model grid. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name yorigin +type double precision +reader urword +optional true +longname y-position of the model grid origin +description y-position of the lower-left corner of the model grid. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name angrot +type double precision +reader urword +optional true +longname rotation angle +description counter-clockwise rotation angle (in degrees) of the lower-left corner of the model grid. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +# --------------------- gwe dis dimensions --------------------- + +block dimensions +name nlay +type integer +reader urword +optional false +longname number of layers +description is the number of layers in the model grid. +default_value 1 + +block dimensions +name nrow +type integer +reader urword +optional false +longname number of rows +description is the number of rows in the model grid. +default_value 2 + +block dimensions +name ncol +type integer +reader urword +optional false +longname number of columns +description is the number of columns in the model grid. +default_value 2 + +# --------------------- gwe dis griddata --------------------- + +block griddata +name delr +type double precision +shape (ncol) +reader readarray +longname spacing along a row +description is the column spacing in the row direction. +default_value 1.0 + +block griddata +name delc +type double precision +shape (nrow) +reader readarray +longname spacing along a column +description is the row spacing in the column direction. +default_value 1.0 + +block griddata +name top +type double precision +shape (ncol, nrow) +reader readarray +longname cell top elevation +description is the top elevation for each cell in the top model layer. +default_value 1.0 + +block griddata +name botm +type double precision +shape (ncol, nrow, nlay) +reader readarray +layered true +longname cell bottom elevation +description is the bottom elevation for each cell. +default_value 0. + +block griddata +name idomain +type integer +shape (ncol, nrow, nlay) +reader readarray +layered true +optional true +longname idomain existence array +description is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a ``vertical pass through'' cell. + + diff --git a/flopy/mf6/data/dfn/gwe-disu.dfn b/flopy/mf6/data/dfn/gwe-disu.dfn new file mode 100644 index 0000000000..1b2035600a --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-disu.dfn @@ -0,0 +1,286 @@ +# --------------------- gwe disu options --------------------- + +block options +name length_units +type string +reader urword +optional true +longname model length units +description is the length units used for this model. Values can be ``FEET'', ``METERS'', or ``CENTIMETERS''. If not specified, the default is ``UNKNOWN''. + +block options +name nogrb +type keyword +reader urword +optional true +longname do not write binary grid file +description keyword to deactivate writing of the binary grid file. + +block options +name xorigin +type double precision +reader urword +optional true +longname x-position origin of the model grid coordinate system +description x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name yorigin +type double precision +reader urword +optional true +longname y-position origin of the model grid coordinate system +description y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name angrot +type double precision +reader urword +optional true +longname rotation angle +description counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name vertical_offset_tolerance +type double precision +reader urword +optional true +default_value 0.0 +longname vertical length dimension for top and bottom checking +description checks are performed to ensure that the top of a cell is not higher than the bottom of an overlying cell. This option can be used to specify the tolerance that is used for checking. If top of a cell is above the bottom of an overlying cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used. +mf6internal voffsettol + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +# --------------------- gwe disu dimensions --------------------- + +block dimensions +name nodes +type integer +reader urword +optional false +longname number of layers +description is the number of cells in the model grid. + +block dimensions +name nja +type integer +reader urword +optional false +longname number of columns +description is the sum of the number of connections and NODES. When calculating the total number of connections, the connection between cell n and cell m is considered to be different from the connection between cell m and cell n. Thus, NJA is equal to the total number of connections, including n to m and m to n, and the total number of cells. + +block dimensions +name nvert +type integer +reader urword +optional true +longname number of vertices +description is the total number of (x, y) vertex pairs used to define the plan-view shape of each cell in the model grid. If NVERT is not specified or is specified as zero, then the VERTICES and CELL2D blocks below are not read. NVERT and the accompanying VERTICES and CELL2D blocks should be specified for most simulations. If the XT3D or SAVE\_SPECIFIC\_DISCHARGE options are specified in the NPF Package, then this information is required. + +# --------------------- gwe disu griddata --------------------- + +block griddata +name top +type double precision +shape (nodes) +reader readarray +longname cell top elevation +description is the top elevation for each cell in the model grid. + +block griddata +name bot +type double precision +shape (nodes) +reader readarray +longname cell bottom elevation +description is the bottom elevation for each cell. + +block griddata +name area +type double precision +shape (nodes) +reader readarray +longname cell surface area +description is the cell surface area (in plan view). + +block griddata +name idomain +type integer +shape (nodes) +reader readarray +layered false +optional true +longname idomain existence array +description is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1 or greater, the cell exists in the simulation. IDOMAIN values of -1 cannot be specified for the DISU Package. + +# --------------------- gwe disu connectiondata --------------------- + +block connectiondata +name iac +type integer +shape (nodes) +reader readarray +longname number of cell connections +description is the number of connections (plus 1) for each cell. The sum of all the entries in IAC must be equal to NJA. + +block connectiondata +name ja +type integer +shape (nja) +reader readarray +longname grid connectivity +description is a list of cell number (n) followed by its connecting cell numbers (m) for each of the m cells connected to cell n. The number of values to provide for cell n is IAC(n). This list is sequentially provided for the first to the last cell. The first value in the list must be cell n itself, and the remaining cells must be listed in an increasing order (sorted from lowest number to highest). Note that the cell and its connections are only supplied for the GWE cells and their connections to the other GWE cells. Also note that the JA list input may be divided such that every node and its connectivity list can be on a separate line for ease in readability of the file. To further ease readability of the file, the node number of the cell whose connectivity is subsequently listed, may be expressed as a negative number, the sign of which is subsequently converted to positive by the code. +numeric_index true +jagged_array iac + +block connectiondata +name ihc +type integer +shape (nja) +reader readarray +longname connection type +description is an index array indicating the direction between node n and all of its m connections. If IHC = 0 then cell n and cell m are connected in the vertical direction. Cell n overlies cell m if the cell number for n is less than m; cell m overlies cell n if the cell number for m is less than n. If IHC = 1 then cell n and cell m are connected in the horizontal direction. If IHC = 2 then cell n and cell m are connected in the horizontal direction, and the connection is vertically staggered. A vertically staggered connection is one in which a cell is horizontally connected to more than one cell in a horizontal connection. +jagged_array iac + +block connectiondata +name cl12 +type double precision +shape (nja) +reader readarray +longname connection lengths +description is the array containing connection lengths between the center of cell n and the shared face with each adjacent m cell. +jagged_array iac + +block connectiondata +name hwva +type double precision +shape (nja) +reader readarray +longname connection lengths +description is a symmetric array of size NJA. For horizontal connections, entries in HWVA are the horizontal width perpendicular to flow. For vertical connections, entries in HWVA are the vertical area for flow. Thus, values in the HWVA array contain dimensions of both length and area. Entries in the HWVA array have a one-to-one correspondence with the connections specified in the JA array. Likewise, there is a one-to-one correspondence between entries in the HWVA array and entries in the IHC array, which specifies the connection type (horizontal or vertical). Entries in the HWVA array must be symmetric; the program will terminate with an error if the value for HWVA for an n to m connection does not equal the value for HWVA for the corresponding n to m connection. +jagged_array iac + +block connectiondata +name angldegx +type double precision +optional true +shape (nja) +reader readarray +longname angle of face normal to connection +description is the angle (in degrees) between the horizontal x-axis and the outward normal to the face between a cell and its connecting cells. The angle varies between zero and 360.0 degrees, where zero degrees points in the positive x-axis direction, and 90 degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the SAVE\_SPECIFIC\_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that ANGLDEGX is read in degrees, which is different from MODFLOW-USG, which reads a similar variable (ANGLEX) in radians. +jagged_array iac + +# --------------------- gwe disu vertices --------------------- + +block vertices +name vertices +type recarray iv xv yv +shape (nvert) +reader urword +optional false +longname vertices data +description + +block vertices +name iv +type integer +in_record true +tagged false +reader urword +optional false +longname vertex number +description is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT. +numeric_index true + +block vertices +name xv +type double precision +in_record true +tagged false +reader urword +optional false +longname x-coordinate for vertex +description is the x-coordinate for the vertex. + +block vertices +name yv +type double precision +in_record true +tagged false +reader urword +optional false +longname y-coordinate for vertex +description is the y-coordinate for the vertex. + + +# --------------------- gwe disu cell2d --------------------- + +block cell2d +name cell2d +type recarray icell2d xc yc ncvert icvert +shape (nodes) +reader urword +optional false +longname cell2d data +description + +block cell2d +name icell2d +type integer +in_record true +tagged false +reader urword +optional false +longname cell2d number +description is the cell2d number. Records in the CELL2D block must be listed in consecutive order from 1 to NODES. +numeric_index true + +block cell2d +name xc +type double precision +in_record true +tagged false +reader urword +optional false +longname x-coordinate for cell center +description is the x-coordinate for the cell center. + +block cell2d +name yc +type double precision +in_record true +tagged false +reader urword +optional false +longname y-coordinate for cell center +description is the y-coordinate for the cell center. + +block cell2d +name ncvert +type integer +in_record true +tagged false +reader urword +optional false +longname number of cell vertices +description is the number of vertices required to define the cell. There may be a different number of vertices for each cell. + +block cell2d +name icvert +type integer +shape (ncvert) +in_record true +tagged false +reader urword +optional false +longname array of vertex numbers +description is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. +numeric_index true diff --git a/flopy/mf6/data/dfn/gwe-disv.dfn b/flopy/mf6/data/dfn/gwe-disv.dfn new file mode 100644 index 0000000000..ff91ef0cfd --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-disv.dfn @@ -0,0 +1,213 @@ +# --------------------- gwe disv options --------------------- + +block options +name length_units +type string +reader urword +optional true +longname model length units +description is the length units used for this model. Values can be ``FEET'', ``METERS'', or ``CENTIMETERS''. If not specified, the default is ``UNKNOWN''. + +block options +name nogrb +type keyword +reader urword +optional true +longname do not write binary grid file +description keyword to deactivate writing of the binary grid file. + +block options +name xorigin +type double precision +reader urword +optional true +longname x-position origin of the model grid coordinate system +description x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name yorigin +type double precision +reader urword +optional true +longname y-position origin of the model grid coordinate system +description y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name angrot +type double precision +reader urword +optional true +longname rotation angle +description counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +# --------------------- gwe disv dimensions --------------------- + +block dimensions +name nlay +type integer +reader urword +optional false +longname number of layers +description is the number of layers in the model grid. + +block dimensions +name ncpl +type integer +reader urword +optional false +longname number of cells per layer +description is the number of cells per layer. This is a constant value for the grid and it applies to all layers. + +block dimensions +name nvert +type integer +reader urword +optional false +longname number of columns +description is the total number of (x, y) vertex pairs used to characterize the horizontal configuration of the model grid. + +# --------------------- gwe disv griddata --------------------- + +block griddata +name top +type double precision +shape (ncpl) +reader readarray +longname model top elevation +description is the top elevation for each cell in the top model layer. + +block griddata +name botm +type double precision +shape (ncpl, nlay) +reader readarray +layered true +longname model bottom elevation +description is the bottom elevation for each cell. + +block griddata +name idomain +type integer +shape (ncpl, nlay) +reader readarray +layered true +optional true +longname idomain existence array +description is an optional array that characterizes the existence status of a cell. If the IDOMAIN array is not specified, then all model cells exist within the solution. If the IDOMAIN value for a cell is 0, the cell does not exist in the simulation. Input and output values will be read and written for the cell, but internal to the program, the cell is excluded from the solution. If the IDOMAIN value for a cell is 1, the cell exists in the simulation. If the IDOMAIN value for a cell is -1, the cell does not exist in the simulation. Furthermore, the first existing cell above will be connected to the first existing cell below. This type of cell is referred to as a ``vertical pass through'' cell. + + +# --------------------- gwe disv vertices --------------------- + +block vertices +name vertices +type recarray iv xv yv +shape (nvert) +reader urword +optional false +longname vertices data +description + +block vertices +name iv +type integer +in_record true +tagged false +reader urword +optional false +longname vertex number +description is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT. +numeric_index true + +block vertices +name xv +type double precision +in_record true +tagged false +reader urword +optional false +longname x-coordinate for vertex +description is the x-coordinate for the vertex. + +block vertices +name yv +type double precision +in_record true +tagged false +reader urword +optional false +longname y-coordinate for vertex +description is the y-coordinate for the vertex. + + +# --------------------- gwe disv cell2d --------------------- + +block cell2d +name cell2d +type recarray icell2d xc yc ncvert icvert +shape (ncpl) +reader urword +optional false +longname cell2d data +description + +block cell2d +name icell2d +type integer +in_record true +tagged false +reader urword +optional false +longname cell2d number +description is the CELL2D number. Records in the CELL2D block must be listed in consecutive order from the first to the last. +numeric_index true + +block cell2d +name xc +type double precision +in_record true +tagged false +reader urword +optional false +longname x-coordinate for cell center +description is the x-coordinate for the cell center. + +block cell2d +name yc +type double precision +in_record true +tagged false +reader urword +optional false +longname y-coordinate for cell center +description is the y-coordinate for the cell center. + +block cell2d +name ncvert +type integer +in_record true +tagged false +reader urword +optional false +longname number of cell vertices +description is the number of vertices required to define the cell. There may be a different number of vertices for each cell. + +block cell2d +name icvert +type integer +shape (ncvert) +in_record true +tagged false +reader urword +optional false +longname array of vertex numbers +description is an array of integer values containing vertex numbers (in the VERTICES block) used to define the cell. Vertices must be listed in clockwise order. Cells that are connected must share vertices. +numeric_index true diff --git a/flopy/mf6/data/dfn/gwe-esl.dfn b/flopy/mf6/data/dfn/gwe-esl.dfn new file mode 100644 index 0000000000..534db1b027 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-esl.dfn @@ -0,0 +1,205 @@ +# --------------------- gwe esl options --------------------- + +block options +name auxiliary +type string +shape (naux) +reader urword +optional true +longname keyword to specify aux variables +description REPLACE auxnames {'{#1}': 'Groundwater Energy Transport'} + +block options +name auxmultname +type string +shape +reader urword +optional true +longname name of auxiliary variable for multiplier +description REPLACE auxmultname {'{#1}': 'energy loading rate'} + +block options +name boundnames +type keyword +shape +reader urword +optional true +longname +description REPLACE boundnames {'{#1}': 'energy source loading'} + +block options +name print_input +type keyword +reader urword +optional true +longname print input to listing file +description REPLACE print_input {'{#1}': 'energy source loading'} + +block options +name print_flows +type keyword +reader urword +optional true +longname print calculated flows to listing file +description REPLACE print_flows {'{#1}': 'energy source loading'} + +block options +name save_flows +type keyword +reader urword +optional true +longname save well flows to budget file +description REPLACE save_flows {'{#1}': 'energy source loading'} + +block options +name ts_filerecord +type record ts6 filein ts6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name ts6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname head keyword +description keyword to specify that record corresponds to a time-series file. + +block options +name filein +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an input filename is expected next. + +block options +name ts6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of time series information +description REPLACE timeseriesfile {} + +block options +name obs_filerecord +type record obs6 filein obs6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name obs6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname obs keyword +description keyword to specify that record corresponds to an observations file. + +block options +name obs6_filename +type string +preserve_case true +in_record true +tagged false +reader urword +optional false +longname obs6 input filename +description REPLACE obs6_filename {'{#1}': 'Energy Source Loading'} + +# --------------------- gwe esl dimensions --------------------- + +block dimensions +name maxbound +type integer +reader urword +optional false +longname maximum number of sources +description REPLACE maxbound {'{#1}': 'sources'} + + +# --------------------- gwe esl period --------------------- + +block period +name iper +type integer +block_variable True +in_record true +tagged false +shape +valid +reader urword +optional false +longname stress period number +description REPLACE iper {} + +block period +name stress_period_data +type recarray cellid senerrate aux boundname +shape (maxbound) +reader urword +longname +description + +block period +name cellid +type integer +shape (ncelldim) +tagged false +in_record true +reader urword +longname cell identifier +description REPLACE cellid {} + +block period +name senerrate +type double precision +shape +tagged false +in_record true +reader urword +time_series true +longname energy source loading rate +description is the energy source loading rate. A positive value indicates addition of energy and a negative value indicates removal of energy. 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. + +block period +name aux +type double precision +in_record true +tagged false +shape (naux) +reader urword +optional true +time_series true +longname auxiliary variables +description REPLACE aux {'{#1}': 'energy source'} + +block period +name boundname +type string +shape +tagged false +in_record true +reader urword +optional true +longname well name +description REPLACE boundname {'{#1}': 'energy source'} diff --git a/flopy/mf6/data/dfn/gwe-est.dfn b/flopy/mf6/data/dfn/gwe-est.dfn new file mode 100644 index 0000000000..22181237c3 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-est.dfn @@ -0,0 +1,106 @@ +# --------------------- gwe est options --------------------- + +block options +name save_flows +type keyword +reader urword +optional true +longname save calculated flows to budget file +description REPLACE save_flows {'{#1}': 'EST'} + +block options +name zero_order_decay +type keyword +reader urword +optional true +longname activate zero-order decay +description is a text keyword to indicate that zero-order decay will occur. Use of this keyword requires that DECAY and DECAY\_SORBED (if sorption is active) are specified in the GRIDDATA block. + +block options +name latent_heat_vaporization +type keyword +reader urword +optional true +longname activate cooling associated with evaporation +description is a text keyword to indicate that cooling associated with evaporation will occur. Use of this keyword requires that LATHEATVAP are specified in the GRIDDATA block. While the EST package does not simulate evaporation, multiple other packages in a GWE simulation may. For example, evaporation may occur from the surface of streams or lakes. Owing to the energy consumed by the change in phase, the latent heat of vaporization is required. + +# --------------------- gwe est griddata --------------------- + +block griddata +name porosity +type double precision +shape (nodes) +reader readarray +layered true +longname porosity +description is the mobile domain porosity, defined as the mobile domain pore volume per mobile domain volume. The GWE model does not support the concept of an immobile domain in the context of heat transport. + +block griddata +name decay +type double precision +shape (nodes) +reader readarray +layered true +optional true +longname aqueous phase decay rate coefficient +description is the rate coefficient for zero-order decay for the aqueous phase of the mobile domain. A negative value indicates heat (energy) production. The dimensions of decay for zero-order decay is energy per length cubed per time. Zero-order decay will have no effect on simulation results unless zero-order decay is specified in the options block. + +block griddata +name cps +type double precision +shape (nodes) +reader readarray +layered true +longname heat capacity of the aquifer material +description is the mass-based heat capacity of dry solids (aquifer material). For example, units of J/kg/C may be used (or equivalent). + +block griddata +name rhos +type double precision +shape (nodes) +reader readarray +layered true +longname density of aquifer material +description is a user-specified value of the density of aquifer material not considering the voids. Value will remain fixed for the entire simulation. For example, if working in SI units, values may be entered as kilograms per cubic meter. + +# --------------------- gwe est packagedata --------------------- + +block packagedata +name packagedata +type recarray cpw rhow latheatvap +shape +reader urword +longname +description + +block packagedata +name cpw +type double precision +shape +tagged false +in_record true +reader urword +longname heat capacity of water +description is the mass-based heat capacity of the simulated fluid. For example, units of J/kg/C may be used (or equivalent). + +block packagedata +name rhow +type double precision +shape +tagged false +in_record true +reader urword +longname density of water +description is a user-specified value of the density of water. Value will remain fixed for the entire simulation. For example, if working in SI units, values may be entered as kilograms per cubic meter. + + +block packagedata +name latheatvap +type double precision +shape +tagged false +in_record true +reader urword +longname latent heat of vaporization +description is the user-specified value for the latent heat of vaporization. For example, if working in SI units, values may be entered as kJ/kg. + diff --git a/flopy/mf6/data/dfn/gwe-fmi.dfn b/flopy/mf6/data/dfn/gwe-fmi.dfn new file mode 100644 index 0000000000..fb71131e60 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-fmi.dfn @@ -0,0 +1,58 @@ +# --------------------- gwe fmi options --------------------- + +block options +name save_flows +type keyword +reader urword +optional true +longname save calculated flow imbalance correction to budget file +description REPLACE save_flows {'{#1}': 'FMI'} + +block options +name flow_imbalance_correction +type keyword +reader urword +optional true +longname correct for flow imbalance +description correct for an imbalance in flows by assuming that any residual flow error comes in or leaves at the temperature of the cell. When this option is activated, the GWE Model budget written to the listing file will contain two additional entries: FLOW-ERROR and FLOW-CORRECTION. These two entries will be equal but opposite in sign. The FLOW-CORRECTION term is a mass flow that is added to offset the error caused by an imprecise flow balance. If these terms are not relatively small, the flow model should be rerun with stricter convergence tolerances. + +# --------------------- gwe fmi packagedata --------------------- + +block packagedata +name packagedata +type recarray flowtype filein fname +reader urword +optional false +longname flowtype list +description + +block packagedata +name flowtype +in_record true +type string +tagged false +reader urword +longname flow type +description is the word GWFBUDGET, GWFHEAD, GWFMOVER or the name of an advanced GWF stress package. If GWFBUDGET is specified, then the corresponding file must be a budget file from a previous GWF Model run. If an advanced GWF stress package name appears then the corresponding file must be the budget file saved by a LAK, SFR, MAW or UZF Package. + +block packagedata +name filein +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an input filename is expected next. + +block packagedata +name fname +in_record true +type string +preserve_case true +tagged false +reader urword +longname file name +description is the name of the file containing flows. The path to the file should be included if the file is not located in the folder where the program was run. + diff --git a/flopy/mf6/data/dfn/gwe-ic.dfn b/flopy/mf6/data/dfn/gwe-ic.dfn new file mode 100644 index 0000000000..6bd80b3de6 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-ic.dfn @@ -0,0 +1,22 @@ +# --------------------- gwe ic options --------------------- + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +# --------------------- gwe ic griddata --------------------- + +block griddata +name strt +type double precision +shape (nodes) +reader readarray +layered true +longname starting temperature +description is the initial (starting) temperature---that is, the temperature at the beginning of the GWE Model simulation. STRT must be specified for all GWE Model simulations. One value is read for every model cell. +default_value 0.0 diff --git a/flopy/mf6/data/dfn/gwe-lke.dfn b/flopy/mf6/data/dfn/gwe-lke.dfn new file mode 100644 index 0000000000..b59b50420b --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-lke.dfn @@ -0,0 +1,481 @@ +# --------------------- gwe lke options --------------------- +# flopy multi-package + +block options +name flow_package_name +type string +shape +reader urword +optional true +longname keyword to specify name of corresponding flow package +description keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file). + +block options +name auxiliary +type string +shape (naux) +reader urword +optional true +longname keyword to specify aux variables +description REPLACE auxnames {'{#1}': 'Groundwater Energy Transport'} + +block options +name flow_package_auxiliary_name +type string +shape +reader urword +optional true +longname keyword to specify name of temperature auxiliary variable in flow package +description keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect. + +block options +name boundnames +type keyword +shape +reader urword +optional true +longname +description REPLACE boundnames {'{#1}': 'lake'} + +block options +name print_input +type keyword +reader urword +optional true +longname print input to listing file +description REPLACE print_input {'{#1}': 'lake'} + +block options +name print_temperature +type keyword +reader urword +optional true +longname print calculated temperatures to listing file +description REPLACE print_temperature {'{#1}': 'lake', '{#2}': 'temperature', '{#3}': 'TEMPERATURE'} + +block options +name print_flows +type keyword +reader urword +optional true +longname print calculated flows to listing file +description REPLACE print_flows {'{#1}': 'lake'} + +block options +name save_flows +type keyword +reader urword +optional true +longname save lake flows to budget file +description REPLACE save_flows {'{#1}': 'lake'} + +block options +name temperature_filerecord +type record temperature fileout tempfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name temperature +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname stage keyword +description keyword to specify that record corresponds to temperature. + +block options +name tempfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description name of the binary output file to write temperature information. + +block options +name budget_filerecord +type record budget fileout budgetfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budget +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget. + +block options +name fileout +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an output filename is expected next. + +block options +name budgetfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description name of the binary output file to write budget information. + +block options +name budgetcsv_filerecord +type record budgetcsv fileout budgetcsvfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budgetcsv +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget CSV. + +block options +name budgetcsvfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description 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. + +block options +name ts_filerecord +type record ts6 filein ts6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name ts6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname head keyword +description keyword to specify that record corresponds to a time-series file. + +block options +name filein +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an input filename is expected next. + +block options +name ts6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of time series information +description REPLACE timeseriesfile {} + +block options +name obs_filerecord +type record obs6 filein obs6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name obs6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname obs keyword +description keyword to specify that record corresponds to an observations file. + +block options +name obs6_filename +type string +preserve_case true +in_record true +tagged false +reader urword +optional false +longname obs6 input filename +description REPLACE obs6_filename {'{#1}': 'LKE'} + + +# --------------------- gwe lke packagedata --------------------- + +block packagedata +name packagedata +type recarray lakeno strt ktf rbthcnd aux boundname +shape (maxbound) +reader urword +longname +description + +block packagedata +name lakeno +type integer +shape +tagged false +in_record true +reader urword +longname lake number for this entry +description integer value that defines the lake number associated with the specified PACKAGEDATA data on the line. LAKENO must be greater than zero and less than or equal to NLAKES. Lake information must be specified for every lake or the program will terminate with an error. The program will also terminate with an error if information for a lake is specified more than once. +numeric_index true + +block packagedata +name strt +type double precision +shape +tagged false +in_record true +reader urword +longname starting lake temperature +description real value that defines the starting temperature for the lake. + +block packagedata +name ktf +type double precision +shape +tagged false +in_record true +reader urword +longname boundary thermal conductivity +description is the thermal conductivity of the of the interface between the aquifer cell and the lake. + +block packagedata +name rbthcnd +type double precision +shape +tagged false +in_record true +reader urword +longname streambed thickness +description real value that defines the thickness of the lakebed material through which conduction occurs. Must be greater than 0. + +block packagedata +name aux +type double precision +in_record true +tagged false +shape (naux) +reader urword +time_series true +optional true +longname auxiliary variables +description REPLACE aux {'{#1}': 'lake'} + +block packagedata +name boundname +type string +shape +tagged false +in_record true +reader urword +optional true +longname lake name +description REPLACE boundname {'{#1}': 'lake'} + + +# --------------------- gwe lke period --------------------- + +block period +name iper +type integer +block_variable True +in_record true +tagged false +shape +valid +reader urword +optional false +longname stress period number +description REPLACE iper {} + +block period +name lakeperioddata +type recarray lakeno laksetting +shape +reader urword +longname +description + +block period +name lakeno +type integer +shape +tagged false +in_record true +reader urword +longname lake number for this entry +description integer value that defines the lake number associated with the specified PERIOD data on the line. LAKENO must be greater than zero and less than or equal to NLAKES. +numeric_index true + +block period +name laksetting +type keystring status temperature rainfall evaporation runoff ext-inflow auxiliaryrecord +shape +tagged false +in_record true +reader urword +longname +description line of information that is parsed into a keyword and values. Keyword values that can be used to start the LAKSETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Lake Package supports a ``WITHDRAWAL'' flow term. If this withdrawal term is active, then water will be withdrawn from the lake at the calculated temperature of the lake. + +block period +name status +type string +shape +tagged true +in_record true +reader urword +longname lake temperature status +description keyword option to define lake status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the lake. If a lake is inactive, then there will be no solute mass fluxes into or out of the lake and the inactive value will be written for the lake temperature. If a lake is constant, then the temperature for the lake will be fixed at the user specified value. + +block period +name temperature +type string +shape +tagged true +in_record true +time_series true +reader urword +longname lake temperature +description real or character value that defines the temperature for the lake. The specified TEMPERATURE is only applied if the lake is a constant temperature lake. 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. + +block period +name rainfall +type string +shape +tagged true +in_record true +reader urword +time_series true +longname rainfall temperature +description real or character value that defines the rainfall temperature for the lake. 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. + +block period +name evaporation +type string +shape +tagged true +in_record true +reader urword +time_series true +longname evaporation temperature +description real or character value that defines the temperature of evaporated water $(^{\circ}C)$ for the reach. If this temperature value is larger than the simulated temperature in the reach, then the evaporated water will be removed at the same temperature as the reach. 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. + + +block period +name runoff +type string +shape +tagged true +in_record true +reader urword +time_series true +longname runoff temperature +description real or character value that defines the temperature of runoff for the lake. Value must be greater than or equal to zero. 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. + +block period +name ext-inflow +type string +shape +tagged true +in_record true +reader urword +time_series true +longname ext-inflow temperature +description real or character value that defines the temperature of external inflow for the lake. Value must be greater than or equal to zero. 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. + +block period +name auxiliaryrecord +type record auxiliary auxname auxval +shape +tagged +in_record true +reader urword +longname +description + +block period +name auxiliary +type keyword +shape +in_record true +reader urword +longname +description keyword for specifying auxiliary variable. + +block period +name auxname +type string +shape +tagged false +in_record true +reader urword +longname +description name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored. + +block period +name auxval +type double precision +shape +tagged false +in_record true +reader urword +time_series true +longname auxiliary variable value +description value for the auxiliary variable. 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. diff --git a/flopy/mf6/data/dfn/gwe-mve.dfn b/flopy/mf6/data/dfn/gwe-mve.dfn new file mode 100644 index 0000000000..e67e76ba47 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-mve.dfn @@ -0,0 +1,106 @@ +# --------------------- gwe mve options --------------------- +# flopy subpackage mve_filerecord mve perioddata perioddata +# flopy parent_name_type parent_model_or_package MFModel/MFPackage + +block options +name print_input +type keyword +reader urword +optional true +longname print input to listing file +description REPLACE print_input {'{#1}': 'mover'} + +block options +name print_flows +type keyword +reader urword +optional true +longname print calculated flows to listing file +description REPLACE print_flows {'{#1}': 'lake'} + +block options +name save_flows +type keyword +reader urword +optional true +longname save lake flows to budget file +description REPLACE save_flows {'{#1}': 'lake'} + +block options +name budget_filerecord +type record budget fileout budgetfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budget +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget. + +block options +name fileout +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an output filename is expected next. + +block options +name budgetfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description name of the binary output file to write budget information. + +block options +name budgetcsv_filerecord +type record budgetcsv fileout budgetcsvfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budgetcsv +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget CSV. + +block options +name budgetcsvfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description 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. + + diff --git a/flopy/mf6/data/dfn/gwe-mwe.dfn b/flopy/mf6/data/dfn/gwe-mwe.dfn new file mode 100644 index 0000000000..c805b6533f --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-mwe.dfn @@ -0,0 +1,447 @@ +# --------------------- gwe mwe options --------------------- +# flopy multi-package + +block options +name flow_package_name +type string +shape +reader urword +optional true +longname keyword to specify name of corresponding flow package +description keyword to specify the name of the corresponding flow package. If not specified, then the corresponding flow package must have the same name as this advanced transport package (the name associated with this package in the GWE name file). + +block options +name auxiliary +type string +shape (naux) +reader urword +optional true +longname keyword to specify aux variables +description REPLACE auxnames {'{#1}': 'Groundwater Energy Transport'} + +block options +name flow_package_auxiliary_name +type string +shape +reader urword +optional true +longname keyword to specify name of temperature auxiliary variable in flow package +description keyword to specify the name of an auxiliary variable in the corresponding flow package. If specified, then the simulated temperatures from this advanced transport package will be copied into the auxiliary variable specified with this name. Note that the flow package must have an auxiliary variable with this name or the program will terminate with an error. If the flows for this advanced transport package are read from a file, then this option will have no effect. + +block options +name boundnames +type keyword +shape +reader urword +optional true +longname +description REPLACE boundnames {'{#1}': 'well'} + +block options +name print_input +type keyword +reader urword +optional true +longname print input to listing file +description REPLACE print_input {'{#1}': 'well'} + +block options +name print_temperature +type keyword +reader urword +optional true +longname print calculated temperatures to listing file +description REPLACE print_temperature {'{#1}': 'well', '{#2}': 'temperature', '{#3}': 'TEMPERATURE'} + +block options +name print_flows +type keyword +reader urword +optional true +longname print calculated flows to listing file +description REPLACE print_flows {'{#1}': 'well'} + +block options +name save_flows +type keyword +reader urword +optional true +longname save well flows to budget file +description REPLACE save_flows {'{#1}': 'well'} + +block options +name temperature_filerecord +type record temperature fileout tempfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name temperature +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname stage keyword +description keyword to specify that record corresponds to temperature. + +block options +name tempfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description name of the binary output file to write temperature information. + +block options +name budget_filerecord +type record budget fileout budgetfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budget +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget. + +block options +name fileout +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an output filename is expected next. + +block options +name budgetfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description name of the binary output file to write budget information. + +block options +name budgetcsv_filerecord +type record budgetcsv fileout budgetcsvfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budgetcsv +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget CSV. + +block options +name budgetcsvfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description 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. + +block options +name ts_filerecord +type record ts6 filein ts6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name ts6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname head keyword +description keyword to specify that record corresponds to a time-series file. + +block options +name filein +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an input filename is expected next. + +block options +name ts6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of time series information +description REPLACE timeseriesfile {} + +block options +name obs_filerecord +type record obs6 filein obs6_filename +shape +reader urword +tagged true +optional true +longname +description + +block options +name obs6 +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname obs keyword +description keyword to specify that record corresponds to an observations file. + +block options +name obs6_filename +type string +preserve_case true +in_record true +tagged false +reader urword +optional false +longname obs6 input filename +description REPLACE obs6_filename {'{#1}': 'MWE'} + + +# --------------------- gwe mwe packagedata --------------------- + +block packagedata +name packagedata +type recarray mawno strt ktf fthk aux boundname +shape (maxbound) +reader urword +longname +description + +block packagedata +name mawno +type integer +shape +tagged false +in_record true +reader urword +longname well number for this entry +description integer value that defines the well number associated with the specified PACKAGEDATA data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS. Well information must be specified for every well or the program will terminate with an error. The program will also terminate with an error if information for a well is specified more than once. +numeric_index true + +block packagedata +name strt +type double precision +shape +tagged false +in_record true +reader urword +longname starting well temperature +description real value that defines the starting temperature for the well. + +block packagedata +name ktf +type double precision +shape +tagged false +in_record true +reader urword +longname thermal conductivity of the feature +description is the thermal conductivity of the of the interface between the aquifer cell and the feature. + +block packagedata +name fthk +type double precision +shape +tagged false +in_record true +reader urword +longname thickness of the well feature +description real value that defines the thickness of the material through which conduction occurs. Must be greater than 0. + +block packagedata +name aux +type double precision +in_record true +tagged false +shape (naux) +reader urword +time_series true +optional true +longname auxiliary variables +description REPLACE aux {'{#1}': 'well'} + +block packagedata +name boundname +type string +shape +tagged false +in_record true +reader urword +optional true +longname well name +description REPLACE boundname {'{#1}': 'well'} + + +# --------------------- gwe mwe period --------------------- + +block period +name iper +type integer +block_variable True +in_record true +tagged false +shape +valid +reader urword +optional false +longname stress period number +description REPLACE iper {} + +block period +name mweperioddata +type recarray mawno mwesetting +shape +reader urword +longname +description + +block period +name mawno +type integer +shape +tagged false +in_record true +reader urword +longname well number for this entry +description integer value that defines the well number associated with the specified PERIOD data on the line. MAWNO must be greater than zero and less than or equal to NMAWWELLS. +numeric_index true + +block period +name mwesetting +type keystring status temperature rate auxiliaryrecord +shape +tagged false +in_record true +reader urword +longname +description line of information that is parsed into a keyword and values. Keyword values that can be used to start the MWESETTING string include: STATUS, TEMPERATURE, RAINFALL, EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign the temperature of associated with the corresponding flow terms. Temperatures cannot be specified for all flow terms. For example, the Multi-Aquifer Well Package supports a ``WITHDRAWAL'' flow term. If this withdrawal term is active, then water will be withdrawn from the well at the calculated temperature of the well. + +block period +name status +type string +shape +tagged true +in_record true +reader urword +longname well temperature status +description keyword option to define well status. STATUS can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is ACTIVE, which means that temperature will be calculated for the well. If a well is inactive, then there will be no solute mass fluxes into or out of the well and the inactive value will be written for the well temperature. If a well is constant, then the temperature for the well will be fixed at the user specified value. + +block period +name temperature +type string +shape +tagged true +in_record true +time_series true +reader urword +longname well temperature +description real or character value that defines the temperature for the well. The specified TEMPERATURE is only applied if the well is a constant temperature well. 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. + +block period +name rate +type string +shape +tagged true +in_record true +reader urword +time_series true +longname well injection temperature +description real or character value that defines the injection solute temperature $^{\circ}C$ for the well. 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. + +block period +name auxiliaryrecord +type record auxiliary auxname auxval +shape +tagged +in_record true +reader urword +longname +description + +block period +name auxiliary +type keyword +shape +in_record true +reader urword +longname +description keyword for specifying auxiliary variable. + +block period +name auxname +type string +shape +tagged false +in_record true +reader urword +longname +description name for the auxiliary variable to be assigned AUXVAL. AUXNAME must match one of the auxiliary variable names defined in the OPTIONS block. If AUXNAME does not match one of the auxiliary variable names defined in the OPTIONS block the data are ignored. + +block period +name auxval +type double precision +shape +tagged false +in_record true +reader urword +time_series true +longname auxiliary variable value +description value for the auxiliary variable. 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. diff --git a/flopy/mf6/data/dfn/gwe-nam.dfn b/flopy/mf6/data/dfn/gwe-nam.dfn new file mode 100644 index 0000000000..31aa8fd84b --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-nam.dfn @@ -0,0 +1,74 @@ +# --------------------- gwe nam options --------------------- + +block options +name list +type string +reader urword +optional true +preserve_case true +longname name of listing file +description is name of the listing file to create for this GWE model. If not specified, then the name of the list file will be the basename of the GWE model name file and the ``.lst'' extension. For example, if the GWE name file is called ``my.model.nam'' then the list file will be called ``my.model.lst''. + +block options +name print_input +type keyword +reader urword +optional true +longname print input to listing file +description REPLACE print_input {'{#1}': 'all model stress package'} + +block options +name print_flows +type keyword +reader urword +optional true +longname print calculated flows to listing file +description REPLACE print_flows {'{#1}': 'all model package'} + +block options +name save_flows +type keyword +reader urword +optional true +longname save flows for all packages to budget file +description REPLACE save_flows {'{#1}': 'all model package'} + +# --------------------- gwe nam packages --------------------- + +block packages +name packages +type recarray ftype fname pname +reader urword +optional false +longname package list +description + +block packages +name ftype +in_record true +type string +tagged false +reader urword +longname package type +description is the file type, which must be one of the following character values shown in table~\ref{table:ftype-gwe}. Ftype may be entered in any combination of uppercase and lowercase. + +block packages +name fname +in_record true +type string +preserve_case true +tagged false +reader urword +longname file name +description is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run. + +block packages +name pname +in_record true +type string +tagged false +reader urword +optional true +longname user name for package +description is the user-defined name for the package. PNAME is restricted to 16 characters. No spaces are allowed in PNAME. PNAME character values are read and stored by the program for stress packages only. These names may be useful for labeling purposes when multiple stress packages of the same type are located within a single GWE Model. If PNAME is specified for a stress package, then PNAME will be used in the flow budget table in the listing file; it will also be used for the text entry in the cell-by-cell budget file. PNAME is case insensitive and is stored in all upper case letters. + diff --git a/flopy/mf6/data/dfn/gwe-oc.dfn b/flopy/mf6/data/dfn/gwe-oc.dfn new file mode 100644 index 0000000000..74020a36b6 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-oc.dfn @@ -0,0 +1,313 @@ +# --------------------- gwe oc options --------------------- + +block options +name budget_filerecord +type record budget fileout budgetfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budget +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget. + +block options +name fileout +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname file keyword +description keyword to specify that an output filename is expected next. + +block options +name budgetfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description name of the output file to write budget information. + +block options +name budgetcsv_filerecord +type record budgetcsv fileout budgetcsvfile +shape +reader urword +tagged true +optional true +longname +description + +block options +name budgetcsv +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname budget keyword +description keyword to specify that record corresponds to the budget CSV. + +block options +name budgetcsvfile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description 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. + +block options +name temperature_filerecord +type record temperature fileout temperaturefile +shape +reader urword +tagged true +optional true +longname +description + +block options +name temperature +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname temperature keyword +description keyword to specify that record corresponds to temperature. + +block options +name temperaturefile +type string +preserve_case true +shape +in_record true +reader urword +tagged false +optional false +longname file keyword +description name of the output file to write temperature information. + +block options +name temperatureprintrecord +type record temperature print_format formatrecord +shape +reader urword +optional true +longname +description + +block options +name print_format +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname keyword to indicate that a print format follows +description keyword to specify format for printing to the listing file. + +block options +name formatrecord +type record columns width digits format +shape +in_record true +reader urword +tagged +optional false +longname +description + +block options +name columns +type integer +shape +in_record true +reader urword +tagged true +optional +longname number of columns +description number of columns for writing data. + +block options +name width +type integer +shape +in_record true +reader urword +tagged true +optional +longname width for each number +description width for writing each number. + +block options +name digits +type integer +shape +in_record true +reader urword +tagged true +optional +longname number of digits +description number of digits to use for writing a number. + +block options +name format +type string +shape +in_record true +reader urword +tagged false +optional false +longname write format +description write format can be EXPONENTIAL, FIXED, GENERAL, or SCIENTIFIC. + + +# --------------------- gwe oc period --------------------- + +block period +name iper +type integer +block_variable True +in_record true +tagged false +shape +valid +reader urword +optional false +longname stress period number +description REPLACE iper {} + +block period +name saverecord +type record save rtype ocsetting +shape +reader urword +tagged false +optional true +longname +description + +block period +name save +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname keyword to save +description keyword to indicate that information will be saved this stress period. + +block period +name printrecord +type record print rtype ocsetting +shape +reader urword +tagged false +optional true +longname +description + +block period +name print +type keyword +shape +in_record true +reader urword +tagged true +optional false +longname keyword to save +description keyword to indicate that information will be printed this stress period. + +block period +name rtype +type string +shape +in_record true +reader urword +tagged false +optional false +longname record type +description type of information to save or print. Can be BUDGET or TEMPERATURE. + +block period +name ocsetting +type keystring all first last frequency steps +shape +tagged false +in_record true +reader urword +longname +description specifies the steps for which the data will be saved. + +block period +name all +type keyword +shape +in_record true +reader urword +longname +description keyword to indicate save for all time steps in period. + +block period +name first +type keyword +shape +in_record true +reader urword +longname +description keyword to indicate save for first step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. + +block period +name last +type keyword +shape +in_record true +reader urword +longname +description keyword to indicate save for last step in period. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. + +block period +name frequency +type integer +shape +tagged true +in_record true +reader urword +longname +description save at the specified time step frequency. This keyword may be used in conjunction with other keywords to print or save results for multiple time steps. + +block period +name steps +type integer +shape ( + * is the exchange type (GWF-GWF or GWF-GWT). + exgmnamea : + * is the name of the first model that is part of this exchange. + exgmnameb : + * is the name of the second model that is part of this exchange. + gwfmodelname1 : string + * 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 + * 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] + * 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 GWF-GWF 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 : boolean + * boundnames (boolean) keyword to indicate that boundary names may be + provided with the list of GWE Exchange cells. + print_input : boolean + * print_input (boolean) keyword to indicate that the list of exchange + entries will be echoed to the listing file immediately after it is + read. + print_flows : boolean + * print_flows (boolean) 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 : boolean + * save_flows (boolean) 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 + * 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 : boolean + * cnd_xt3d_off (boolean) deactivate the xt3d method for the dispersive + flux and use the faster and less accurate approximation for this + exchange. + cnd_xt3d_rhs : boolean + * cnd_xt3d_rhs (boolean) add xt3d dispersion terms to right-hand side, + when possible, for this exchange. + filein : boolean + * filein (boolean) keyword to specify that an input filename is + expected next. + perioddata : {varname:data} or perioddata data + * Contains data for the mve package. Data can be stored in a dictionary + containing data for the mve package with variable names as keys and + package data as values. Data just for the perioddata variable is also + acceptable. See mve 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. + dev_interfacemodel_on : boolean + * dev_interfacemodel_on (boolean) 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 + * nexg (integer) keyword and integer value specifying the number of + GWE-GWE exchanges. + exchangedata : [cellidm1, cellidm2, ihc, cl1, cl2, hwva, aux, boundname] + * cellidm1 ((integer, ...)) is the cellid of the cell in model 1 as + specified in the simulation name file. For a structured grid that + uses the DIS input file, CELLIDM1 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, + CELLIDM1 is the layer number and CELL2D number for the two cells. If + the model uses the unstructured discretization (DISU) input file, + then CELLIDM1 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. + * cellidm2 ((integer, ...)) is the cellid of the cell in model 2 as + specified in the simulation name file. For a structured grid that + uses the DIS input file, CELLIDM2 is the layer, row, and column + numbers of the cell. For a grid that uses the DISV input file, + CELLIDM2 is the layer number and CELL2D number for the two cells. If + the model uses the unstructured discretization (DISU) input file, + then CELLIDM2 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. + * ihc (integer) is an integer flag indicating the direction between + node n and all of its m connections. If IHC = 0 then the connection + is vertical. If IHC = 1 then the connection is horizontal. If IHC = 2 + then the connection is horizontal for a vertically staggered grid. + * cl1 (double) is the distance between the center of cell 1 and the its + shared face with cell 2. + * cl2 (double) is the distance between the center of cell 2 and the its + shared face with cell 1. + * hwva (double) is the horizontal width of the flow connection between + cell 1 and cell 2 if IHC > 0, or it is the area perpendicular to flow + of the vertical connection between cell 1 and cell 2 if IHC = 0. + * aux (double) represents the values of the auxiliary variables for + each GWEGWE Exchange. The values of auxiliary variables must be + present for each exchange. The values must be specified in the order + of the auxiliary variables specified in the OPTIONS block. + * boundname (string) name of the GWE Exchange 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(("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 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 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, + filein=None, + perioddata=None, + observations=None, + dev_interfacemodel_on=None, + nexg=None, + exchangedata=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + simulation, "gwegwe", filename, pname, loading_package, **kwargs + ) + + # set up variables + 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.filein = self.build_mfdata("filein", filein) + 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 diff --git a/flopy/mf6/modflow/mfgweic.py b/flopy/mf6/modflow/mfgweic.py new file mode 100644 index 0000000000..24fcfd4cb8 --- /dev/null +++ b/flopy/mf6/modflow/mfgweic.py @@ -0,0 +1,86 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ArrayTemplateGenerator + + +class ModflowGweic(mfpackage.MFPackage): + """ + ModflowGweic defines a ic package within a gwe6 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. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. + strt : [double] + * strt (double) is the initial (starting) temperature---that is, the + temperature at the beginning of the GWE Model simulation. STRT must + be specified for all GWE Model simulations. One value is read for + every model cell. + 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. + + """ + + strt = ArrayTemplateGenerator(("gwe6", "ic", "griddata", "strt")) + package_abbr = "gweic" + _package_type = "ic" + dfn_file_name = "gwe-ic.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], + [ + "block griddata", + "name strt", + "type double precision", + "shape (nodes)", + "reader readarray", + "layered true", + "default_value 0.0", + ], + ] + + def __init__( + self, + model, + loading_package=False, + export_array_ascii=None, + strt=0.0, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "ic", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) + self.strt = self.build_mfdata("strt", strt) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfgwelke.py b/flopy/mf6/modflow/mfgwelke.py new file mode 100644 index 0000000000..b0b96d6592 --- /dev/null +++ b/flopy/mf6/modflow/mfgwelke.py @@ -0,0 +1,734 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowGwelke(mfpackage.MFPackage): + """ + ModflowGwelke defines a lke package within a gwe6 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. + flow_package_name : string + * flow_package_name (string) keyword to specify the name of the + corresponding flow package. If not specified, then the corresponding + flow package must have the same name as this advanced transport + package (the name associated with this package in the GWE name file). + 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. + flow_package_auxiliary_name : string + * flow_package_auxiliary_name (string) keyword to specify the name of + an auxiliary variable in the corresponding flow package. If + specified, then the simulated temperatures from this advanced + transport package will be copied into the auxiliary variable + specified with this name. Note that the flow package must have an + auxiliary variable with this name or the program will terminate with + an error. If the flows for this advanced transport package are read + from a file, then this option will have no effect. + boundnames : boolean + * boundnames (boolean) keyword to indicate that boundary names may be + provided with the list of lake cells. + print_input : boolean + * print_input (boolean) keyword to indicate that the list of lake + information will be written to the listing file immediately after it + is read. + print_temperature : boolean + * print_temperature (boolean) keyword to indicate that the list of lake + temperature will be printed to the listing file for every stress + period in which "TEMPERATURE PRINT" is specified in Output Control. + If there is no Output Control option and PRINT_TEMPERATURE is + specified, then temperature are printed for the last time step of + each stress period. + print_flows : boolean + * print_flows (boolean) keyword to indicate that the list of lake 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 lake flow terms will be + written to the file specified with "BUDGET FILEOUT" in Output + Control. + temperature_filerecord : [tempfile] + * tempfile (string) name of the binary output file to write temperature + 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. + 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. + packagedata : [lakeno, strt, ktf, rbthcnd, aux, boundname] + * lakeno (integer) integer value that defines the lake number + associated with the specified PACKAGEDATA data on the line. LAKENO + must be greater than zero and less than or equal to NLAKES. Lake + information must be specified for every lake or the program will + terminate with an error. The program will also terminate with an + error if information for a lake is specified more than once. 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. + * strt (double) real value that defines the starting temperature for + the lake. + * ktf (double) is the thermal conductivity of the of the interface + between the aquifer cell and the lake. + * rbthcnd (double) real value that defines the thickness of the lakebed + material through which conduction occurs. Must be greater than 0. + * aux (double) represents the values of the auxiliary variables for + each lake. The values of auxiliary variables must be present for each + lake. 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 lake 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. + lakeperioddata : [lakeno, laksetting] + * lakeno (integer) integer value that defines the lake number + associated with the specified PERIOD data on the line. LAKENO must be + greater than zero and less than or equal to NLAKES. 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. + * laksetting (keystring) line of information that is parsed into a + keyword and values. Keyword values that can be used to start the + LAKSETTING string include: STATUS, TEMPERATURE, RAINFALL, + EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign + the temperature associated with the corresponding flow terms. + Temperatures cannot be specified for all flow terms. For example, the + Lake Package supports a "WITHDRAWAL" flow term. If this withdrawal + term is active, then water will be withdrawn from the lake at the + calculated temperature of the lake. + status : [string] + * status (string) keyword option to define lake status. STATUS + can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is + ACTIVE, which means that temperature will be calculated for + the lake. If a lake is inactive, then there will be no solute + mass fluxes into or out of the lake and the inactive value + will be written for the lake temperature. If a lake is + constant, then the temperature for the lake will be fixed at + the user specified value. + temperature : [string] + * temperature (string) real or character value that defines the + temperature for the lake. The specified TEMPERATURE is only + applied if the lake is a constant temperature lake. 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. + rainfall : [string] + * rainfall (string) real or character value that defines the + rainfall temperature for the lake. 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. + evaporation : [string] + * evaporation (string) real or character value that defines the + temperature of evaporated water :math:`(^{\\circ}C)` for the + reach. If this temperature value is larger than the simulated + temperature in the reach, then the evaporated water will be + removed at the same temperature as the reach. 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. + runoff : [string] + * runoff (string) real or character value that defines the + temperature of runoff for the lake. Value must be greater + than or equal to zero. 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. + ext_inflow : [string] + * ext-inflow (string) real or character value that defines the + temperature of external inflow for the lake. Value must be + greater than or equal to zero. 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. + auxiliaryrecord : [auxname, auxval] + * auxname (string) name for the auxiliary variable to be + assigned AUXVAL. AUXNAME must match one of the auxiliary + variable names defined in the OPTIONS block. If AUXNAME does + not match one of the auxiliary variable names defined in the + OPTIONS block the data are ignored. + * auxval (double) value for the auxiliary variable. 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. + 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(("gwe6", "lke", "options", "auxiliary")) + temperature_filerecord = ListTemplateGenerator( + ("gwe6", "lke", "options", "temperature_filerecord") + ) + budget_filerecord = ListTemplateGenerator( + ("gwe6", "lke", "options", "budget_filerecord") + ) + budgetcsv_filerecord = ListTemplateGenerator( + ("gwe6", "lke", "options", "budgetcsv_filerecord") + ) + ts_filerecord = ListTemplateGenerator( + ("gwe6", "lke", "options", "ts_filerecord") + ) + obs_filerecord = ListTemplateGenerator( + ("gwe6", "lke", "options", "obs_filerecord") + ) + packagedata = ListTemplateGenerator( + ("gwe6", "lke", "packagedata", "packagedata") + ) + lakeperioddata = ListTemplateGenerator( + ("gwe6", "lke", "period", "lakeperioddata") + ) + package_abbr = "gwelke" + _package_type = "lke" + dfn_file_name = "gwe-lke.dfn" + + dfn = [ + [ + "header", + "multi-package", + ], + [ + "block options", + "name flow_package_name", + "type string", + "shape", + "reader urword", + "optional true", + ], + [ + "block options", + "name auxiliary", + "type string", + "shape (naux)", + "reader urword", + "optional true", + ], + [ + "block options", + "name flow_package_auxiliary_name", + "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_temperature", + "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 temperature_filerecord", + "type record temperature fileout tempfile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name temperature", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name tempfile", + "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 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 packagedata", + "name packagedata", + "type recarray lakeno strt ktf rbthcnd aux boundname", + "shape (maxbound)", + "reader urword", + ], + [ + "block packagedata", + "name lakeno", + "type integer", + "shape", + "tagged false", + "in_record true", + "reader urword", + "numeric_index true", + ], + [ + "block packagedata", + "name strt", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block packagedata", + "name ktf", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block packagedata", + "name rbthcnd", + "type double precision", + "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 period", + "name iper", + "type integer", + "block_variable True", + "in_record true", + "tagged false", + "shape", + "valid", + "reader urword", + "optional false", + ], + [ + "block period", + "name lakeperioddata", + "type recarray lakeno laksetting", + "shape", + "reader urword", + ], + [ + "block period", + "name lakeno", + "type integer", + "shape", + "tagged false", + "in_record true", + "reader urword", + "numeric_index true", + ], + [ + "block period", + "name laksetting", + "type keystring status temperature rainfall evaporation runoff " + "ext-inflow 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 temperature", + "type string", + "shape", + "tagged true", + "in_record true", + "time_series true", + "reader urword", + ], + [ + "block period", + "name rainfall", + "type string", + "shape", + "tagged true", + "in_record true", + "reader urword", + "time_series true", + ], + [ + "block period", + "name evaporation", + "type string", + "shape", + "tagged true", + "in_record true", + "reader urword", + "time_series true", + ], + [ + "block period", + "name runoff", + "type string", + "shape", + "tagged true", + "in_record true", + "reader urword", + "time_series true", + ], + [ + "block period", + "name ext-inflow", + "type string", + "shape", + "tagged true", + "in_record true", + "reader urword", + "time_series true", + ], + [ + "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, + flow_package_name=None, + auxiliary=None, + flow_package_auxiliary_name=None, + boundnames=None, + print_input=None, + print_temperature=None, + print_flows=None, + save_flows=None, + temperature_filerecord=None, + budget_filerecord=None, + budgetcsv_filerecord=None, + timeseries=None, + observations=None, + packagedata=None, + lakeperioddata=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "lke", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.flow_package_name = self.build_mfdata( + "flow_package_name", flow_package_name + ) + self.auxiliary = self.build_mfdata("auxiliary", auxiliary) + self.flow_package_auxiliary_name = self.build_mfdata( + "flow_package_auxiliary_name", flow_package_auxiliary_name + ) + self.boundnames = self.build_mfdata("boundnames", boundnames) + self.print_input = self.build_mfdata("print_input", print_input) + self.print_temperature = self.build_mfdata( + "print_temperature", print_temperature + ) + self.print_flows = self.build_mfdata("print_flows", print_flows) + self.save_flows = self.build_mfdata("save_flows", save_flows) + self.temperature_filerecord = self.build_mfdata( + "temperature_filerecord", temperature_filerecord + ) + self.budget_filerecord = self.build_mfdata( + "budget_filerecord", budget_filerecord + ) + self.budgetcsv_filerecord = self.build_mfdata( + "budgetcsv_filerecord", budgetcsv_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.packagedata = self.build_mfdata("packagedata", packagedata) + self.lakeperioddata = self.build_mfdata( + "lakeperioddata", lakeperioddata + ) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfgwemve.py b/flopy/mf6/modflow/mfgwemve.py new file mode 100644 index 0000000000..e57ef46467 --- /dev/null +++ b/flopy/mf6/modflow/mfgwemve.py @@ -0,0 +1,256 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowGwemve(mfpackage.MFPackage): + """ + ModflowGwemve defines a mve package within a gwe6 model. + + Parameters + ---------- + parent_model_or_package : MFModel/MFPackage + Parent_model_or_package that this package is a part of. Package is automatically + added to parent_model_or_package when it is initialized. + loading_package : bool + Do not set this parameter. It is intended for debugging and internal + processing purposes only. + print_input : boolean + * print_input (boolean) keyword to indicate that the list of mover + 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 lake 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 lake flow terms will be + written to the file specified with "BUDGET FILEOUT" in Output + Control. + 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. + 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. + + """ + + budget_filerecord = ListTemplateGenerator( + ("gwe6", "mve", "options", "budget_filerecord") + ) + budgetcsv_filerecord = ListTemplateGenerator( + ("gwe6", "mve", "options", "budgetcsv_filerecord") + ) + package_abbr = "gwemve" + _package_type = "mve" + dfn_file_name = "gwe-mve.dfn" + + dfn = [ + [ + "header", + ], + [ + "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 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", + ], + ] + + def __init__( + self, + parent_model_or_package, + loading_package=False, + print_input=None, + print_flows=None, + save_flows=None, + budget_filerecord=None, + budgetcsv_filerecord=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + parent_model_or_package, + "mve", + filename, + pname, + loading_package, + **kwargs, + ) + + # set up variables + 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.budget_filerecord = self.build_mfdata( + "budget_filerecord", budget_filerecord + ) + self.budgetcsv_filerecord = self.build_mfdata( + "budgetcsv_filerecord", budgetcsv_filerecord + ) + self._init_complete = True + + +class GwemvePackages(mfpackage.MFChildPackages): + """ + GwemvePackages is a container class for the ModflowGwemve class. + + Methods + ---------- + initialize + Initializes a new ModflowGwemve package removing any sibling child + packages attached to the same parent package. See ModflowGwemve init + documentation for definition of parameters. + append_package + Adds a new ModflowGwemve package to the container. See ModflowGwemve + init documentation for definition of parameters. + """ + + package_abbr = "gwemvepackages" + + def initialize( + self, + print_input=None, + print_flows=None, + save_flows=None, + budget_filerecord=None, + budgetcsv_filerecord=None, + filename=None, + pname=None, + ): + new_package = ModflowGwemve( + self._cpparent, + print_input=print_input, + print_flows=print_flows, + save_flows=save_flows, + budget_filerecord=budget_filerecord, + budgetcsv_filerecord=budgetcsv_filerecord, + filename=filename, + pname=pname, + child_builder_call=True, + ) + self.init_package(new_package, filename) + + def append_package( + self, + print_input=None, + print_flows=None, + save_flows=None, + budget_filerecord=None, + budgetcsv_filerecord=None, + filename=None, + pname=None, + ): + new_package = ModflowGwemve( + self._cpparent, + print_input=print_input, + print_flows=print_flows, + save_flows=save_flows, + budget_filerecord=budget_filerecord, + budgetcsv_filerecord=budgetcsv_filerecord, + filename=filename, + pname=pname, + child_builder_call=True, + ) + self._append_package(new_package, filename) diff --git a/flopy/mf6/modflow/mfgwemwe.py b/flopy/mf6/modflow/mfgwemwe.py new file mode 100644 index 0000000000..e38b850647 --- /dev/null +++ b/flopy/mf6/modflow/mfgwemwe.py @@ -0,0 +1,679 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowGwemwe(mfpackage.MFPackage): + """ + ModflowGwemwe defines a mwe package within a gwe6 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. + flow_package_name : string + * flow_package_name (string) keyword to specify the name of the + corresponding flow package. If not specified, then the corresponding + flow package must have the same name as this advanced transport + package (the name associated with this package in the GWE name file). + 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. + flow_package_auxiliary_name : string + * flow_package_auxiliary_name (string) keyword to specify the name of + an auxiliary variable in the corresponding flow package. If + specified, then the simulated temperatures from this advanced + transport package will be copied into the auxiliary variable + specified with this name. Note that the flow package must have an + auxiliary variable with this name or the program will terminate with + an error. If the flows for this advanced transport package are read + from a file, then this option will have no effect. + boundnames : boolean + * boundnames (boolean) keyword to indicate that boundary names may be + provided with the list of well cells. + print_input : boolean + * print_input (boolean) keyword to indicate that the list of well + information will be written to the listing file immediately after it + is read. + print_temperature : boolean + * print_temperature (boolean) keyword to indicate that the list of well + temperature will be printed to the listing file for every stress + period in which "TEMPERATURE PRINT" is specified in Output Control. + If there is no Output Control option and PRINT_TEMPERATURE is + specified, then temperature are printed for the last time step of + each stress period. + print_flows : boolean + * print_flows (boolean) keyword to indicate that the list of 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 : boolean + * save_flows (boolean) keyword to indicate that well flow terms will be + written to the file specified with "BUDGET FILEOUT" in Output + Control. + temperature_filerecord : [tempfile] + * tempfile (string) name of the binary output file to write temperature + 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. + 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. + packagedata : [mawno, strt, ktf, fthk, aux, boundname] + * mawno (integer) integer value that defines the well number associated + with the specified PACKAGEDATA data on the line. MAWNO must be + greater than zero and less than or equal to NMAWWELLS. Well + information must be specified for every well or the program will + terminate with an error. The program will also terminate with an + error if information for a well is specified more than once. 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. + * strt (double) real value that defines the starting temperature for + the well. + * ktf (double) is the thermal conductivity of the of the interface + between the aquifer cell and the feature. + * fthk (double) real value that defines the thickness of the material + through which conduction occurs. Must be greater than 0. + * aux (double) represents the values of the auxiliary variables for + each well. The values of auxiliary variables must be present for each + well. 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 well 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. + mweperioddata : [mawno, mwesetting] + * mawno (integer) integer value that defines the well number associated + with the specified PERIOD data on the line. MAWNO must be greater + than zero and less than or equal to NMAWWELLS. 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. + * mwesetting (keystring) line of information that is parsed into a + keyword and values. Keyword values that can be used to start the + MWESETTING string include: STATUS, TEMPERATURE, RAINFALL, + EVAPORATION, RUNOFF, and AUXILIARY. These settings are used to assign + the temperature of associated with the corresponding flow terms. + Temperatures cannot be specified for all flow terms. For example, the + Multi-Aquifer Well Package supports a "WITHDRAWAL" flow term. If this + withdrawal term is active, then water will be withdrawn from the well + at the calculated temperature of the well. + status : [string] + * status (string) keyword option to define well status. STATUS + can be ACTIVE, INACTIVE, or CONSTANT. By default, STATUS is + ACTIVE, which means that temperature will be calculated for + the well. If a well is inactive, then there will be no solute + mass fluxes into or out of the well and the inactive value + will be written for the well temperature. If a well is + constant, then the temperature for the well will be fixed at + the user specified value. + temperature : [string] + * temperature (string) real or character value that defines the + temperature for the well. The specified TEMPERATURE is only + applied if the well is a constant temperature well. 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 : [string] + * rate (string) real or character value that defines the + injection solute temperature :math:`^{\\circ}C` for the well. + 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. + auxiliaryrecord : [auxname, auxval] + * auxname (string) name for the auxiliary variable to be + assigned AUXVAL. AUXNAME must match one of the auxiliary + variable names defined in the OPTIONS block. If AUXNAME does + not match one of the auxiliary variable names defined in the + OPTIONS block the data are ignored. + * auxval (double) value for the auxiliary variable. 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. + 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(("gwe6", "mwe", "options", "auxiliary")) + temperature_filerecord = ListTemplateGenerator( + ("gwe6", "mwe", "options", "temperature_filerecord") + ) + budget_filerecord = ListTemplateGenerator( + ("gwe6", "mwe", "options", "budget_filerecord") + ) + budgetcsv_filerecord = ListTemplateGenerator( + ("gwe6", "mwe", "options", "budgetcsv_filerecord") + ) + ts_filerecord = ListTemplateGenerator( + ("gwe6", "mwe", "options", "ts_filerecord") + ) + obs_filerecord = ListTemplateGenerator( + ("gwe6", "mwe", "options", "obs_filerecord") + ) + packagedata = ListTemplateGenerator( + ("gwe6", "mwe", "packagedata", "packagedata") + ) + mweperioddata = ListTemplateGenerator( + ("gwe6", "mwe", "period", "mweperioddata") + ) + package_abbr = "gwemwe" + _package_type = "mwe" + dfn_file_name = "gwe-mwe.dfn" + + dfn = [ + [ + "header", + "multi-package", + ], + [ + "block options", + "name flow_package_name", + "type string", + "shape", + "reader urword", + "optional true", + ], + [ + "block options", + "name auxiliary", + "type string", + "shape (naux)", + "reader urword", + "optional true", + ], + [ + "block options", + "name flow_package_auxiliary_name", + "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_temperature", + "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 temperature_filerecord", + "type record temperature fileout tempfile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name temperature", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name tempfile", + "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 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 packagedata", + "name packagedata", + "type recarray mawno strt ktf fthk aux boundname", + "shape (maxbound)", + "reader urword", + ], + [ + "block packagedata", + "name mawno", + "type integer", + "shape", + "tagged false", + "in_record true", + "reader urword", + "numeric_index true", + ], + [ + "block packagedata", + "name strt", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block packagedata", + "name ktf", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block packagedata", + "name fthk", + "type double precision", + "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 period", + "name iper", + "type integer", + "block_variable True", + "in_record true", + "tagged false", + "shape", + "valid", + "reader urword", + "optional false", + ], + [ + "block period", + "name mweperioddata", + "type recarray mawno mwesetting", + "shape", + "reader urword", + ], + [ + "block period", + "name mawno", + "type integer", + "shape", + "tagged false", + "in_record true", + "reader urword", + "numeric_index true", + ], + [ + "block period", + "name mwesetting", + "type keystring status temperature rate 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 temperature", + "type string", + "shape", + "tagged true", + "in_record true", + "time_series true", + "reader urword", + ], + [ + "block period", + "name rate", + "type string", + "shape", + "tagged true", + "in_record true", + "reader urword", + "time_series true", + ], + [ + "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, + flow_package_name=None, + auxiliary=None, + flow_package_auxiliary_name=None, + boundnames=None, + print_input=None, + print_temperature=None, + print_flows=None, + save_flows=None, + temperature_filerecord=None, + budget_filerecord=None, + budgetcsv_filerecord=None, + timeseries=None, + observations=None, + packagedata=None, + mweperioddata=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "mwe", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.flow_package_name = self.build_mfdata( + "flow_package_name", flow_package_name + ) + self.auxiliary = self.build_mfdata("auxiliary", auxiliary) + self.flow_package_auxiliary_name = self.build_mfdata( + "flow_package_auxiliary_name", flow_package_auxiliary_name + ) + self.boundnames = self.build_mfdata("boundnames", boundnames) + self.print_input = self.build_mfdata("print_input", print_input) + self.print_temperature = self.build_mfdata( + "print_temperature", print_temperature + ) + self.print_flows = self.build_mfdata("print_flows", print_flows) + self.save_flows = self.build_mfdata("save_flows", save_flows) + self.temperature_filerecord = self.build_mfdata( + "temperature_filerecord", temperature_filerecord + ) + self.budget_filerecord = self.build_mfdata( + "budget_filerecord", budget_filerecord + ) + self.budgetcsv_filerecord = self.build_mfdata( + "budgetcsv_filerecord", budgetcsv_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.packagedata = self.build_mfdata("packagedata", packagedata) + self.mweperioddata = self.build_mfdata("mweperioddata", mweperioddata) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfgwenam.py b/flopy/mf6/modflow/mfgwenam.py new file mode 100644 index 0000000000..a012c6d9c1 --- /dev/null +++ b/flopy/mf6/modflow/mfgwenam.py @@ -0,0 +1,164 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowGwenam(mfpackage.MFPackage): + """ + ModflowGwenam defines a nam package within a gwe6 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. + list : string + * list (string) is name of the listing file to create for this GWE + model. If not specified, then the name of the list file will be the + basename of the GWE model name file and the ".lst" extension. For + example, if the GWE name file is called "my.model.nam" then the list + file will be called "my.model.lst". + print_input : boolean + * print_input (boolean) keyword to indicate that the list of all model + stress package 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 all model + package 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 all model package flow + terms will be written to the file specified with "BUDGET FILEOUT" in + Output Control. + packages : [ftype, fname, pname] + * ftype (string) is the file type, which must be one of the following + character values shown in table ref{table:ftype-gwe}. Ftype may be + entered in any combination of uppercase and lowercase. + * fname (string) is the name of the file containing the package input. + The path to the file should be included if the file is not located in + the folder where the program was run. + * pname (string) is the user-defined name for the package. PNAME is + restricted to 16 characters. No spaces are allowed in PNAME. PNAME + character values are read and stored by the program for stress + packages only. These names may be useful for labeling purposes when + multiple stress packages of the same type are located within a single + GWE Model. If PNAME is specified for a stress package, then PNAME + will be used in the flow budget table in the listing file; it will + also be used for the text entry in the cell-by-cell budget file. + PNAME is case insensitive and is stored in all upper case letters. + 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. + + """ + + packages = ListTemplateGenerator(("gwe6", "nam", "packages", "packages")) + package_abbr = "gwenam" + _package_type = "nam" + dfn_file_name = "gwe-nam.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name list", + "type string", + "reader urword", + "optional true", + "preserve_case 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 packages", + "name packages", + "type recarray ftype fname pname", + "reader urword", + "optional false", + ], + [ + "block packages", + "name ftype", + "in_record true", + "type string", + "tagged false", + "reader urword", + ], + [ + "block packages", + "name fname", + "in_record true", + "type string", + "preserve_case true", + "tagged false", + "reader urword", + ], + [ + "block packages", + "name pname", + "in_record true", + "type string", + "tagged false", + "reader urword", + "optional true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + list=None, + print_input=None, + print_flows=None, + save_flows=None, + packages=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "nam", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.list = self.build_mfdata("list", list) + 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.packages = self.build_mfdata("packages", packages) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfgweoc.py b/flopy/mf6/modflow/mfgweoc.py new file mode 100644 index 0000000000..f188f4b293 --- /dev/null +++ b/flopy/mf6/modflow/mfgweoc.py @@ -0,0 +1,433 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowGweoc(mfpackage.MFPackage): + """ + ModflowGweoc defines a oc package within a gwe6 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. + budget_filerecord : [budgetfile] + * budgetfile (string) name of the 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. + temperature_filerecord : [temperaturefile] + * temperaturefile (string) name of the output file to write temperature + information. + temperatureprintrecord : [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. + saverecord : [rtype, ocsetting] + * rtype (string) type of information to save or print. Can be BUDGET or + TEMPERATURE. + * ocsetting (keystring) specifies the steps for which the data will be + saved. + all : [keyword] + * all (keyword) keyword to indicate save for all time steps in + period. + first : [keyword] + * first (keyword) keyword to indicate save for first step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + last : [keyword] + * last (keyword) keyword to indicate save for last step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + frequency : [integer] + * frequency (integer) save at the specified time step + frequency. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + steps : [integer] + * steps (integer) save for each step specified in STEPS. This + keyword may be used in conjunction with other keywords to + print or save results for multiple time steps. + printrecord : [rtype, ocsetting] + * rtype (string) type of information to save or print. Can be BUDGET or + TEMPERATURE. + * ocsetting (keystring) specifies the steps for which the data will be + saved. + all : [keyword] + * all (keyword) keyword to indicate save for all time steps in + period. + first : [keyword] + * first (keyword) keyword to indicate save for first step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + last : [keyword] + * last (keyword) keyword to indicate save for last step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + frequency : [integer] + * frequency (integer) save at the specified time step + frequency. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + steps : [integer] + * steps (integer) save for each step specified in STEPS. This + keyword may be used in conjunction with other keywords to + print or save results for multiple time steps. + 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. + + """ + + budget_filerecord = ListTemplateGenerator( + ("gwe6", "oc", "options", "budget_filerecord") + ) + budgetcsv_filerecord = ListTemplateGenerator( + ("gwe6", "oc", "options", "budgetcsv_filerecord") + ) + temperature_filerecord = ListTemplateGenerator( + ("gwe6", "oc", "options", "temperature_filerecord") + ) + temperatureprintrecord = ListTemplateGenerator( + ("gwe6", "oc", "options", "temperatureprintrecord") + ) + saverecord = ListTemplateGenerator(("gwe6", "oc", "period", "saverecord")) + printrecord = ListTemplateGenerator( + ("gwe6", "oc", "period", "printrecord") + ) + package_abbr = "gweoc" + _package_type = "oc" + dfn_file_name = "gwe-oc.dfn" + + dfn = [ + [ + "header", + ], + [ + "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 temperature_filerecord", + "type record temperature fileout temperaturefile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name temperature", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name temperaturefile", + "type string", + "preserve_case true", + "shape", + "in_record true", + "reader urword", + "tagged false", + "optional false", + ], + [ + "block options", + "name temperatureprintrecord", + "type record temperature 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 period", + "name iper", + "type integer", + "block_variable True", + "in_record true", + "tagged false", + "shape", + "valid", + "reader urword", + "optional false", + ], + [ + "block period", + "name saverecord", + "type record save rtype ocsetting", + "shape", + "reader urword", + "tagged false", + "optional true", + ], + [ + "block period", + "name save", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block period", + "name printrecord", + "type record print rtype ocsetting", + "shape", + "reader urword", + "tagged false", + "optional true", + ], + [ + "block period", + "name print", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block period", + "name rtype", + "type string", + "shape", + "in_record true", + "reader urword", + "tagged false", + "optional false", + ], + [ + "block period", + "name ocsetting", + "type keystring all first last frequency steps", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block period", + "name all", + "type keyword", + "shape", + "in_record true", + "reader urword", + ], + [ + "block period", + "name first", + "type keyword", + "shape", + "in_record true", + "reader urword", + ], + [ + "block period", + "name last", + "type keyword", + "shape", + "in_record true", + "reader urword", + ], + [ + "block period", + "name frequency", + "type integer", + "shape", + "tagged true", + "in_record true", + "reader urword", + ], + [ + "block period", + "name steps", + "type integer", + "shape ( + * is the exchange type (GWF-GWF or GWF-GWT). + exgmnamea : + * is the name of the first model that is part of this exchange. + exgmnameb : + * is the name of the second model that is part of this exchange. + 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. + + """ + + package_abbr = "gwfgwe" + _package_type = "gwfgwe" + dfn_file_name = "exg-gwfgwe.dfn" + + dfn = [ + [ + "header", + ], + ] + + def __init__( + self, + simulation, + loading_package=False, + exgtype="GWF6-GWE6", + exgmnamea=None, + exgmnameb=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + simulation, "gwfgwe", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.exgtype = exgtype + + self.exgmnamea = exgmnamea + + self.exgmnameb = exgmnameb + + simulation.register_exchange_file(self) + + self._init_complete = True diff --git a/flopy/mf6/modflow/mfgwfgwf.py b/flopy/mf6/modflow/mfgwfgwf.py index f01443068e..f3cc9d8677 100644 --- a/flopy/mf6/modflow/mfgwfgwf.py +++ b/flopy/mf6/modflow/mfgwfgwf.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -34,13 +34,17 @@ class ModflowGwfgwf(mfpackage.MFPackage): 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. + away from the model 1 cell. Additional information on "ANGLDEGX" and + when it is required 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 in the calculation of specific + discharge within model cells connected by the exchange. For a + horizontal connection, CDIST should be specified as the horizontal + distance between the cell centers, and should not include the + vertical component. For vertical connections, CDIST should be + specified as the difference in elevation between the two cell + centers. Both ANGLDEGX and CDIST are required if specific discharge + is calculated for either of the groundwater models. boundnames : boolean * boundnames (boolean) keyword to indicate that boundary names may be provided with the list of GWF Exchange cells. @@ -452,6 +456,7 @@ class ModflowGwfgwf(mfpackage.MFPackage): "shape (naux)", "reader urword", "optional true", + "mf6internal auxvar", ], [ "block exchangedata", diff --git a/flopy/mf6/modflow/mfgwfgwt.py b/flopy/mf6/modflow/mfgwfgwt.py index 917ceb14d6..0ae8b97354 100644 --- a/flopy/mf6/modflow/mfgwfgwt.py +++ b/flopy/mf6/modflow/mfgwfgwt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage diff --git a/flopy/mf6/modflow/mfgwfhfb.py b/flopy/mf6/modflow/mfgwfhfb.py index 97f4e510b9..ea5c894bde 100644 --- a/flopy/mf6/modflow/mfgwfhfb.py +++ b/flopy/mf6/modflow/mfgwfhfb.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfic.py b/flopy/mf6/modflow/mfgwfic.py index 7c81d99bcf..65efa5ab86 100644 --- a/flopy/mf6/modflow/mfgwfic.py +++ b/flopy/mf6/modflow/mfgwfic.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator @@ -17,6 +17,9 @@ class ModflowGwfic(mfpackage.MFPackage): loading_package : bool Do not set this parameter. It is intended for debugging and internal processing purposes only. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. strt : [double] * strt (double) is the initial (starting) head---that is, head at the beginning of the GWF Model simulation. STRT must be specified for all @@ -48,6 +51,14 @@ class ModflowGwfic(mfpackage.MFPackage): [ "header", ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], [ "block griddata", "name strt", @@ -63,6 +74,7 @@ def __init__( self, model, loading_package=False, + export_array_ascii=None, strt=1.0, filename=None, pname=None, @@ -73,5 +85,8 @@ def __init__( ) # set up variables + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) self.strt = self.build_mfdata("strt", strt) self._init_complete = True diff --git a/flopy/mf6/modflow/mfgwflak.py b/flopy/mf6/modflow/mfgwflak.py index 759e4a65f2..06ea7e5c47 100644 --- a/flopy/mf6/modflow/mfgwflak.py +++ b/flopy/mf6/modflow/mfgwflak.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfmaw.py b/flopy/mf6/modflow/mfgwfmaw.py index 9e72fa1d01..b0fd0fe125 100644 --- a/flopy/mf6/modflow/mfgwfmaw.py +++ b/flopy/mf6/modflow/mfgwfmaw.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfmvr.py b/flopy/mf6/modflow/mfgwfmvr.py index 1916be7361..73949339db 100644 --- a/flopy/mf6/modflow/mfgwfmvr.py +++ b/flopy/mf6/modflow/mfgwfmvr.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfnam.py b/flopy/mf6/modflow/mfgwfnam.py index 574df26525..ffbca4bebd 100644 --- a/flopy/mf6/modflow/mfgwfnam.py +++ b/flopy/mf6/modflow/mfgwfnam.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -45,8 +45,8 @@ class ModflowGwfnam(mfpackage.MFPackage): Newton-Raphson UNDER_RELAXATION is not applied. packages : [ftype, fname, pname] * ftype (string) is the file type, which must be one of the following - character values shown in table in mf6io.pdf. Ftype may be entered in - any combination of uppercase and lowercase. + character values shown in table ref{table:ftype-gwf}. Ftype may be + entered in any combination of uppercase and lowercase. * fname (string) is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run. diff --git a/flopy/mf6/modflow/mfgwfnpf.py b/flopy/mf6/modflow/mfgwfnpf.py index db25596f2a..ad3798a871 100644 --- a/flopy/mf6/modflow/mfgwfnpf.py +++ b/flopy/mf6/modflow/mfgwfnpf.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator @@ -108,17 +108,11 @@ class ModflowGwfnpf(mfpackage.MFPackage): containing data for the tvk package with variable names as keys and package data as values. Data just for the perioddata variable is also acceptable. See tvk package documentation for more information. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. dev_no_newton : boolean * dev_no_newton (boolean) turn off Newton for unconfined cells - dev_modflowusg_upstream_weighted_saturation : boolean - * dev_modflowusg_upstream_weighted_saturation (boolean) use MODFLOW-USG - upstream-weighted saturation approach - dev_modflownwt_upstream_weighting : boolean - * dev_modflownwt_upstream_weighting (boolean) use MODFLOW-NWT approach - for upstream weighting - dev_minimum_saturated_thickness : double - * dev_minimum_saturated_thickness (double) set minimum allowed - saturated thickness dev_omega : double * dev_omega (double) set saturation omega value icelltype : [integer] @@ -455,35 +449,19 @@ class ModflowGwfnpf(mfpackage.MFPackage): ], [ "block options", - "name dev_no_newton", - "type keyword", - "reader urword", - "optional true", - "mf6internal inewton", - ], - [ - "block options", - "name dev_modflowusg_upstream_weighted_saturation", + "name export_array_ascii", "type keyword", "reader urword", "optional true", - "mf6internal iusgnrhc", + "mf6internal export_ascii", ], [ "block options", - "name dev_modflownwt_upstream_weighting", + "name dev_no_newton", "type keyword", "reader urword", "optional true", - "mf6internal inwtupw", - ], - [ - "block options", - "name dev_minimum_saturated_thickness", - "type double precision", - "reader urword", - "optional true", - "mf6internal satmin", + "mf6internal inewton", ], [ "block options", @@ -594,10 +572,8 @@ def __init__( k22overk=None, k33overk=None, perioddata=None, + export_array_ascii=None, dev_no_newton=None, - dev_modflowusg_upstream_weighted_saturation=None, - dev_modflownwt_upstream_weighting=None, - dev_minimum_saturated_thickness=None, dev_omega=None, icelltype=0, k=1.0, @@ -638,18 +614,10 @@ def __init__( self._tvk_package = self.build_child_package( "tvk", perioddata, "tvk_perioddata", self._tvk_filerecord ) - self.dev_no_newton = self.build_mfdata("dev_no_newton", dev_no_newton) - self.dev_modflowusg_upstream_weighted_saturation = self.build_mfdata( - "dev_modflowusg_upstream_weighted_saturation", - dev_modflowusg_upstream_weighted_saturation, - ) - self.dev_modflownwt_upstream_weighting = self.build_mfdata( - "dev_modflownwt_upstream_weighting", - dev_modflownwt_upstream_weighting, - ) - self.dev_minimum_saturated_thickness = self.build_mfdata( - "dev_minimum_saturated_thickness", dev_minimum_saturated_thickness + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii ) + self.dev_no_newton = self.build_mfdata("dev_no_newton", dev_no_newton) self.dev_omega = self.build_mfdata("dev_omega", dev_omega) self.icelltype = self.build_mfdata("icelltype", icelltype) self.k = self.build_mfdata("k", k) diff --git a/flopy/mf6/modflow/mfgwfoc.py b/flopy/mf6/modflow/mfgwfoc.py index c637ebe74a..906c319ad6 100644 --- a/flopy/mf6/modflow/mfgwfoc.py +++ b/flopy/mf6/modflow/mfgwfoc.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfprt.py b/flopy/mf6/modflow/mfgwfprt.py new file mode 100644 index 0000000000..7a008660bb --- /dev/null +++ b/flopy/mf6/modflow/mfgwfprt.py @@ -0,0 +1,70 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage + + +class ModflowGwfprt(mfpackage.MFPackage): + """ + ModflowGwfprt defines a gwfprt package. + + Parameters + ---------- + 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 : + * is the exchange type (GWF-GWF or GWF-GWT). + exgmnamea : + * is the name of the first model that is part of this exchange. + exgmnameb : + * is the name of the second model that is part of this exchange. + 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. + + """ + + package_abbr = "gwfprt" + _package_type = "gwfprt" + dfn_file_name = "exg-gwfprt.dfn" + + dfn = [ + [ + "header", + ], + ] + + def __init__( + self, + simulation, + loading_package=False, + exgtype="GWF6-PRT6", + exgmnamea=None, + exgmnameb=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + simulation, "gwfprt", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.exgtype = exgtype + + self.exgmnamea = exgmnamea + + self.exgmnameb = exgmnameb + + simulation.register_exchange_file(self) + + self._init_complete = True diff --git a/flopy/mf6/modflow/mfgwfrch.py b/flopy/mf6/modflow/mfgwfrch.py index 4697a7b46a..cb8f3d3869 100644 --- a/flopy/mf6/modflow/mfgwfrch.py +++ b/flopy/mf6/modflow/mfgwfrch.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfrcha.py b/flopy/mf6/modflow/mfgwfrcha.py index 31f7a253ee..84aefa86e7 100644 --- a/flopy/mf6/modflow/mfgwfrcha.py +++ b/flopy/mf6/modflow/mfgwfrcha.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator @@ -20,7 +20,11 @@ class ModflowGwfrcha(mfpackage.MFPackage): 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. + array-based input. When READASARRAYS is specified, values must be + provided for every cell within a model layer, even those cells that + have an IDOMAIN value less than one. Values assigned to cells with + IDOMAIN values less than one are not used and have no effect on + simulation results. 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 diff --git a/flopy/mf6/modflow/mfgwfriv.py b/flopy/mf6/modflow/mfgwfriv.py index 13fca28a63..336cd9f93c 100644 --- a/flopy/mf6/modflow/mfgwfriv.py +++ b/flopy/mf6/modflow/mfgwfriv.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfsfr.py b/flopy/mf6/modflow/mfgwfsfr.py index 31ca9b42cb..7b1ac67c38 100644 --- a/flopy/mf6/modflow/mfgwfsfr.py +++ b/flopy/mf6/modflow/mfgwfsfr.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -171,10 +171,13 @@ class ModflowGwfsfr(mfpackage.MFPackage): * rbth (double) real value that defines the thickness of the reach streambed. RBTH can be any value if the reach is not connected to an underlying GWF cell. Otherwise, RBTH must be greater than zero. - * rhk (double) real value that defines the hydraulic conductivity of - the reach streambed. RHK can be any positive value if the reach is - not connected to an underlying GWF cell. Otherwise, RHK must be - greater than zero. + * rhk (double) real or character value that defines the hydraulic + conductivity of the reach streambed. RHK can be any positive value if + the reach is not connected to an underlying GWF cell. Otherwise, RHK + must be greater than zero. 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. * man (string) real or character value that defines the Manning's roughness coefficient for the reach. MAN must be greater than zero. If the Options block includes a TIMESERIESFILE entry (see the "Time- @@ -310,8 +313,9 @@ class ModflowGwfsfr(mfpackage.MFPackage): index variables. * sfrsetting (keystring) line of information that is parsed into a keyword and values. Keyword values that can be used to start the - SFRSETTING string include: STATUS, MANNING, STAGE, INFLOW, RAINFALL, - EVAPORATION, RUNOFF, DIVERSION, UPSTREAM_FRACTION, and AUXILIARY. + SFRSETTING string include: STATUS, BEDK, MANNING, STAGE, INFLOW, + RAINFALL, EVAPORATION, RUNOFF, DIVERSION, UPSTREAM_FRACTION, and + AUXILIARY. status : [string] * status (string) keyword option to define stream reach status. STATUS can be ACTIVE, INACTIVE, or SIMPLE. The SIMPLE STATUS @@ -329,6 +333,15 @@ class ModflowGwfsfr(mfpackage.MFPackage): respectively, to ensure that the active reach receives all of the downstream outflow from the upstream reach. By default, STATUS is ACTIVE. + bedk : [string] + * bedk (string) real or character value that defines the + hydraulic conductivity of the reach streambed. BEDK can be + any positive value if the reach is not connected to an + underlying GWF cell. Otherwise, BEDK must be greater than + zero. 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. manning : [string] * manning (string) real or character value that defines the Manning's roughness coefficient for the reach. MANNING must @@ -863,6 +876,7 @@ class ModflowGwfsfr(mfpackage.MFPackage): "tagged false", "in_record true", "reader urword", + "time_series true", ], [ "block packagedata", @@ -1079,9 +1093,9 @@ class ModflowGwfsfr(mfpackage.MFPackage): [ "block period", "name sfrsetting", - "type keystring status manning stage inflow rainfall evaporation " - "runoff diversionrecord upstream_fraction cross_sectionrecord " - "auxiliaryrecord", + "type keystring status bedk manning stage inflow rainfall " + "evaporation runoff diversionrecord upstream_fraction " + "cross_sectionrecord auxiliaryrecord", "shape", "tagged false", "in_record true", @@ -1096,6 +1110,16 @@ class ModflowGwfsfr(mfpackage.MFPackage): "in_record true", "reader urword", ], + [ + "block period", + "name bedk", + "type string", + "shape", + "tagged true", + "in_record true", + "reader urword", + "time_series true", + ], [ "block period", "name manning", diff --git a/flopy/mf6/modflow/mfgwfsto.py b/flopy/mf6/modflow/mfgwfsto.py index b4dc1d9fd9..398b5572e9 100644 --- a/flopy/mf6/modflow/mfgwfsto.py +++ b/flopy/mf6/modflow/mfgwfsto.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfuzf.py b/flopy/mf6/modflow/mfgwfuzf.py index 27c1e6df60..1549865f28 100644 --- a/flopy/mf6/modflow/mfgwfuzf.py +++ b/flopy/mf6/modflow/mfgwfuzf.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -586,6 +586,7 @@ class ModflowGwfuzf(mfpackage.MFPackage): "tagged true", "reader urword", "optional true", + "deprecated 6.5.0", ], [ "block options", diff --git a/flopy/mf6/modflow/mfgwfvsc.py b/flopy/mf6/modflow/mfgwfvsc.py index ff62a22ab7..76dec5a1fe 100644 --- a/flopy/mf6/modflow/mfgwfvsc.py +++ b/flopy/mf6/modflow/mfgwfvsc.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfwel.py b/flopy/mf6/modflow/mfgwfwel.py index b4a0831e64..67da4504c9 100644 --- a/flopy/mf6/modflow/mfgwfwel.py +++ b/flopy/mf6/modflow/mfgwfwel.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -59,7 +59,11 @@ class ModflowGwfwel(mfpackage.MFPackage): is equal to or less than the calculated interval above the cell bottom. AUTO_FLOW_REDUCE is set to 0.1 if the specified value is less than or equal to zero. By default, negative pumping rates are not - reduced during a simulation. + reduced during a simulation. This AUTO_FLOW_REDUCE option only + applies to wells in model cells that are marked as "convertible" + (ICELLTYPE /= 0) in the Node Property Flow (NPF) input file. + Reduction in flow will not occur for wells in cells marked as + confined (ICELLTYPE = 0). afrcsv_filerecord : [afrcsvfile] * afrcsvfile (string) name of the comma-separated value (CSV) output file to write information about well extraction rates that have been diff --git a/flopy/mf6/modflow/mfgwt.py b/flopy/mf6/modflow/mfgwt.py index 80aaa1286c..5a39c1e55f 100644 --- a/flopy/mf6/modflow/mfgwt.py +++ b/flopy/mf6/modflow/mfgwt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfmodel from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator @@ -47,8 +47,8 @@ class ModflowGwt(mfmodel.MFModel): Output Control. packages : [ftype, fname, pname] * ftype (string) is the file type, which must be one of the following - character values shown in table in mf6io.pdf. Ftype may be entered in - any combination of uppercase and lowercase. + character values shown in table ref{table:ftype-gwt}. Ftype may be + entered in any combination of uppercase and lowercase. * fname (string) is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run. diff --git a/flopy/mf6/modflow/mfgwtadv.py b/flopy/mf6/modflow/mfgwtadv.py index 542be274eb..56e7e10e2e 100644 --- a/flopy/mf6/modflow/mfgwtadv.py +++ b/flopy/mf6/modflow/mfgwtadv.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage diff --git a/flopy/mf6/modflow/mfgwtapi.py b/flopy/mf6/modflow/mfgwtapi.py index 4eef482cbe..fdd2b6639f 100644 --- a/flopy/mf6/modflow/mfgwtapi.py +++ b/flopy/mf6/modflow/mfgwtapi.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtcnc.py b/flopy/mf6/modflow/mfgwtcnc.py index b5c76de766..535dc6a352 100644 --- a/flopy/mf6/modflow/mfgwtcnc.py +++ b/flopy/mf6/modflow/mfgwtcnc.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtdis.py b/flopy/mf6/modflow/mfgwtdis.py index 7cf93d6868..f1b09397b8 100644 --- a/flopy/mf6/modflow/mfgwtdis.py +++ b/flopy/mf6/modflow/mfgwtdis.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator @@ -42,6 +42,9 @@ class ModflowGwtdis(mfpackage.MFPackage): value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. nlay : integer * nlay (integer) is the number of layers in the model grid. nrow : integer @@ -128,6 +131,14 @@ class ModflowGwtdis(mfpackage.MFPackage): "reader urword", "optional true", ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], [ "block dimensions", "name nlay", @@ -205,6 +216,7 @@ def __init__( xorigin=None, yorigin=None, angrot=None, + export_array_ascii=None, nlay=1, nrow=2, ncol=2, @@ -227,6 +239,9 @@ def __init__( self.xorigin = self.build_mfdata("xorigin", xorigin) self.yorigin = self.build_mfdata("yorigin", yorigin) self.angrot = self.build_mfdata("angrot", angrot) + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) self.nlay = self.build_mfdata("nlay", nlay) self.nrow = self.build_mfdata("nrow", nrow) self.ncol = self.build_mfdata("ncol", ncol) diff --git a/flopy/mf6/modflow/mfgwtdisu.py b/flopy/mf6/modflow/mfgwtdisu.py index ea0ac306ea..fbd2613b0f 100644 --- a/flopy/mf6/modflow/mfgwtdisu.py +++ b/flopy/mf6/modflow/mfgwtdisu.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator @@ -53,6 +53,9 @@ class ModflowGwtdisu(mfpackage.MFPackage): cell by a value less than this tolerance, then the program will not terminate with an error. The default value is zero. This option should generally not be used. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. nodes : integer * nodes (integer) is the number of cells in the model grid. nja : integer @@ -142,7 +145,7 @@ class ModflowGwtdisu(mfpackage.MFPackage): degrees points in the positive y-axis direction. ANGLDEGX is only needed if horizontal anisotropy is specified in the NPF Package, if the XT3D option is used in the NPF Package, or if the - SAVE_SPECIFIC_DISCHARGE option is specifed in the NPF Package. + SAVE_SPECIFIC_DISCHARGE option is specified in the NPF Package. ANGLDEGX does not need to be specified if these conditions are not met. ANGLDEGX is of size NJA; values specified for vertical connections and for the diagonal position are not used. Note that @@ -252,6 +255,14 @@ class ModflowGwtdisu(mfpackage.MFPackage): "default_value 0.0", "mf6internal voffsettol", ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], [ "block dimensions", "name nodes", @@ -456,6 +467,7 @@ def __init__( yorigin=None, angrot=None, vertical_offset_tolerance=0.0, + export_array_ascii=None, nodes=None, nja=None, nvert=None, @@ -488,6 +500,9 @@ def __init__( self.vertical_offset_tolerance = self.build_mfdata( "vertical_offset_tolerance", vertical_offset_tolerance ) + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) self.nodes = self.build_mfdata("nodes", nodes) self.nja = self.build_mfdata("nja", nja) self.nvert = self.build_mfdata("nvert", nvert) diff --git a/flopy/mf6/modflow/mfgwtdisv.py b/flopy/mf6/modflow/mfgwtdisv.py index d07731710d..05ad0b76fb 100644 --- a/flopy/mf6/modflow/mfgwtdisv.py +++ b/flopy/mf6/modflow/mfgwtdisv.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator @@ -45,6 +45,9 @@ class ModflowGwtdisv(mfpackage.MFPackage): The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. nlay : integer * nlay (integer) is the number of layers in the model grid. ncpl : integer @@ -156,6 +159,14 @@ class ModflowGwtdisv(mfpackage.MFPackage): "reader urword", "optional true", ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], [ "block dimensions", "name nlay", @@ -304,6 +315,7 @@ def __init__( xorigin=None, yorigin=None, angrot=None, + export_array_ascii=None, nlay=None, ncpl=None, nvert=None, @@ -326,6 +338,9 @@ def __init__( self.xorigin = self.build_mfdata("xorigin", xorigin) self.yorigin = self.build_mfdata("yorigin", yorigin) self.angrot = self.build_mfdata("angrot", angrot) + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) self.nlay = self.build_mfdata("nlay", nlay) self.ncpl = self.build_mfdata("ncpl", ncpl) self.nvert = self.build_mfdata("nvert", nvert) diff --git a/flopy/mf6/modflow/mfgwtdsp.py b/flopy/mf6/modflow/mfgwtdsp.py index de1cd4f90e..93d15b3ca4 100644 --- a/flopy/mf6/modflow/mfgwtdsp.py +++ b/flopy/mf6/modflow/mfgwtdsp.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator @@ -28,6 +28,9 @@ class ModflowGwtdsp(mfpackage.MFPackage): xt3d_rhs : boolean * xt3d_rhs (boolean) add xt3d terms to right-hand side, when possible. This option uses less memory, but may require more iterations. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. diffc : [double] * diffc (double) effective molecular diffusion coefficient. alh : [double] @@ -105,6 +108,14 @@ class ModflowGwtdsp(mfpackage.MFPackage): "reader urword", "optional true", ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], [ "block griddata", "name diffc", @@ -167,6 +178,7 @@ def __init__( loading_package=False, xt3d_off=None, xt3d_rhs=None, + export_array_ascii=None, diffc=None, alh=None, alv=None, @@ -184,6 +196,9 @@ def __init__( # set up variables self.xt3d_off = self.build_mfdata("xt3d_off", xt3d_off) self.xt3d_rhs = self.build_mfdata("xt3d_rhs", xt3d_rhs) + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) self.diffc = self.build_mfdata("diffc", diffc) self.alh = self.build_mfdata("alh", alh) self.alv = self.build_mfdata("alv", alv) diff --git a/flopy/mf6/modflow/mfgwtfmi.py b/flopy/mf6/modflow/mfgwtfmi.py index 423d428d79..5951f3b464 100644 --- a/flopy/mf6/modflow/mfgwtfmi.py +++ b/flopy/mf6/modflow/mfgwtfmi.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtgwt.py b/flopy/mf6/modflow/mfgwtgwt.py index e90d60ae88..baa4fc3cc1 100644 --- a/flopy/mf6/modflow/mfgwtgwt.py +++ b/flopy/mf6/modflow/mfgwtgwt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -38,7 +38,7 @@ class ModflowGwtgwt(mfpackage.MFPackage): auxiliary : [string] * 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 GWF-GWF Exchange, but + auxiliary variables will not be used by the GWT-GWT 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 @@ -47,12 +47,8 @@ class ModflowGwtgwt(mfpackage.MFPackage): 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. + provided in the description of the DISU Package. ANGLDEGX must be + specified if dispersion is simulated in the connected GWT models. boundnames : boolean * boundnames (boolean) keyword to indicate that boundary names may be provided with the list of GWT Exchange cells. @@ -412,6 +408,7 @@ class ModflowGwtgwt(mfpackage.MFPackage): "shape (naux)", "reader urword", "optional true", + "mf6internal auxvar", ], [ "block exchangedata", diff --git a/flopy/mf6/modflow/mfgwtic.py b/flopy/mf6/modflow/mfgwtic.py index a7f5fc6352..b6fb52a54c 100644 --- a/flopy/mf6/modflow/mfgwtic.py +++ b/flopy/mf6/modflow/mfgwtic.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator @@ -17,6 +17,9 @@ class ModflowGwtic(mfpackage.MFPackage): loading_package : bool Do not set this parameter. It is intended for debugging and internal processing purposes only. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. strt : [double] * strt (double) is the initial (starting) concentration---that is, concentration at the beginning of the GWT Model simulation. STRT must @@ -42,6 +45,14 @@ class ModflowGwtic(mfpackage.MFPackage): [ "header", ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], [ "block griddata", "name strt", @@ -57,6 +68,7 @@ def __init__( self, model, loading_package=False, + export_array_ascii=None, strt=0.0, filename=None, pname=None, @@ -67,5 +79,8 @@ def __init__( ) # set up variables + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) self.strt = self.build_mfdata("strt", strt) self._init_complete = True diff --git a/flopy/mf6/modflow/mfgwtist.py b/flopy/mf6/modflow/mfgwtist.py index 3df913bd55..625c00923c 100644 --- a/flopy/mf6/modflow/mfgwtist.py +++ b/flopy/mf6/modflow/mfgwtist.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtlkt.py b/flopy/mf6/modflow/mfgwtlkt.py index 0b84249cce..80e80558c6 100644 --- a/flopy/mf6/modflow/mfgwtlkt.py +++ b/flopy/mf6/modflow/mfgwtlkt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtmst.py b/flopy/mf6/modflow/mfgwtmst.py index 574137096b..2007a5591e 100644 --- a/flopy/mf6/modflow/mfgwtmst.py +++ b/flopy/mf6/modflow/mfgwtmst.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtmvt.py b/flopy/mf6/modflow/mfgwtmvt.py index 8091829558..9bfdf24386 100644 --- a/flopy/mf6/modflow/mfgwtmvt.py +++ b/flopy/mf6/modflow/mfgwtmvt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtmwt.py b/flopy/mf6/modflow/mfgwtmwt.py index fb98e11ea2..d32195d90c 100644 --- a/flopy/mf6/modflow/mfgwtmwt.py +++ b/flopy/mf6/modflow/mfgwtmwt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtnam.py b/flopy/mf6/modflow/mfgwtnam.py index 0a00c376b8..9734127a44 100644 --- a/flopy/mf6/modflow/mfgwtnam.py +++ b/flopy/mf6/modflow/mfgwtnam.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -40,8 +40,8 @@ class ModflowGwtnam(mfpackage.MFPackage): Output Control. packages : [ftype, fname, pname] * ftype (string) is the file type, which must be one of the following - character values shown in table in mf6io.pdf. Ftype may be entered in - any combination of uppercase and lowercase. + character values shown in table ref{table:ftype-gwt}. Ftype may be + entered in any combination of uppercase and lowercase. * fname (string) is the name of the file containing the package input. The path to the file should be included if the file is not located in the folder where the program was run. diff --git a/flopy/mf6/modflow/mfgwtoc.py b/flopy/mf6/modflow/mfgwtoc.py index c8a22c5f5d..ade2382cbf 100644 --- a/flopy/mf6/modflow/mfgwtoc.py +++ b/flopy/mf6/modflow/mfgwtoc.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtsft.py b/flopy/mf6/modflow/mfgwtsft.py index 92b99d45ca..cc5afe7f84 100644 --- a/flopy/mf6/modflow/mfgwtsft.py +++ b/flopy/mf6/modflow/mfgwtsft.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtsrc.py b/flopy/mf6/modflow/mfgwtsrc.py index 570f0a9979..5e92ba7ae7 100644 --- a/flopy/mf6/modflow/mfgwtsrc.py +++ b/flopy/mf6/modflow/mfgwtsrc.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtssm.py b/flopy/mf6/modflow/mfgwtssm.py index 11ad9d00f5..4ac75d98f0 100644 --- a/flopy/mf6/modflow/mfgwtssm.py +++ b/flopy/mf6/modflow/mfgwtssm.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtuzt.py b/flopy/mf6/modflow/mfgwtuzt.py index 4d1be08508..ddbc4bb0ce 100644 --- a/flopy/mf6/modflow/mfgwtuzt.py +++ b/flopy/mf6/modflow/mfgwtuzt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfims.py b/flopy/mf6/modflow/mfims.py index e718e07e56..28a2f28f42 100644 --- a/flopy/mf6/modflow/mfims.py +++ b/flopy/mf6/modflow/mfims.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -128,7 +128,7 @@ class ModflowIms(mfpackage.MFPackage): option is deprecated and has no effect on simulation results as of version 6.1.1. The keyword, OUTER_RCLOSEBND can be still be specified for backward compatibility with previous versions of MODFLOW 6 but - eventually specificiation of OUTER_RCLOSEBND will cause MODFLOW 6 to + eventually specification of OUTER_RCLOSEBND will cause MODFLOW 6 to terminate with an error. outer_maximum : integer * outer_maximum (integer) integer value defining the maximum number of diff --git a/flopy/mf6/modflow/mfmvr.py b/flopy/mf6/modflow/mfmvr.py index fe1b265f8d..2d68412267 100644 --- a/flopy/mf6/modflow/mfmvr.py +++ b/flopy/mf6/modflow/mfmvr.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfmvt.py b/flopy/mf6/modflow/mfmvt.py index 0bf2177cc7..8c16eea4aa 100644 --- a/flopy/mf6/modflow/mfmvt.py +++ b/flopy/mf6/modflow/mfmvt.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on February 07, 2024 20:16:08 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfnam.py b/flopy/mf6/modflow/mfnam.py index 43a0ee75ff..d3ac30e3cb 100644 --- a/flopy/mf6/modflow/mfnam.py +++ b/flopy/mf6/modflow/mfnam.py @@ -1,6 +1,6 @@ # DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY # mf6/utils/createpackages.py -# FILE created on April 23, 2024 17:27:32 UTC +# FILE created on May 23, 2024 14:30:07 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -68,7 +68,8 @@ class ModflowNam(mfpackage.MFPackage): in the solution group, then MXITER must be 1. solutiongroup : [slntype, slnfname, slnmnames] * slntype (string) is the type of solution. The Integrated Model - Solution (IMS6) is the only supported option in this version. + Solution (IMS6) and Explicit Model Solution (EMS6) are the only + supported options in this version. * slnfname (string) name of file containing solution input. * slnmnames (string) is the array of model names to add to this solution. The number of model names is determined by the number of @@ -285,7 +286,7 @@ class ModflowNam(mfpackage.MFPackage): "block solutiongroup", "name slntype", "type string", - "valid ims6", + "valid ims6 ems6", "in_record true", "tagged false", "reader urword", diff --git a/flopy/mf6/modflow/mfprt.py b/flopy/mf6/modflow/mfprt.py new file mode 100644 index 0000000000..b5c5eacb2f --- /dev/null +++ b/flopy/mf6/modflow/mfprt.py @@ -0,0 +1,135 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfmodel +from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator + + +class ModflowPrt(mfmodel.MFModel): + """ + Modflowprt defines a prt model + + Parameters + ---------- + modelname : string + name of the model + model_nam_file : string + relative path to the model name file from model working folder + version : string + version of modflow + exe_name : string + model executable name + model_ws : string + model working folder path + sim : MFSimulation + Simulation that this model is a part of. Model is automatically + added to simulation when it is initialized. + list : string + * list (string) is name of the listing file to create for this PRT + model. If not specified, then the name of the list file will be the + basename of the PRT model name file and the '.lst' extension. For + example, if the PRT name file is called "my.model.nam" then the list + file will be called "my.model.lst". + print_input : boolean + * print_input (boolean) keyword to indicate that the list of all model + stress package 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 all model + package 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 all model package flow + terms will be written to the file specified with "BUDGET FILEOUT" in + Output Control. + packages : [ftype, fname, pname] + * ftype (string) is the file type, which must be one of the following + character values shown in table ref{table:ftype-prt}. Ftype may be + entered in any combination of uppercase and lowercase. + * fname (string) is the name of the file containing the package input. + The path to the file should be included if the file is not located in + the folder where the program was run. + * pname (string) is the user-defined name for the package. PNAME is + restricted to 16 characters. No spaces are allowed in PNAME. PNAME + character values are read and stored by the program for stress + packages only. These names may be useful for labeling purposes when + multiple stress packages of the same type are located within a single + PRT Model. If PNAME is specified for a stress package, then PNAME + will be used in the flow budget table in the listing file; it will + also be used for the text entry in the cell-by-cell budget file. + PNAME is case insensitive and is stored in all upper case letters. + + Methods + ------- + load : (simulation : MFSimulationData, model_name : string, + namfile : string, version : string, exe_name : string, + model_ws : string, strict : boolean) : MFSimulation + a class method that loads a model from files + """ + + model_type = "prt" + + def __init__( + self, + simulation, + modelname="model", + model_nam_file=None, + version="mf6", + exe_name="mf6", + model_rel_path=".", + list=None, + print_input=None, + print_flows=None, + save_flows=None, + **kwargs, + ): + super().__init__( + simulation, + model_type="prt6", + modelname=modelname, + model_nam_file=model_nam_file, + version=version, + exe_name=exe_name, + model_rel_path=model_rel_path, + **kwargs, + ) + + self.name_file.list.set_data(list) + self.name_file.print_input.set_data(print_input) + self.name_file.print_flows.set_data(print_flows) + self.name_file.save_flows.set_data(save_flows) + + self.list = self.name_file.list + self.print_input = self.name_file.print_input + self.print_flows = self.name_file.print_flows + self.save_flows = self.name_file.save_flows + + @classmethod + def load( + cls, + simulation, + structure, + modelname="NewModel", + model_nam_file="modflowtest.nam", + version="mf6", + exe_name="mf6", + strict=True, + model_rel_path=".", + load_only=None, + ): + return mfmodel.MFModel.load_base( + cls, + simulation, + structure, + modelname, + model_nam_file, + "prt6", + version, + exe_name, + strict, + model_rel_path, + load_only, + ) diff --git a/flopy/mf6/modflow/mfprtdis.py b/flopy/mf6/modflow/mfprtdis.py new file mode 100644 index 0000000000..5a29b80c1b --- /dev/null +++ b/flopy/mf6/modflow/mfprtdis.py @@ -0,0 +1,253 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ArrayTemplateGenerator + + +class ModflowPrtdis(mfpackage.MFPackage): + """ + ModflowPrtdis defines a dis package within a prt6 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. + length_units : string + * length_units (string) is the length units used for this model. Values + can be "FEET", "METERS", or "CENTIMETERS". If not specified, the + default is "UNKNOWN". + nogrb : boolean + * nogrb (boolean) keyword to deactivate writing of the binary grid + file. + xorigin : double + * xorigin (double) x-position of the lower-left corner of the model + grid. A default value of zero is assigned if not specified. The value + for XORIGIN does not affect the model simulation, but it is written + to the binary grid file so that postprocessors can locate the grid in + space. + yorigin : double + * yorigin (double) y-position of the lower-left corner of the model + grid. If not specified, then a default value equal to zero is used. + The value for YORIGIN does not affect the model simulation, but it is + written to the binary grid file so that postprocessors can locate the + grid in space. + angrot : double + * angrot (double) counter-clockwise rotation angle (in degrees) of the + lower-left corner of the model grid. If not specified, then a default + value of 0.0 is assigned. The value for ANGROT does not affect the + model simulation, but it is written to the binary grid file so that + postprocessors can locate the grid in space. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. + nlay : integer + * nlay (integer) is the number of layers in the model grid. + nrow : integer + * nrow (integer) is the number of rows in the model grid. + ncol : integer + * ncol (integer) is the number of columns in the model grid. + delr : [double] + * delr (double) is the column spacing in the row direction. + delc : [double] + * delc (double) is the row spacing in the column direction. + top : [double] + * top (double) is the top elevation for each cell in the top model + layer. + botm : [double] + * botm (double) is the bottom elevation for each cell. + idomain : [integer] + * idomain (integer) is an optional array that characterizes the + existence status of a cell. If the IDOMAIN array is not specified, + then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and + output values will be read and written for the cell, but internal to + the program, the cell is excluded from the solution. If the IDOMAIN + value for a cell is 1, the cell exists in the simulation. If the + IDOMAIN value for a cell is -1, the cell does not exist in the + simulation. Furthermore, the first existing cell above will be + connected to the first existing cell below. This type of cell is + referred to as a "vertical pass through" cell. + 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. + + """ + + delr = ArrayTemplateGenerator(("prt6", "dis", "griddata", "delr")) + delc = ArrayTemplateGenerator(("prt6", "dis", "griddata", "delc")) + top = ArrayTemplateGenerator(("prt6", "dis", "griddata", "top")) + botm = ArrayTemplateGenerator(("prt6", "dis", "griddata", "botm")) + idomain = ArrayTemplateGenerator(("prt6", "dis", "griddata", "idomain")) + package_abbr = "prtdis" + _package_type = "dis" + dfn_file_name = "prt-dis.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name length_units", + "type string", + "reader urword", + "optional true", + ], + [ + "block options", + "name nogrb", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name xorigin", + "type double precision", + "reader urword", + "optional true", + ], + [ + "block options", + "name yorigin", + "type double precision", + "reader urword", + "optional true", + ], + [ + "block options", + "name angrot", + "type double precision", + "reader urword", + "optional true", + ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], + [ + "block dimensions", + "name nlay", + "type integer", + "reader urword", + "optional false", + "default_value 1", + ], + [ + "block dimensions", + "name nrow", + "type integer", + "reader urword", + "optional false", + "default_value 2", + ], + [ + "block dimensions", + "name ncol", + "type integer", + "reader urword", + "optional false", + "default_value 2", + ], + [ + "block griddata", + "name delr", + "type double precision", + "shape (ncol)", + "reader readarray", + "default_value 1.0", + ], + [ + "block griddata", + "name delc", + "type double precision", + "shape (nrow)", + "reader readarray", + "default_value 1.0", + ], + [ + "block griddata", + "name top", + "type double precision", + "shape (ncol, nrow)", + "reader readarray", + "default_value 1.0", + ], + [ + "block griddata", + "name botm", + "type double precision", + "shape (ncol, nrow, nlay)", + "reader readarray", + "layered true", + "default_value 0.", + ], + [ + "block griddata", + "name idomain", + "type integer", + "shape (ncol, nrow, nlay)", + "reader readarray", + "layered true", + "optional true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + length_units=None, + nogrb=None, + xorigin=None, + yorigin=None, + angrot=None, + export_array_ascii=None, + nlay=1, + nrow=2, + ncol=2, + delr=1.0, + delc=1.0, + top=1.0, + botm=0.0, + idomain=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "dis", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.length_units = self.build_mfdata("length_units", length_units) + self.nogrb = self.build_mfdata("nogrb", nogrb) + self.xorigin = self.build_mfdata("xorigin", xorigin) + self.yorigin = self.build_mfdata("yorigin", yorigin) + self.angrot = self.build_mfdata("angrot", angrot) + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) + self.nlay = self.build_mfdata("nlay", nlay) + self.nrow = self.build_mfdata("nrow", nrow) + self.ncol = self.build_mfdata("ncol", ncol) + self.delr = self.build_mfdata("delr", delr) + self.delc = self.build_mfdata("delc", delc) + self.top = self.build_mfdata("top", top) + self.botm = self.build_mfdata("botm", botm) + self.idomain = self.build_mfdata("idomain", idomain) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfprtdisv.py b/flopy/mf6/modflow/mfprtdisv.py new file mode 100644 index 0000000000..43b68ab215 --- /dev/null +++ b/flopy/mf6/modflow/mfprtdisv.py @@ -0,0 +1,352 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator + + +class ModflowPrtdisv(mfpackage.MFPackage): + """ + ModflowPrtdisv defines a disv package within a prt6 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. + length_units : string + * length_units (string) is the length units used for this model. Values + can be "FEET", "METERS", or "CENTIMETERS". If not specified, the + default is "UNKNOWN". + nogrb : boolean + * nogrb (boolean) keyword to deactivate writing of the binary grid + file. + xorigin : double + * xorigin (double) x-position of the origin used for model grid + vertices. This value should be provided in a real-world coordinate + system. A default value of zero is assigned if not specified. The + value for XORIGIN does not affect the model simulation, but it is + written to the binary grid file so that postprocessors can locate the + grid in space. + yorigin : double + * yorigin (double) y-position of the origin used for model grid + vertices. This value should be provided in a real-world coordinate + system. If not specified, then a default value equal to zero is used. + The value for YORIGIN does not affect the model simulation, but it is + written to the binary grid file so that postprocessors can locate the + grid in space. + angrot : double + * angrot (double) counter-clockwise rotation angle (in degrees) of the + model grid coordinate system relative to a real-world coordinate + system. If not specified, then a default value of 0.0 is assigned. + The value for ANGROT does not affect the model simulation, but it is + written to the binary grid file so that postprocessors can locate the + grid in space. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. + nlay : integer + * nlay (integer) is the number of layers in the model grid. + ncpl : integer + * ncpl (integer) is the number of cells per layer. This is a constant + value for the grid and it applies to all layers. + nvert : integer + * nvert (integer) is the total number of (x, y) vertex pairs used to + characterize the horizontal configuration of the model grid. + top : [double] + * top (double) is the top elevation for each cell in the top model + layer. + botm : [double] + * botm (double) is the bottom elevation for each cell. + idomain : [integer] + * idomain (integer) is an optional array that characterizes the + existence status of a cell. If the IDOMAIN array is not specified, + then all model cells exist within the solution. If the IDOMAIN value + for a cell is 0, the cell does not exist in the simulation. Input and + output values will be read and written for the cell, but internal to + the program, the cell is excluded from the solution. If the IDOMAIN + value for a cell is 1, the cell exists in the simulation. If the + IDOMAIN value for a cell is -1, the cell does not exist in the + simulation. Furthermore, the first existing cell above will be + connected to the first existing cell below. This type of cell is + referred to as a "vertical pass through" cell. + vertices : [iv, xv, yv] + * iv (integer) is the vertex number. Records in the VERTICES block must + be listed in consecutive order from 1 to NVERT. 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. + * xv (double) is the x-coordinate for the vertex. + * yv (double) is the y-coordinate for the vertex. + cell2d : [icell2d, xc, yc, ncvert, icvert] + * icell2d (integer) is the CELL2D number. Records in the CELL2D block + must be listed in consecutive order from the first to the last. 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. + * xc (double) is the x-coordinate for the cell center. + * yc (double) is the y-coordinate for the cell center. + * ncvert (integer) is the number of vertices required to define the + cell. There may be a different number of vertices for each cell. + * icvert (integer) is an array of integer values containing vertex + numbers (in the VERTICES block) used to define the cell. Vertices + must be listed in clockwise order. Cells that are connected must + share vertices. 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. + 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. + + """ + + top = ArrayTemplateGenerator(("prt6", "disv", "griddata", "top")) + botm = ArrayTemplateGenerator(("prt6", "disv", "griddata", "botm")) + idomain = ArrayTemplateGenerator(("prt6", "disv", "griddata", "idomain")) + vertices = ListTemplateGenerator(("prt6", "disv", "vertices", "vertices")) + cell2d = ListTemplateGenerator(("prt6", "disv", "cell2d", "cell2d")) + package_abbr = "prtdisv" + _package_type = "disv" + dfn_file_name = "prt-disv.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name length_units", + "type string", + "reader urword", + "optional true", + ], + [ + "block options", + "name nogrb", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name xorigin", + "type double precision", + "reader urword", + "optional true", + ], + [ + "block options", + "name yorigin", + "type double precision", + "reader urword", + "optional true", + ], + [ + "block options", + "name angrot", + "type double precision", + "reader urword", + "optional true", + ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], + [ + "block dimensions", + "name nlay", + "type integer", + "reader urword", + "optional false", + ], + [ + "block dimensions", + "name ncpl", + "type integer", + "reader urword", + "optional false", + ], + [ + "block dimensions", + "name nvert", + "type integer", + "reader urword", + "optional false", + ], + [ + "block griddata", + "name top", + "type double precision", + "shape (ncpl)", + "reader readarray", + ], + [ + "block griddata", + "name botm", + "type double precision", + "shape (ncpl, nlay)", + "reader readarray", + "layered true", + ], + [ + "block griddata", + "name idomain", + "type integer", + "shape (ncpl, nlay)", + "reader readarray", + "layered true", + "optional true", + ], + [ + "block vertices", + "name vertices", + "type recarray iv xv yv", + "shape (nvert)", + "reader urword", + "optional false", + ], + [ + "block vertices", + "name iv", + "type integer", + "in_record true", + "tagged false", + "reader urword", + "optional false", + "numeric_index true", + ], + [ + "block vertices", + "name xv", + "type double precision", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block vertices", + "name yv", + "type double precision", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block cell2d", + "name cell2d", + "type recarray icell2d xc yc ncvert icvert", + "shape (ncpl)", + "reader urword", + "optional false", + ], + [ + "block cell2d", + "name icell2d", + "type integer", + "in_record true", + "tagged false", + "reader urword", + "optional false", + "numeric_index true", + ], + [ + "block cell2d", + "name xc", + "type double precision", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block cell2d", + "name yc", + "type double precision", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block cell2d", + "name ncvert", + "type integer", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block cell2d", + "name icvert", + "type integer", + "shape (ncvert)", + "in_record true", + "tagged false", + "reader urword", + "optional false", + "numeric_index true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + length_units=None, + nogrb=None, + xorigin=None, + yorigin=None, + angrot=None, + export_array_ascii=None, + nlay=None, + ncpl=None, + nvert=None, + top=None, + botm=None, + idomain=None, + vertices=None, + cell2d=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "disv", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.length_units = self.build_mfdata("length_units", length_units) + self.nogrb = self.build_mfdata("nogrb", nogrb) + self.xorigin = self.build_mfdata("xorigin", xorigin) + self.yorigin = self.build_mfdata("yorigin", yorigin) + self.angrot = self.build_mfdata("angrot", angrot) + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) + self.nlay = self.build_mfdata("nlay", nlay) + self.ncpl = self.build_mfdata("ncpl", ncpl) + self.nvert = self.build_mfdata("nvert", nvert) + self.top = self.build_mfdata("top", top) + self.botm = self.build_mfdata("botm", botm) + self.idomain = self.build_mfdata("idomain", idomain) + self.vertices = self.build_mfdata("vertices", vertices) + self.cell2d = self.build_mfdata("cell2d", cell2d) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfprtfmi.py b/flopy/mf6/modflow/mfprtfmi.py new file mode 100644 index 0000000000..134ae6c3c7 --- /dev/null +++ b/flopy/mf6/modflow/mfprtfmi.py @@ -0,0 +1,113 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowPrtfmi(mfpackage.MFPackage): + """ + ModflowPrtfmi defines a fmi package within a prt6 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 FMI flow terms will be + written to the file specified with "BUDGET FILEOUT" in Output + Control. + packagedata : [flowtype, fname] + * flowtype (string) is the word GWFBUDGET or GWFHEAD. If GWFBUDGET is + specified, then the corresponding file must be a budget file from a + previous GWF Model run. + * fname (string) is the name of the file containing flows. The path to + the file should be included if the file is not located in the folder + where the program was run. + 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. + + """ + + packagedata = ListTemplateGenerator( + ("prt6", "fmi", "packagedata", "packagedata") + ) + package_abbr = "prtfmi" + _package_type = "fmi" + dfn_file_name = "prt-fmi.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name save_flows", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block packagedata", + "name packagedata", + "type recarray flowtype filein fname", + "reader urword", + "optional false", + ], + [ + "block packagedata", + "name flowtype", + "in_record true", + "type string", + "tagged false", + "reader urword", + ], + [ + "block packagedata", + "name filein", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block packagedata", + "name fname", + "in_record true", + "type string", + "preserve_case true", + "tagged false", + "reader urword", + ], + ] + + def __init__( + self, + model, + loading_package=False, + save_flows=None, + packagedata=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "fmi", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.save_flows = self.build_mfdata("save_flows", save_flows) + self.packagedata = self.build_mfdata("packagedata", packagedata) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfprtmip.py b/flopy/mf6/modflow/mfprtmip.py new file mode 100644 index 0000000000..34d2c1d018 --- /dev/null +++ b/flopy/mf6/modflow/mfprtmip.py @@ -0,0 +1,130 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ArrayTemplateGenerator + + +class ModflowPrtmip(mfpackage.MFPackage): + """ + ModflowPrtmip defines a mip package within a prt6 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. + export_array_ascii : boolean + * export_array_ascii (boolean) keyword that specifies input griddata + arrays should be written to layered ascii output files. + porosity : [double] + * porosity (double) is the aquifer porosity. + retfactor : [double] + * retfactor (double) is a real value by which velocity is divided + within a given cell. RETFACTOR can be used to account for solute + retardation, i.e., the apparent effect of linear sorption on the + velocity of particles that track solute advection. RETFACTOR may be + assigned any real value. A RETFACTOR value greater than 1 represents + particle retardation (slowing), and a value of 1 represents no + retardation. The effect of specifying a RETFACTOR value for each cell + is the same as the effect of directly multiplying the POROSITY in + each cell by the proposed RETFACTOR value for each cell. RETFACTOR + allows conceptual isolation of effects such as retardation from the + effect of porosity. The default value is 1. + izone : [integer] + * izone (integer) is an integer zone number assigned to each cell. + IZONE may be positive, negative, or zero. The current cell's zone + number is recorded with each particle track datum. If a PRP package's + ISTOPZONE option is set to any value other than zero, particles + released by that PRP Package terminate if they enter a cell whose + IZONE value matches ISTOPZONE. If ISTOPZONE is not specified or is + set to zero in a PRP Package, IZONE has no effect on the termination + of particles released by that PRP Package. Each PRP Package may + configure a single ISTOPZONE value. + 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. + + """ + + porosity = ArrayTemplateGenerator(("prt6", "mip", "griddata", "porosity")) + retfactor = ArrayTemplateGenerator( + ("prt6", "mip", "griddata", "retfactor") + ) + izone = ArrayTemplateGenerator(("prt6", "mip", "griddata", "izone")) + package_abbr = "prtmip" + _package_type = "mip" + dfn_file_name = "prt-mip.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name export_array_ascii", + "type keyword", + "reader urword", + "optional true", + "mf6internal export_ascii", + ], + [ + "block griddata", + "name porosity", + "type double precision", + "shape (nodes)", + "reader readarray", + "layered true", + ], + [ + "block griddata", + "name retfactor", + "type double precision", + "shape (nodes)", + "reader readarray", + "layered true", + "optional true", + ], + [ + "block griddata", + "name izone", + "type integer", + "shape (nodes)", + "reader readarray", + "layered true", + "optional true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + export_array_ascii=None, + porosity=None, + retfactor=None, + izone=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "mip", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.export_array_ascii = self.build_mfdata( + "export_array_ascii", export_array_ascii + ) + self.porosity = self.build_mfdata("porosity", porosity) + self.retfactor = self.build_mfdata("retfactor", retfactor) + self.izone = self.build_mfdata("izone", izone) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfprtnam.py b/flopy/mf6/modflow/mfprtnam.py new file mode 100644 index 0000000000..bb875d5822 --- /dev/null +++ b/flopy/mf6/modflow/mfprtnam.py @@ -0,0 +1,163 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowPrtnam(mfpackage.MFPackage): + """ + ModflowPrtnam defines a nam package within a prt6 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. + list : string + * list (string) is name of the listing file to create for this PRT + model. If not specified, then the name of the list file will be the + basename of the PRT model name file and the '.lst' extension. For + example, if the PRT name file is called "my.model.nam" then the list + file will be called "my.model.lst". + print_input : boolean + * print_input (boolean) keyword to indicate that the list of all model + stress package 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 all model + package 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 all model package flow + terms will be written to the file specified with "BUDGET FILEOUT" in + Output Control. + packages : [ftype, fname, pname] + * ftype (string) is the file type, which must be one of the following + character values shown in table ref{table:ftype-prt}. Ftype may be + entered in any combination of uppercase and lowercase. + * fname (string) is the name of the file containing the package input. + The path to the file should be included if the file is not located in + the folder where the program was run. + * pname (string) is the user-defined name for the package. PNAME is + restricted to 16 characters. No spaces are allowed in PNAME. PNAME + character values are read and stored by the program for stress + packages only. These names may be useful for labeling purposes when + multiple stress packages of the same type are located within a single + PRT Model. If PNAME is specified for a stress package, then PNAME + will be used in the flow budget table in the listing file; it will + also be used for the text entry in the cell-by-cell budget file. + PNAME is case insensitive and is stored in all upper case letters. + 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. + + """ + + packages = ListTemplateGenerator(("prt6", "nam", "packages", "packages")) + package_abbr = "prtnam" + _package_type = "nam" + dfn_file_name = "prt-nam.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name list", + "type string", + "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 packages", + "name packages", + "type recarray ftype fname pname", + "reader urword", + "optional false", + ], + [ + "block packages", + "name ftype", + "in_record true", + "type string", + "tagged false", + "reader urword", + ], + [ + "block packages", + "name fname", + "in_record true", + "type string", + "preserve_case true", + "tagged false", + "reader urword", + ], + [ + "block packages", + "name pname", + "in_record true", + "type string", + "tagged false", + "reader urword", + "optional true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + list=None, + print_input=None, + print_flows=None, + save_flows=None, + packages=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "nam", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.list = self.build_mfdata("list", list) + 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.packages = self.build_mfdata("packages", packages) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfprtoc.py b/flopy/mf6/modflow/mfprtoc.py new file mode 100644 index 0000000000..511c3006f6 --- /dev/null +++ b/flopy/mf6/modflow/mfprtoc.py @@ -0,0 +1,550 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on May 23, 2024 14:30:07 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowPrtoc(mfpackage.MFPackage): + """ + ModflowPrtoc defines a oc package within a prt6 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. + budget_filerecord : [budgetfile] + * budgetfile (string) name of the 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. + track_filerecord : [trackfile] + * trackfile (string) name of the binary output file to write tracking + information. + trackcsv_filerecord : [trackcsvfile] + * trackcsvfile (string) name of the comma-separated value (CSV) file to + write tracking information. + track_release : boolean + * track_release (boolean) keyword to indicate that particle tracking + output is to be written when a particle is released + track_exit : boolean + * track_exit (boolean) keyword to indicate that particle tracking + output is to be written when a particle exits a cell + track_timestep : boolean + * track_timestep (boolean) keyword to indicate that particle tracking + output is to be written at the end of each time step + track_terminate : boolean + * track_terminate (boolean) keyword to indicate that particle tracking + output is to be written when a particle terminates for any reason + track_weaksink : boolean + * track_weaksink (boolean) keyword to indicate that particle tracking + output is to be written when a particle exits a weak sink (a cell + which removes some but not all inflow from adjacent cells) + track_usertime : boolean + * track_usertime (boolean) keyword to indicate that particle tracking + output is to be written at user-specified times, provided as double + precision values to the TRACK_TIMES or TRACK_TIMESFILE options + track_timesrecord : [times] + * times (double) times to track, relative to the beginning of the + simulation. + track_timesfilerecord : [timesfile] + * timesfile (string) name of the tracking times file + saverecord : [rtype, ocsetting] + * rtype (string) type of information to save or print. Can only be + BUDGET. + * ocsetting (keystring) specifies the steps for which the data will be + saved. + all : [keyword] + * all (keyword) keyword to indicate save for all time steps in + period. + first : [keyword] + * first (keyword) keyword to indicate save for first step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + last : [keyword] + * last (keyword) keyword to indicate save for last step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + frequency : [integer] + * frequency (integer) save at the specified time step + frequency. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + steps : [integer] + * steps (integer) save for each step specified in STEPS. This + keyword may be used in conjunction with other keywords to + print or save results for multiple time steps. + printrecord : [rtype, ocsetting] + * rtype (string) type of information to save or print. Can only be + BUDGET. + * ocsetting (keystring) specifies the steps for which the data will be + saved. + all : [keyword] + * all (keyword) keyword to indicate save for all time steps in + period. + first : [keyword] + * first (keyword) keyword to indicate save for first step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + last : [keyword] + * last (keyword) keyword to indicate save for last step in + period. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + frequency : [integer] + * frequency (integer) save at the specified time step + frequency. This keyword may be used in conjunction with other + keywords to print or save results for multiple time steps. + steps : [integer] + * steps (integer) save for each step specified in STEPS. This + keyword may be used in conjunction with other keywords to + print or save results for multiple time steps. + 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. + + """ + + budget_filerecord = ListTemplateGenerator( + ("prt6", "oc", "options", "budget_filerecord") + ) + budgetcsv_filerecord = ListTemplateGenerator( + ("prt6", "oc", "options", "budgetcsv_filerecord") + ) + track_filerecord = ListTemplateGenerator( + ("prt6", "oc", "options", "track_filerecord") + ) + trackcsv_filerecord = ListTemplateGenerator( + ("prt6", "oc", "options", "trackcsv_filerecord") + ) + track_timesrecord = ListTemplateGenerator( + ("prt6", "oc", "options", "track_timesrecord") + ) + track_timesfilerecord = ListTemplateGenerator( + ("prt6", "oc", "options", "track_timesfilerecord") + ) + saverecord = ListTemplateGenerator(("prt6", "oc", "period", "saverecord")) + printrecord = ListTemplateGenerator( + ("prt6", "oc", "period", "printrecord") + ) + package_abbr = "prtoc" + _package_type = "oc" + dfn_file_name = "prt-oc.dfn" + + dfn = [ + [ + "header", + ], + [ + "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 track_filerecord", + "type record track fileout trackfile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name track", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name trackfile", + "type string", + "preserve_case true", + "shape", + "in_record true", + "reader urword", + "tagged false", + "optional false", + ], + [ + "block options", + "name trackcsv_filerecord", + "type record trackcsv fileout trackcsvfile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name trackcsv", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name trackcsvfile", + "type string", + "preserve_case true", + "shape", + "in_record true", + "reader urword", + "tagged false", + "optional false", + ], + [ + "block options", + "name track_release", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name track_exit", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name track_timestep", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name track_terminate", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name track_weaksink", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name track_usertime", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name track_timesrecord", + "type record track_times times", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name track_times", + "type keyword", + "reader urword", + "in_record true", + "tagged true", + "shape", + ], + [ + "block options", + "name times", + "type double precision", + "shape (unknown)", + "reader urword", + "in_record true", + "tagged false", + "repeating true", + ], + [ + "block options", + "name track_timesfilerecord", + "type record track_timesfile timesfile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name track_timesfile", + "type keyword", + "reader urword", + "in_record true", + "tagged true", + "shape", + ], + [ + "block options", + "name timesfile", + "type string", + "preserve_case true", + "shape", + "in_record true", + "reader urword", + "tagged false", + "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 saverecord", + "type record save rtype ocsetting", + "shape", + "reader urword", + "tagged false", + "optional true", + ], + [ + "block period", + "name save", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block period", + "name printrecord", + "type record print rtype ocsetting", + "shape", + "reader urword", + "tagged false", + "optional true", + ], + [ + "block period", + "name print", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block period", + "name rtype", + "type string", + "shape", + "in_record true", + "reader urword", + "tagged false", + "optional false", + ], + [ + "block period", + "name ocsetting", + "type keystring all first last frequency steps", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block period", + "name all", + "type keyword", + "shape", + "in_record true", + "reader urword", + ], + [ + "block period", + "name first", + "type keyword", + "shape", + "in_record true", + "reader urword", + ], + [ + "block period", + "name last", + "type keyword", + "shape", + "in_record true", + "reader urword", + ], + [ + "block period", + "name frequency", + "type integer", + "shape", + "tagged true", + "in_record true", + "reader urword", + ], + [ + "block period", + "name steps", + "type integer", + "shape (