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..315296422b --- /dev/null +++ b/flopy/mf6/data/dfn/exg-gwegwe.dfn @@ -0,0 +1,280 @@ +# --------------------- 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. + +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..e27195cb39 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 diff --git a/flopy/mf6/data/dfn/exg-gwtgwt.dfn b/flopy/mf6/data/dfn/exg-gwtgwt.dfn index f5aeb24199..7d8b419ddd 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 diff --git a/flopy/mf6/data/dfn/exg-swfgwf.dfn b/flopy/mf6/data/dfn/exg-swfgwf.dfn new file mode 100644 index 0000000000..575493ab0d --- /dev/null +++ b/flopy/mf6/data/dfn/exg-swfgwf.dfn @@ -0,0 +1,118 @@ +# --------------------- exg swfgwf options --------------------- +# flopy multi-package + +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 ipr_input + +block options +name print_flows +type keyword +reader urword +optional true +longname keyword to print swfgwf 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 ipr_flow + +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 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 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:gwf-obstypetable} lists observation type(s) supported by the SWF-GWF package. + +# --------------------- exg swfgwf dimensions --------------------- + +block dimensions +name nexg +type integer +reader urword +optional false +longname number of exchanges +description keyword and integer value specifying the number of SWF-GWF exchanges. + + +# --------------------- exg swfgwf exchangedata --------------------- + +block exchangedata +name exchangedata +type recarray cellidm1 cellidm2 cond +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 cond +type double precision +in_record true +tagged false +reader urword +optional false +longname conductance +description is the conductance between the surface water cell and the groundwater cell. + 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..e49626edf3 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-cnd.dfn @@ -0,0 +1,92 @@ +# --------------------- 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. + +# --------------------- 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 + +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..bb77bac782 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-dis.dfn @@ -0,0 +1,122 @@ +# --------------------- 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. + + +# --------------------- 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..ec86d0852c --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-disu.dfn @@ -0,0 +1,277 @@ +# --------------------- 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 + +# --------------------- 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 specifed 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..b752a40b03 --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-disv.dfn @@ -0,0 +1,204 @@ +# --------------------- 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. + +# --------------------- 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..a31e9a4569 --- /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 kg/m3. + +# --------------------- 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 kg/m3. + + +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..0cda10416b --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-ic.dfn @@ -0,0 +1,11 @@ +# --------------------- 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-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..70c89d6713 --- /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}. 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..296113c7ba --- /dev/null +++ b/flopy/mf6/data/dfn/gwe-oc.dfn @@ -0,0 +1,313 @@ +# --------------------- gwt 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 conc 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. + + +# --------------------- gwt 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. + mve_filerecord : [mve6_filename] + * mve6_filename (string) 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. + 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", + ], + [ + "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", + ], + [ + "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, + mve_filerecord=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", 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..22a5640bcb --- /dev/null +++ b/flopy/mf6/modflow/mfgweic.py @@ -0,0 +1,71 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 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. + 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 griddata", + "name strt", + "type double precision", + "shape (nodes)", + "reader readarray", + "layered true", + "default_value 0.0", + ], + ] + + def __init__( + self, + model, + loading_package=False, + strt=0.0, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "ic", filename, pname, loading_package, **kwargs + ) + + # set up variables + 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..7add14ec4d --- /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 February 18, 2024 14:36:23 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/mfgwemwe.py b/flopy/mf6/modflow/mfgwemwe.py new file mode 100644 index 0000000000..b7096d21aa --- /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 February 18, 2024 14:36:23 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..b708896c04 --- /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 February 18, 2024 14:36:23 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 in mf6io.pdf. 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..e87653b0fe --- /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 February 18, 2024 14:36:23 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 conc + 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..fc39cb40db 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 February 18, 2024 14:36:23 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. diff --git a/flopy/mf6/modflow/mfgwfgwt.py b/flopy/mf6/modflow/mfgwfgwt.py index 917ceb14d6..643c31bbd2 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 February 18, 2024 14:36:23 UTC from .. import mfpackage diff --git a/flopy/mf6/modflow/mfgwfhfb.py b/flopy/mf6/modflow/mfgwfhfb.py index 97f4e510b9..9fb2a84d33 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 February 18, 2024 14:36:23 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..6117d43139 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwflak.py b/flopy/mf6/modflow/mfgwflak.py index 759e4a65f2..ef9df6c071 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 February 18, 2024 14:36:23 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..a74da9c464 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 February 18, 2024 14:36:23 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..e23fff4441 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 February 18, 2024 14:36:23 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..311892881c 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfnpf.py b/flopy/mf6/modflow/mfgwfnpf.py index db25596f2a..4a7b9f5f6f 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfoc.py b/flopy/mf6/modflow/mfgwfoc.py index c637ebe74a..f49076e798 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfrch.py b/flopy/mf6/modflow/mfgwfrch.py index 4697a7b46a..71279b43c0 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 February 18, 2024 14:36:23 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..f9da09bce7 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfriv.py b/flopy/mf6/modflow/mfgwfriv.py index 13fca28a63..723dda5f8b 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 February 18, 2024 14:36:23 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..0015522c10 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfsto.py b/flopy/mf6/modflow/mfgwfsto.py index b4dc1d9fd9..ac087d9a21 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 February 18, 2024 14:36:23 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..6ffa84f9d1 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwfvsc.py b/flopy/mf6/modflow/mfgwfvsc.py index ff62a22ab7..08540ea806 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 February 18, 2024 14:36:23 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..a972bb8bc0 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwt.py b/flopy/mf6/modflow/mfgwt.py index 80aaa1286c..3a3d9b56b5 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 February 18, 2024 14:36:23 UTC from .. import mfmodel from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtadv.py b/flopy/mf6/modflow/mfgwtadv.py index 542be274eb..41a6b3cb7d 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 February 18, 2024 14:36:23 UTC from .. import mfpackage diff --git a/flopy/mf6/modflow/mfgwtapi.py b/flopy/mf6/modflow/mfgwtapi.py index 4eef482cbe..7705db475d 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 February 18, 2024 14:36:23 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..d02050a740 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 February 18, 2024 14:36:23 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..d0d54056ed 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtdisu.py b/flopy/mf6/modflow/mfgwtdisu.py index ea0ac306ea..0a2496f071 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtdisv.py b/flopy/mf6/modflow/mfgwtdisv.py index d07731710d..69ab7ea547 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtdsp.py b/flopy/mf6/modflow/mfgwtdsp.py index de1cd4f90e..4c3c62a482 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtfmi.py b/flopy/mf6/modflow/mfgwtfmi.py index 423d428d79..cab628a3e2 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 February 18, 2024 14:36:23 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..a4edc6fdcb 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 February 18, 2024 14:36:23 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. diff --git a/flopy/mf6/modflow/mfgwtic.py b/flopy/mf6/modflow/mfgwtic.py index a7f5fc6352..c93b162fd5 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ArrayTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtist.py b/flopy/mf6/modflow/mfgwtist.py index 3df913bd55..7d81fd2940 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 February 18, 2024 14:36:23 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..0c7bf0bef4 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 February 18, 2024 14:36:23 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..1a52dbac84 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 February 18, 2024 14:36:23 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..0bc520a782 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 February 18, 2024 14:36:23 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..20df446ec9 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 February 18, 2024 14:36:23 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..dbdf968693 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfgwtoc.py b/flopy/mf6/modflow/mfgwtoc.py index c8a22c5f5d..0eadc48f5a 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 February 18, 2024 14:36:23 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..d988b25b3f 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 February 18, 2024 14:36:23 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..f0b19f5cf8 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 February 18, 2024 14:36:23 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..211361be1e 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 February 18, 2024 14:36:23 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..e23a1793f5 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 February 18, 2024 14:36:23 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..8f8e391467 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfmvr.py b/flopy/mf6/modflow/mfmvr.py index fe1b265f8d..adbd73441c 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 February 18, 2024 14:36:23 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..b00fc5911e 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 February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator diff --git a/flopy/mf6/modflow/mfnam.py b/flopy/mf6/modflow/mfnam.py index 777597f775..b3d4233ca5 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 February 07, 2024 20:16:08 UTC +# FILE created on February 18, 2024 14:36:23 UTC from .. import mfpackage from ..data.mfdatautil import ListTemplateGenerator @@ -235,7 +235,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/mfsimulation.py b/flopy/mf6/modflow/mfsimulation.py index 423d609a71..cd399398fe 100644 --- a/flopy/mf6/modflow/mfsimulation.py +++ b/flopy/mf6/modflow/mfsimulation.py @@ -1,9 +1,8 @@ # 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 February 18, 2024 14:36:23 UTC import os from typing import Union - from .. import mfsimbase diff --git a/flopy/mf6/modflow/mfswf.py b/flopy/mf6/modflow/mfswf.py new file mode 100644 index 0000000000..cfe2d05a3b --- /dev/null +++ b/flopy/mf6/modflow/mfswf.py @@ -0,0 +1,143 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfmodel +from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator + + +class ModflowSwf(mfmodel.MFModel): + """ + Modflowswf defines a swf 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 SWF + model. If not specified, then the name of the list file will be the + basename of the SWF model name file and the '.lst' extension. For + example, if the SWF 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. + newtonoptions : [under_relaxation] + * under_relaxation (string) keyword that indicates whether the surface + water stage in a reach will be under-relaxed when water levels fall + below the bottom of the model below any given cell. By default, + 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. + * 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 + SWF 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 = "swf" + + 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, + newtonoptions=None, + **kwargs, + ): + super().__init__( + simulation, + model_type="swf6", + 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.name_file.newtonoptions.set_data(newtonoptions) + + 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 + self.newtonoptions = self.name_file.newtonoptions + + @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, + "swf6", + version, + exe_name, + strict, + model_rel_path, + load_only, + ) diff --git a/flopy/mf6/modflow/mfswfchd.py b/flopy/mf6/modflow/mfswfchd.py new file mode 100644 index 0000000000..51931e3115 --- /dev/null +++ b/flopy/mf6/modflow/mfswfchd.py @@ -0,0 +1,353 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowSwfchd(mfpackage.MFPackage): + """ + ModflowSwfchd defines a chd package within a swf6 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. + auxiliary : [string] + * auxiliary (string) defines an array of one or more auxiliary variable + names. There is no limit on the number of auxiliary variables that + can be provided on this line; however, lists of information provided + in subsequent blocks must have a column of data for each auxiliary + variable name defined here. The number of auxiliary variables + detected on this line determines the value for naux. Comments cannot + be provided anywhere on this line as they will be interpreted as + auxiliary variable names. Auxiliary variables may not be used by the + package, but they will be available for use by other parts of the + program. The program will terminate with an error if auxiliary + variables are specified on more than one line in the options block. + auxmultname : string + * auxmultname (string) name of auxiliary variable to be used as + multiplier of CHD head value. + boundnames : boolean + * boundnames (boolean) keyword to indicate that boundary names may be + provided with the list of constant-head cells. + print_input : boolean + * print_input (boolean) keyword to indicate that the list of constant- + head 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 constant- + head 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 constant-head flow + terms will be written to the file specified with "BUDGET FILEOUT" in + Output Control. + timeseries : {varname:data} or timeseries data + * Contains data for the ts package. Data can be stored in a dictionary + containing data for the ts package with variable names as keys and + package data as values. Data just for the timeseries variable is also + acceptable. See ts package documentation for more information. + observations : {varname:data} or continuous data + * Contains data for the obs package. Data can be stored in a dictionary + containing data for the obs package with variable names as keys and + package data as values. Data just for the observations variable is + also acceptable. See obs package documentation for more information. + maxbound : integer + * maxbound (integer) integer value specifying the maximum number of + constant-head cells that will be specified for use during any stress + period. + stress_period_data : [cellid, head, aux, boundname] + * cellid ((integer, ...)) is the cell identifier, and depends on the + type of grid that is used for the simulation. For a structured grid + that uses the DIS input file, CELLID is the layer, row, and column. + For a grid that uses the DISV input file, CELLID is the layer and + CELL2D number. If the model uses the unstructured discretization + (DISU) input file, CELLID is the node number for the cell. This + argument is an index variable, which means that it should be treated + as zero-based when working with FloPy and Python. Flopy will + automatically subtract one when loading index variables and add one + when writing index variables. + * head (double) is the head at the boundary. If the Options block + includes a TIMESERIESFILE entry (see the "Time-Variable Input" + section), values can be obtained from a time series by entering the + time-series name in place of a numeric value. + * aux (double) represents the values of the auxiliary variables for + each constant head. The values of auxiliary variables must be present + for each constant head. 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 constant head boundary 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(("swf6", "chd", "options", "auxiliary")) + ts_filerecord = ListTemplateGenerator( + ("swf6", "chd", "options", "ts_filerecord") + ) + obs_filerecord = ListTemplateGenerator( + ("swf6", "chd", "options", "obs_filerecord") + ) + stress_period_data = ListTemplateGenerator( + ("swf6", "chd", "period", "stress_period_data") + ) + package_abbr = "swfchd" + _package_type = "chd" + dfn_file_name = "swf-chd.dfn" + + dfn = [ + [ + "header", + "multi-package", + ], + [ + "block options", + "name auxiliary", + "type string", + "shape (naux)", + "reader urword", + "optional true", + ], + [ + "block options", + "name auxmultname", + "type string", + "shape", + "reader urword", + "optional true", + ], + [ + "block options", + "name boundnames", + "type keyword", + "shape", + "reader urword", + "optional true", + ], + [ + "block options", + "name print_input", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name print_flows", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name save_flows", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name ts_filerecord", + "type record ts6 filein ts6_filename", + "shape", + "reader urword", + "tagged true", + "optional true", + "construct_package ts", + "construct_data timeseries", + "parameter_name timeseries", + ], + [ + "block options", + "name ts6", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name filein", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name ts6_filename", + "type string", + "preserve_case true", + "in_record true", + "reader urword", + "optional false", + "tagged false", + ], + [ + "block options", + "name obs_filerecord", + "type record obs6 filein obs6_filename", + "shape", + "reader urword", + "tagged true", + "optional true", + "construct_package obs", + "construct_data continuous", + "parameter_name observations", + ], + [ + "block options", + "name obs6", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name obs6_filename", + "type string", + "preserve_case true", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block dimensions", + "name maxbound", + "type integer", + "reader urword", + "optional false", + ], + [ + "block period", + "name iper", + "type integer", + "block_variable True", + "in_record true", + "tagged false", + "shape", + "valid", + "reader urword", + "optional false", + ], + [ + "block period", + "name stress_period_data", + "type recarray cellid head aux boundname", + "shape (maxbound)", + "reader urword", + "mf6internal spd", + ], + [ + "block period", + "name cellid", + "type integer", + "shape (ncelldim)", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block period", + "name head", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + "time_series true", + ], + [ + "block period", + "name aux", + "type double precision", + "in_record true", + "tagged false", + "shape (naux)", + "reader urword", + "optional true", + "time_series true", + ], + [ + "block period", + "name boundname", + "type string", + "shape", + "tagged false", + "in_record true", + "reader urword", + "optional true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + auxiliary=None, + auxmultname=None, + boundnames=None, + print_input=None, + print_flows=None, + save_flows=None, + timeseries=None, + observations=None, + maxbound=None, + stress_period_data=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "chd", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.auxiliary = self.build_mfdata("auxiliary", auxiliary) + self.auxmultname = self.build_mfdata("auxmultname", auxmultname) + self.boundnames = self.build_mfdata("boundnames", boundnames) + self.print_input = self.build_mfdata("print_input", print_input) + self.print_flows = self.build_mfdata("print_flows", print_flows) + self.save_flows = self.build_mfdata("save_flows", save_flows) + self._ts_filerecord = self.build_mfdata("ts_filerecord", None) + self._ts_package = self.build_child_package( + "ts", timeseries, "timeseries", self._ts_filerecord + ) + self._obs_filerecord = self.build_mfdata("obs_filerecord", None) + self._obs_package = self.build_child_package( + "obs", observations, "continuous", self._obs_filerecord + ) + self.maxbound = self.build_mfdata("maxbound", maxbound) + self.stress_period_data = self.build_mfdata( + "stress_period_data", stress_period_data + ) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfswfcxs.py b/flopy/mf6/modflow/mfswfcxs.py new file mode 100644 index 0000000000..35df4c4ec0 --- /dev/null +++ b/flopy/mf6/modflow/mfswfcxs.py @@ -0,0 +1,201 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowSwfcxs(mfpackage.MFPackage): + """ + ModflowSwfcxs defines a cxs package within a swf6 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. + print_input : boolean + * print_input (boolean) keyword to indicate that the list of stream + reach information will be written to the listing file immediately + after it is read. + nsections : integer + * nsections (integer) integer value specifying the number of cross + sections that will be defined. There must be NSECTIONS entries in the + PACKAGEDATA block. + npoints : integer + * npoints (integer) integer value specifying the total number of cross- + section points defined for all reaches. There must be NPOINTS entries + in the CROSSSECTIONDATA block. + packagedata : [idcxs, nxspoints] + * idcxs (integer) integer value that defines the cross section number + associated with the specified PACKAGEDATA data on the line. IDCXS + must be greater than zero and less than or equal to NSECTIONS. + Information must be specified for every section or the program will + terminate with an error. The program will also terminate with an + error if information for a section 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. + * nxspoints (integer) integer value that defines the number of points + used to define the define the shape of a section. NXSPOINTS must be + greater than zero or the program will terminate with an error. + NXSPOINTS defines the number of points that must be entered for the + reach in the CROSSSECTIONDATA block. The sum of NXSPOINTS for all + sections must equal the NPOINTS dimension. + crosssectiondata : [xfraction, height, manfraction] + * xfraction (double) real value that defines the station (x) data for + the cross-section as a fraction of the width (WIDTH) of the reach. + XFRACTION must be greater than or equal to zero but can be greater + than one. XFRACTION values can be used to decrease or increase the + width of a reach from the specified reach width (WIDTH). + * height (double) real value that is the height relative to the top of + the lowest elevation of the streambed (ELEVATION) and corresponding + to the station data on the same line. HEIGHT must be greater than or + equal to zero and at least one cross-section height must be equal to + zero. + * manfraction (double) real value that defines the Manning's roughness + coefficient data for the cross-section as a fraction of the Manning's + roughness coefficient for the reach (MANNINGSN) and corresponding to + the station data on the same line. MANFRACTION must be greater than + zero. MANFRACTION is applied from the XFRACTION value on the same + line to the XFRACTION value on the next line. + 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( + ("swf6", "cxs", "packagedata", "packagedata") + ) + crosssectiondata = ListTemplateGenerator( + ("swf6", "cxs", "crosssectiondata", "crosssectiondata") + ) + package_abbr = "swfcxs" + _package_type = "cxs" + dfn_file_name = "swf-cxs.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name print_input", + "type keyword", + "reader urword", + "optional true", + "mf6internal iprpak", + ], + [ + "block dimensions", + "name nsections", + "type integer", + "reader urword", + "optional false", + ], + [ + "block dimensions", + "name npoints", + "type integer", + "reader urword", + "optional false", + ], + [ + "block packagedata", + "name packagedata", + "type recarray idcxs nxspoints", + "shape (nsections)", + "reader urword", + ], + [ + "block packagedata", + "name idcxs", + "type integer", + "shape", + "tagged false", + "in_record true", + "reader urword", + "numeric_index true", + ], + [ + "block packagedata", + "name nxspoints", + "type integer", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block crosssectiondata", + "name crosssectiondata", + "type recarray xfraction height manfraction", + "shape (npoints)", + "reader urword", + ], + [ + "block crosssectiondata", + "name xfraction", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block crosssectiondata", + "name height", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block crosssectiondata", + "name manfraction", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + "optional false", + ], + ] + + def __init__( + self, + model, + loading_package=False, + print_input=None, + nsections=None, + npoints=None, + packagedata=None, + crosssectiondata=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "cxs", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.print_input = self.build_mfdata("print_input", print_input) + self.nsections = self.build_mfdata("nsections", nsections) + self.npoints = self.build_mfdata("npoints", npoints) + self.packagedata = self.build_mfdata("packagedata", packagedata) + self.crosssectiondata = self.build_mfdata( + "crosssectiondata", crosssectiondata + ) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfswfdfw.py b/flopy/mf6/modflow/mfswfdfw.py new file mode 100644 index 0000000000..a239183b5b --- /dev/null +++ b/flopy/mf6/modflow/mfswfdfw.py @@ -0,0 +1,267 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator + + +class ModflowSwfdfw(mfpackage.MFPackage): + """ + ModflowSwfdfw defines a dfw package within a swf6 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. + central_in_space : boolean + * central_in_space (boolean) keyword to indicate conductance should be + calculated using central-in-space weighting instead of the default + upstream weighting approach. + length_conversion : double + * length_conversion (double) real value that is used to convert user- + specified Manning's roughness coefficients from meters to model + length units. LENGTH_CONVERSION should be set to 3.28081, 1.0, and + 100.0 when using length units (LENGTH_UNITS) of feet, meters, or + centimeters in the simulation, respectively. LENGTH_CONVERSION does + not need to be specified if LENGTH_UNITS are meters. + time_conversion : double + * time_conversion (double) real value that is used to convert user- + specified Manning's roughness coefficients from seconds to model time + units. TIME_CONVERSION should be set to 1.0, 60.0, 3,600.0, 86,400.0, + and 31,557,600.0 when using time units (TIME_UNITS) of seconds, + minutes, hours, days, or years in the simulation, respectively. + TIME_CONVERSION does not need to be specified if TIME_UNITS are + seconds. + save_flows : boolean + * save_flows (boolean) keyword to indicate that budget flow terms will + be written to the file specified with "BUDGET SAVE FILE" in Output + Control. + print_flows : boolean + * print_flows (boolean) keyword to indicate that calculated flows + between cells 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. This option can produce extremely large list files + because all cell-by-cell flows are printed. It should only be used + with the DFW Package for models that have a small number of cells. + 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. + width : [double] + * width (double) real value that defines the reach width. WIDTH must be + greater than zero. + manningsn : [double] + * manningsn (double) mannings roughness coefficient + slope : [double] + * slope (double) bottom slope of the river bed + idcxs : [integer] + * idcxs (integer) integer value indication the cross section identifier + in the Cross Section Package that applies to the reach. If not + provided then reach will be treated as hydraulically wide. 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. + + """ + + obs_filerecord = ListTemplateGenerator( + ("swf6", "dfw", "options", "obs_filerecord") + ) + width = ArrayTemplateGenerator(("swf6", "dfw", "griddata", "width")) + manningsn = ArrayTemplateGenerator( + ("swf6", "dfw", "griddata", "manningsn") + ) + slope = ArrayTemplateGenerator(("swf6", "dfw", "griddata", "slope")) + idcxs = ArrayTemplateGenerator(("swf6", "dfw", "griddata", "idcxs")) + package_abbr = "swfdfw" + _package_type = "dfw" + dfn_file_name = "swf-dfw.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name central_in_space", + "type keyword", + "reader urword", + "optional true", + "mf6internal icentral", + ], + [ + "block options", + "name length_conversion", + "type double precision", + "reader urword", + "optional true", + "mf6internal lengthconv", + ], + [ + "block options", + "name time_conversion", + "type double precision", + "reader urword", + "optional true", + "mf6internal timeconv", + ], + [ + "block options", + "name save_flows", + "type keyword", + "reader urword", + "optional true", + "mf6internal ipakcb", + ], + [ + "block options", + "name print_flows", + "type keyword", + "reader urword", + "optional true", + "mf6internal iprflow", + ], + [ + "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 filein", + "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 griddata", + "name width", + "type double precision", + "shape (nodes)", + "valid", + "reader readarray", + "layered false", + "optional", + ], + [ + "block griddata", + "name manningsn", + "type double precision", + "shape (nodes)", + "valid", + "reader readarray", + "layered false", + "optional", + ], + [ + "block griddata", + "name slope", + "type double precision", + "shape (nodes)", + "valid", + "reader readarray", + "layered false", + "optional", + ], + [ + "block griddata", + "name idcxs", + "type integer", + "shape (nodes)", + "valid", + "reader readarray", + "layered false", + "optional true", + "numeric_index true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + central_in_space=None, + length_conversion=None, + time_conversion=None, + save_flows=None, + print_flows=None, + observations=None, + width=None, + manningsn=None, + slope=None, + idcxs=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "dfw", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.central_in_space = self.build_mfdata( + "central_in_space", central_in_space + ) + self.length_conversion = self.build_mfdata( + "length_conversion", length_conversion + ) + self.time_conversion = self.build_mfdata( + "time_conversion", time_conversion + ) + self.save_flows = self.build_mfdata("save_flows", save_flows) + self.print_flows = self.build_mfdata("print_flows", print_flows) + self._obs_filerecord = self.build_mfdata("obs_filerecord", None) + self._obs_package = self.build_child_package( + "obs", observations, "continuous", self._obs_filerecord + ) + self.width = self.build_mfdata("width", width) + self.manningsn = self.build_mfdata("manningsn", manningsn) + self.slope = self.build_mfdata("slope", slope) + self.idcxs = self.build_mfdata("idcxs", idcxs) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfswfdisl.py b/flopy/mf6/modflow/mfswfdisl.py new file mode 100644 index 0000000000..3246861263 --- /dev/null +++ b/flopy/mf6/modflow/mfswfdisl.py @@ -0,0 +1,389 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator + + +class ModflowSwfdisl(mfpackage.MFPackage): + """ + ModflowSwfdisl defines a disl package within a swf6 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". + length_convert : double + * length_convert (double) conversion factor that is used in converting + constants used by MODFLOW into model length units. All constants are + by default in units of "meters". Constants that use length_conversion + include GRAVITY and STORAGE COEFFICIENT values. + time_convert : double + * time_convert (double) conversion factor that is used in converting + constants used by MODFLOW into model time units. All constants are by + default in units of "seconds". TIME_CONVERSION is used to convert the + GRAVITY constant from seconds to the model's units. + 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. + nodes : integer + * nodes (integer) is the number of linear cells. + nvert : integer + * nvert (integer) is the total number of (x, y, z) vertex pairs used to + characterize the model grid. + reach_length : [double] + * reach_length (double) length for each reach + reach_bottom : [double] + * reach_bottom (double) bottom elevation of surface water channel + toreach : [integer] + * toreach (integer) index of the downstream reach. Flow from this reach + is passed into the dowstream reach. For reaches that do not flow to + another reach enter a 0 to toreach. 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. + 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. + vertices : [iv, xv, yv, zv] + * 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. + * zv (double) is the z-coordinate for the vertex. + cell2d : [icell2d, fdc, 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. + * fdc (double) is the fractional distance to the cell center. FDC is + relative to the first vertex in the ICVERT array. In most cases FDC + should be 0.5, which would place the center of the line segment that + defines the cell. If the value of FDC is 1, the cell center would + located at the last vertex. FDC values of 0 and 1 can be used to + place the node at either end of the cell which can be useful for + cells with boundary conditions. + * 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 the order that defines the line representing the + cell. Cells that are connected must share vertices. The bottom + elevation of the cell is calculated using the ZV of the first and + last vertex point and FDC. 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. + + """ + + reach_length = ArrayTemplateGenerator( + ("swf6", "disl", "griddata", "reach_length") + ) + reach_bottom = ArrayTemplateGenerator( + ("swf6", "disl", "griddata", "reach_bottom") + ) + toreach = ArrayTemplateGenerator(("swf6", "disl", "griddata", "toreach")) + idomain = ArrayTemplateGenerator(("swf6", "disl", "griddata", "idomain")) + vertices = ListTemplateGenerator(("swf6", "disl", "vertices", "vertices")) + cell2d = ListTemplateGenerator(("swf6", "disl", "cell2d", "cell2d")) + package_abbr = "swfdisl" + _package_type = "disl" + dfn_file_name = "swf-disl.dfn" + + dfn = [ + [ + "header", + ], + [ + "block options", + "name length_units", + "type string", + "reader urword", + "optional true", + ], + [ + "block options", + "name length_convert", + "type double precision", + "reader urword", + "optional true", + ], + [ + "block options", + "name time_convert", + "type double precision", + "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 dimensions", + "name nodes", + "type integer", + "reader urword", + "optional false", + ], + [ + "block dimensions", + "name nvert", + "type integer", + "reader urword", + "optional true", + ], + [ + "block griddata", + "name reach_length", + "type double precision", + "shape (nodes)", + "valid", + "reader readarray", + "layered false", + "optional", + ], + [ + "block griddata", + "name reach_bottom", + "type double precision", + "shape (nodes)", + "valid", + "reader readarray", + "layered false", + "optional", + ], + [ + "block griddata", + "name toreach", + "type integer", + "shape (nodes)", + "valid", + "reader readarray", + "layered false", + "optional true", + "numeric_index true", + ], + [ + "block griddata", + "name idomain", + "type integer", + "shape (nodes)", + "reader readarray", + "layered false", + "optional true", + ], + [ + "block vertices", + "name vertices", + "type recarray iv xv yv zv", + "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 vertices", + "name zv", + "type double precision", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block cell2d", + "name cell2d", + "type recarray icell2d fdc ncvert icvert", + "shape (nodes)", + "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 fdc", + "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, + length_convert=None, + time_convert=None, + nogrb=None, + xorigin=None, + yorigin=None, + angrot=None, + nodes=None, + nvert=None, + reach_length=None, + reach_bottom=None, + toreach=None, + idomain=None, + vertices=None, + cell2d=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "disl", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.length_units = self.build_mfdata("length_units", length_units) + self.length_convert = self.build_mfdata( + "length_convert", length_convert + ) + self.time_convert = self.build_mfdata("time_convert", time_convert) + 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.nodes = self.build_mfdata("nodes", nodes) + self.nvert = self.build_mfdata("nvert", nvert) + self.reach_length = self.build_mfdata("reach_length", reach_length) + self.reach_bottom = self.build_mfdata("reach_bottom", reach_bottom) + self.toreach = self.build_mfdata("toreach", toreach) + 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/mfswfflw.py b/flopy/mf6/modflow/mfswfflw.py new file mode 100644 index 0000000000..a3b846ec60 --- /dev/null +++ b/flopy/mf6/modflow/mfswfflw.py @@ -0,0 +1,353 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowSwfflw(mfpackage.MFPackage): + """ + ModflowSwfflw defines a flw package within a swf6 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. + auxiliary : [string] + * auxiliary (string) defines an array of one or more auxiliary variable + names. There is no limit on the number of auxiliary variables that + can be provided on this line; however, lists of information provided + in subsequent blocks must have a column of data for each auxiliary + variable name defined here. The number of auxiliary variables + detected on this line determines the value for naux. Comments cannot + be provided anywhere on this line as they will be interpreted as + auxiliary variable names. Auxiliary variables may not be used by the + package, but they will be available for use by other parts of the + program. The program will terminate with an error if auxiliary + variables are specified on more than one line in the options block. + auxmultname : string + * auxmultname (string) name of auxiliary variable to be used as + multiplier of flow rate. + boundnames : boolean + * boundnames (boolean) keyword to indicate that boundary names may be + provided with the list of inflow cells. + print_input : boolean + * print_input (boolean) keyword to indicate that the list of inflow + 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 inflow + 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 inflow flow terms will + be written to the file specified with "BUDGET FILEOUT" in Output + Control. + timeseries : {varname:data} or timeseries data + * Contains data for the ts package. Data can be stored in a dictionary + containing data for the ts package with variable names as keys and + package data as values. Data just for the timeseries variable is also + acceptable. See ts package documentation for more information. + observations : {varname:data} or continuous data + * Contains data for the obs package. Data can be stored in a dictionary + containing data for the obs package with variable names as keys and + package data as values. Data just for the observations variable is + also acceptable. See obs package documentation for more information. + maxbound : integer + * maxbound (integer) integer value specifying the maximum number of + inflow cells that will be specified for use during any stress period. + stress_period_data : [cellid, q, aux, boundname] + * cellid ((integer, ...)) is the cell identifier, and depends on the + type of grid that is used for the simulation. For a structured grid + that uses the DIS input file, CELLID is the layer, row, and column. + For a grid that uses the DISV input file, CELLID is the layer and + CELL2D number. If the model uses the unstructured discretization + (DISU) input file, CELLID is the node number for the cell. This + argument is an index variable, which means that it should be treated + as zero-based when working with FloPy and Python. Flopy will + automatically subtract one when loading index variables and add one + when writing index variables. + * q (double) is the volumetric inflow rate. A positive value indicates + inflow to the stream. Negative values are not allows. If the Options + block includes a TIMESERIESFILE entry (see the "Time-Variable Input" + section), values can be obtained from a time series by entering the + time-series name in place of a numeric value. + * aux (double) represents the values of the auxiliary variables for + each inflow. The values of auxiliary variables must be present for + each inflow. 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 inflow 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(("swf6", "flw", "options", "auxiliary")) + ts_filerecord = ListTemplateGenerator( + ("swf6", "flw", "options", "ts_filerecord") + ) + obs_filerecord = ListTemplateGenerator( + ("swf6", "flw", "options", "obs_filerecord") + ) + stress_period_data = ListTemplateGenerator( + ("swf6", "flw", "period", "stress_period_data") + ) + package_abbr = "swfflw" + _package_type = "flw" + dfn_file_name = "swf-flw.dfn" + + dfn = [ + [ + "header", + "multi-package", + ], + [ + "block options", + "name auxiliary", + "type string", + "shape (naux)", + "reader urword", + "optional true", + ], + [ + "block options", + "name auxmultname", + "type string", + "shape", + "reader urword", + "optional true", + ], + [ + "block options", + "name boundnames", + "type keyword", + "shape", + "reader urword", + "optional true", + ], + [ + "block options", + "name print_input", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name print_flows", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name save_flows", + "type keyword", + "reader urword", + "optional true", + ], + [ + "block options", + "name ts_filerecord", + "type record ts6 filein ts6_filename", + "shape", + "reader urword", + "tagged true", + "optional true", + "construct_package ts", + "construct_data timeseries", + "parameter_name timeseries", + ], + [ + "block options", + "name ts6", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name filein", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name ts6_filename", + "type string", + "preserve_case true", + "in_record true", + "reader urword", + "optional false", + "tagged false", + ], + [ + "block options", + "name obs_filerecord", + "type record obs6 filein obs6_filename", + "shape", + "reader urword", + "tagged true", + "optional true", + "construct_package obs", + "construct_data continuous", + "parameter_name observations", + ], + [ + "block options", + "name obs6", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name obs6_filename", + "type string", + "preserve_case true", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + [ + "block dimensions", + "name maxbound", + "type integer", + "reader urword", + "optional false", + ], + [ + "block period", + "name iper", + "type integer", + "block_variable True", + "in_record true", + "tagged false", + "shape", + "valid", + "reader urword", + "optional false", + ], + [ + "block period", + "name stress_period_data", + "type recarray cellid q aux boundname", + "shape (maxbound)", + "reader urword", + "mf6internal spd", + ], + [ + "block period", + "name cellid", + "type integer", + "shape (ncelldim)", + "tagged false", + "in_record true", + "reader urword", + ], + [ + "block period", + "name q", + "type double precision", + "shape", + "tagged false", + "in_record true", + "reader urword", + "time_series true", + ], + [ + "block period", + "name aux", + "type double precision", + "in_record true", + "tagged false", + "shape (naux)", + "reader urword", + "optional true", + "time_series true", + ], + [ + "block period", + "name boundname", + "type string", + "shape", + "tagged false", + "in_record true", + "reader urword", + "optional true", + ], + ] + + def __init__( + self, + model, + loading_package=False, + auxiliary=None, + auxmultname=None, + boundnames=None, + print_input=None, + print_flows=None, + save_flows=None, + timeseries=None, + observations=None, + maxbound=None, + stress_period_data=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "flw", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.auxiliary = self.build_mfdata("auxiliary", auxiliary) + self.auxmultname = self.build_mfdata("auxmultname", auxmultname) + self.boundnames = self.build_mfdata("boundnames", boundnames) + self.print_input = self.build_mfdata("print_input", print_input) + self.print_flows = self.build_mfdata("print_flows", print_flows) + self.save_flows = self.build_mfdata("save_flows", save_flows) + self._ts_filerecord = self.build_mfdata("ts_filerecord", None) + self._ts_package = self.build_child_package( + "ts", timeseries, "timeseries", self._ts_filerecord + ) + self._obs_filerecord = self.build_mfdata("obs_filerecord", None) + self._obs_package = self.build_child_package( + "obs", observations, "continuous", self._obs_filerecord + ) + self.maxbound = self.build_mfdata("maxbound", maxbound) + self.stress_period_data = self.build_mfdata( + "stress_period_data", stress_period_data + ) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfswfgwf.py b/flopy/mf6/modflow/mfswfgwf.py new file mode 100644 index 0000000000..3ca1b6943f --- /dev/null +++ b/flopy/mf6/modflow/mfswfgwf.py @@ -0,0 +1,234 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowSwfgwf(mfpackage.MFPackage): + """ + ModflowSwfgwf defines a swfgwf 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. + 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. + 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. + nexg : integer + * nexg (integer) keyword and integer value specifying the number of + SWF-GWF exchanges. + exchangedata : [cellidm1, cellidm2, cond] + * 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. + * cond (double) is the conductance between the surface water cell and + the groundwater 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. + + """ + + obs_filerecord = ListTemplateGenerator( + ("swfgwf", "options", "obs_filerecord") + ) + exchangedata = ListTemplateGenerator( + ("swfgwf", "exchangedata", "exchangedata") + ) + package_abbr = "swfgwf" + _package_type = "swfgwf" + dfn_file_name = "exg-swfgwf.dfn" + + dfn = [ + [ + "header", + "multi-package", + ], + [ + "block options", + "name print_input", + "type keyword", + "reader urword", + "optional true", + "mf6internal ipr_input", + ], + [ + "block options", + "name print_flows", + "type keyword", + "reader urword", + "optional true", + "mf6internal ipr_flow", + ], + [ + "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 filein", + "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 dimensions", + "name nexg", + "type integer", + "reader urword", + "optional false", + ], + [ + "block exchangedata", + "name exchangedata", + "type recarray cellidm1 cellidm2 cond", + "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 cond", + "type double precision", + "in_record true", + "tagged false", + "reader urword", + "optional false", + ], + ] + + def __init__( + self, + simulation, + loading_package=False, + exgtype="SWF6-GWF6", + exgmnamea=None, + exgmnameb=None, + print_input=None, + print_flows=None, + observations=None, + nexg=None, + exchangedata=None, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + simulation, "swfgwf", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.exgtype = exgtype + + self.exgmnamea = exgmnamea + + self.exgmnameb = exgmnameb + + simulation.register_exchange_file(self) + + self.print_input = self.build_mfdata("print_input", print_input) + self.print_flows = self.build_mfdata("print_flows", print_flows) + self._obs_filerecord = self.build_mfdata("obs_filerecord", None) + self._obs_package = self.build_child_package( + "obs", observations, "continuous", self._obs_filerecord + ) + self.nexg = self.build_mfdata("nexg", nexg) + self.exchangedata = self.build_mfdata("exchangedata", exchangedata) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfswfic.py b/flopy/mf6/modflow/mfswfic.py new file mode 100644 index 0000000000..80c7041b28 --- /dev/null +++ b/flopy/mf6/modflow/mfswfic.py @@ -0,0 +1,70 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ArrayTemplateGenerator + + +class ModflowSwfic(mfpackage.MFPackage): + """ + ModflowSwfic defines a ic package within a swf6 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. + strt : [double] + * strt (double) is the initial (starting) stage---that is, stage at the + beginning of the SWF Model simulation. STRT must be specified for all + SWF Model simulations. One value is read for every model reach. + 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(("swf6", "ic", "griddata", "strt")) + package_abbr = "swfic" + _package_type = "ic" + dfn_file_name = "swf-ic.dfn" + + dfn = [ + [ + "header", + ], + [ + "block griddata", + "name strt", + "type double precision", + "shape (nodes)", + "reader readarray", + "layered true", + "default_value 0.0", + ], + ] + + def __init__( + self, + model, + loading_package=False, + strt=0.0, + filename=None, + pname=None, + **kwargs, + ): + super().__init__( + model, "ic", filename, pname, loading_package, **kwargs + ) + + # set up variables + self.strt = self.build_mfdata("strt", strt) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfswfnam.py b/flopy/mf6/modflow/mfswfnam.py new file mode 100644 index 0000000000..b0f9618da9 --- /dev/null +++ b/flopy/mf6/modflow/mfswfnam.py @@ -0,0 +1,193 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowSwfnam(mfpackage.MFPackage): + """ + ModflowSwfnam defines a nam package within a swf6 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 SWF + model. If not specified, then the name of the list file will be the + basename of the SWF model name file and the '.lst' extension. For + example, if the SWF 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. + newtonoptions : [under_relaxation] + * under_relaxation (string) keyword that indicates whether the surface + water stage in a reach will be under-relaxed when water levels fall + below the bottom of the model below any given cell. By default, + 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. + * 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 + SWF 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(("swf6", "nam", "packages", "packages")) + package_abbr = "swfnam" + _package_type = "nam" + dfn_file_name = "swf-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 options", + "name newtonoptions", + "type record newton under_relaxation", + "reader urword", + "optional true", + ], + [ + "block options", + "name newton", + "in_record true", + "type keyword", + "reader urword", + ], + [ + "block options", + "name under_relaxation", + "in_record true", + "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, + newtonoptions=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.newtonoptions = self.build_mfdata("newtonoptions", newtonoptions) + self.packages = self.build_mfdata("packages", packages) + self._init_complete = True diff --git a/flopy/mf6/modflow/mfswfoc.py b/flopy/mf6/modflow/mfswfoc.py new file mode 100644 index 0000000000..0a003c45a9 --- /dev/null +++ b/flopy/mf6/modflow/mfswfoc.py @@ -0,0 +1,471 @@ +# DO NOT MODIFY THIS FILE DIRECTLY. THIS FILE MUST BE CREATED BY +# mf6/utils/createpackages.py +# FILE created on February 18, 2024 14:36:23 UTC +from .. import mfpackage +from ..data.mfdatautil import ListTemplateGenerator + + +class ModflowSwfoc(mfpackage.MFPackage): + """ + ModflowSwfoc defines a oc package within a swf6 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. + qoutflow_filerecord : [qoutflowfile] + * qoutflowfile (string) name of the output file to write conc + information. + stage_filerecord : [stagefile] + * stagefile (string) name of the output file to write stage + information. + qoutflowprintrecord : [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. + * 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. + * 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( + ("swf6", "oc", "options", "budget_filerecord") + ) + budgetcsv_filerecord = ListTemplateGenerator( + ("swf6", "oc", "options", "budgetcsv_filerecord") + ) + qoutflow_filerecord = ListTemplateGenerator( + ("swf6", "oc", "options", "qoutflow_filerecord") + ) + stage_filerecord = ListTemplateGenerator( + ("swf6", "oc", "options", "stage_filerecord") + ) + qoutflowprintrecord = ListTemplateGenerator( + ("swf6", "oc", "options", "qoutflowprintrecord") + ) + saverecord = ListTemplateGenerator(("swf6", "oc", "period", "saverecord")) + printrecord = ListTemplateGenerator( + ("swf6", "oc", "period", "printrecord") + ) + package_abbr = "swfoc" + _package_type = "oc" + dfn_file_name = "swf-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 qoutflow_filerecord", + "type record qoutflow fileout qoutflowfile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name qoutflow", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name qoutflowfile", + "type string", + "preserve_case true", + "shape", + "in_record true", + "reader urword", + "tagged false", + "optional false", + ], + [ + "block options", + "name stage_filerecord", + "type record stage fileout stagefile", + "shape", + "reader urword", + "tagged true", + "optional true", + ], + [ + "block options", + "name stage", + "type keyword", + "shape", + "in_record true", + "reader urword", + "tagged true", + "optional false", + ], + [ + "block options", + "name stagefile", + "type string", + "preserve_case true", + "shape", + "in_record true", + "reader urword", + "tagged false", + "optional false", + ], + [ + "block options", + "name qoutflowprintrecord", + "type record qoutflow 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 (