From a0a812ab8f59e86aca40e9715cd78162ff90f0af Mon Sep 17 00:00:00 2001 From: mjreno Date: Wed, 11 Dec 2024 08:42:24 -0500 Subject: [PATCH] docs(netcdf): update mf6io extended (#2094) * baseline content for netcdf in mf6io * fix spelling * consolidate extended sections at end of document * reformat mf6ivar.py * update readasarrays for netcdf * fix spelling * restore prt dis and disv dfns * adjustments to export_netcdf tag * minor cleanup * fix quoting in extended_modflow.tex --- doc/mf6io/body.tex | 14 +++---- doc/mf6io/extended_modflow.tex | 34 ++++++++++++++- doc/mf6io/framework/array_data.tex | 2 + doc/mf6io/framework/form_of_input.tex | 2 + doc/mf6io/mf6io.nightlybuild.tex | 1 + doc/mf6io/mf6io.tex | 1 + doc/mf6io/mf6ivar/dfn/gwe-cnd.dfn | 8 ++++ doc/mf6io/mf6ivar/dfn/gwe-dis.dfn | 8 ++++ doc/mf6io/mf6ivar/dfn/gwe-disv.dfn | 6 +++ doc/mf6io/mf6ivar/dfn/gwe-ic.dfn | 2 + doc/mf6io/mf6ivar/dfn/gwe-nam.dfn | 7 +++- doc/mf6io/mf6ivar/dfn/gwf-dis.dfn | 8 ++++ doc/mf6io/mf6ivar/dfn/gwf-disv.dfn | 6 +++ doc/mf6io/mf6ivar/dfn/gwf-evta.dfn | 1 + doc/mf6io/mf6ivar/dfn/gwf-ic.dfn | 2 + doc/mf6io/mf6ivar/dfn/gwf-nam.dfn | 7 +++- doc/mf6io/mf6ivar/dfn/gwf-npf.dfn | 9 ++++ doc/mf6io/mf6ivar/dfn/gwf-rcha.dfn | 1 + doc/mf6io/mf6ivar/dfn/gwf-sto.dfn | 4 ++ doc/mf6io/mf6ivar/dfn/gwt-dis.dfn | 8 ++++ doc/mf6io/mf6ivar/dfn/gwt-disv.dfn | 6 +++ doc/mf6io/mf6ivar/dfn/gwt-dsp.dfn | 7 ++++ doc/mf6io/mf6ivar/dfn/gwt-ic.dfn | 2 + doc/mf6io/mf6ivar/dfn/gwt-nam.dfn | 7 +++- doc/mf6io/mf6ivar/dfn/sim-nam.dfn | 2 + doc/mf6io/mf6ivar/dfn/utl-ncf.dfn | 12 +++--- .../mf6ivar/examples/netcdf-ic-example.dat | 7 ++++ .../mf6ivar/examples/netcdf-nam-example.dat | 12 ++++++ .../mf6ivar/examples/netcdf-npf-example.dat | 8 ++++ .../mf6ivar/examples/utl-ncf-example.dat | 9 ++++ doc/mf6io/mf6ivar/mf6ivar.py | 42 +++++++++++++++---- doc/mf6io/netcdf_input.tex | 4 ++ doc/mf6io/utl_ncf.tex | 18 ++++++++ 33 files changed, 238 insertions(+), 29 deletions(-) create mode 100644 doc/mf6io/mf6ivar/examples/netcdf-ic-example.dat create mode 100644 doc/mf6io/mf6ivar/examples/netcdf-nam-example.dat create mode 100644 doc/mf6io/mf6ivar/examples/netcdf-npf-example.dat create mode 100644 doc/mf6io/mf6ivar/examples/utl-ncf-example.dat create mode 100644 doc/mf6io/netcdf_input.tex create mode 100644 doc/mf6io/utl_ncf.tex diff --git a/doc/mf6io/body.tex b/doc/mf6io/body.tex index a6bec96aacc..e55bba7bb52 100644 --- a/doc/mf6io/body.tex +++ b/doc/mf6io/body.tex @@ -9,10 +9,6 @@ \SECTION{Running a Simulation} \input{running_simulation.tex} -%Instructions for running a simulation -\SECTION{Extended MODFLOW} -\input{extended_modflow.tex} - %General form of input instructions \SECTION{Form of Input Instructions} \input{framework/form_of_input.tex} @@ -39,11 +35,6 @@ \SECTION{Adaptive Time Step (ATS) Utility} \input{utl_ats.tex} -%HPC configuration file -\newpage -\SECTION{High Performance Computing (HPC) Utility -- \textcolor{red}{Extended MODFLOW only}} -\input{utl_hpc.tex} - %GWF Model Input Instructions \newpage \SECTION{Groundwater Flow (GWF) Model Input} @@ -109,6 +100,11 @@ \SECTION{Description of Binary Output Files} \input{framework/binaryoutput} +%Instructions for running a simulation +\newpage +\SECTION{Extended MODFLOW} +\input{extended_modflow.tex} + \newpage \ifx\usgsdirector\undefined \addcontentsline{toc}{section}{\hspace{1.5em}\bibname} diff --git a/doc/mf6io/extended_modflow.tex b/doc/mf6io/extended_modflow.tex index 65a6c4aaa83..3bfadb2d8ce 100644 --- a/doc/mf6io/extended_modflow.tex +++ b/doc/mf6io/extended_modflow.tex @@ -1,3 +1,35 @@ Next to the standard \mf executable, a second, extended version of the program is made available. This version comes with more advanced functionality for which it partially relies on third-party libraries. Currently this concerns the parallel computing capability and the use of NetCDF4 for I/O data. Because the external dependencies increase the complexity of the installation procedure, \mf will remain available in its core set of functionality. -Extended \mf contains all features available in the standard edition, runs on the same input configuration, and produces the same results. Reversely, when running with the standard executable, some features described in this document (HPC Utility, NetCDF4 I/O) will not be available and their configuration will be ignored or an error is reported. These features will be labeled accordingly below. \ No newline at end of file +Extended \mf contains all features available in the standard edition, runs on the same input configuration, and produces the same results. Reversely, when running with the standard executable, some features described in this document (HPC Utility, NetCDF4 I/O) will not be available and their configuration will be ignored or an error is reported. These features will be labeled accordingly below. + +\subsection{NetCDF Export Files} + +The extended build of \mf can optionally create model NetCDF export files. \mf supports two types of NetCDF exports, referred to here as ``structured'' and ``mesh''. + +\mf NetCDF exports by default contain model dependent variable timeseries data, e.g. head. In addition, \mf package griddata input arrays can be configured to be written to the export file. Creating export files containing only one or the other of these these types of data form two distinct uses for the exports. Generating exports of these two types will described below. + +These capabilities are dependent on the earlier described Input Data Processor (IDP). In particular, the package array export capability described below is limited to packages currently supported by IDP. + +\subsubsection{Mesh Exports} +\mf mesh exports comply with UGRID 1.0 conventions and are based on the UGRID 3D layered mesh topology. A UGRID based NetCDF file explicitly describes the grid with a set of variables that gridded data can be associated with. \mf mesh exports can be generated with a DIS or DISV based GWF, GWT, or GWE model. + +\subsubsection{Structured Exports} +\mf structured NetCDF exports define x and y geometric coordinate variables and are not based on the UGRID specification. \mf structured exports can be generated with a DIS based GWF, GWT, or GWE model. + +\subsubsection{Dependent variable exports} +A typical use case creates an export that capture timeseries output for the model dependent variable. This export can be optioned simply by adding the ``EXPORT\_NETCDF'' keyword to a GWF, GWT, or GWE model name file. This keyword takes an argument for the NetCDF export type, either ``STRUCTURED'' or ``MESH'' (or alternatively, ``UGRID''). Configured in this way, the export will contain only the mesh or x and y coordinate variables and the dependent variable(s). Additional configuration options are possible when a NetCDF configuration package (UTL-NCF) is created, such as per-variable compression, chunking options, and options meant to support visualization in post-processing tools like QGIS. This package is described below. + +\subsubsection{Exporting array input} +Packages that support exporting griddata input arrays to model NetCDF files support the ``EXPORT\_ARRAY\_NETCDF'' keyword. Using this keyword, when model NetCDF export also is active, has the effect of writing all package griddata arrays to the NetCDF export. Writing candidate arrays to a NetCDF file offers an alternative to storing them in an ascii or binary input file. + +One approach to converting existing ascii or binary inputs to NetCDF inputs is described next. \mf supports a validate mode option intended to support error checking. In this mode no matrix equations are assembled or solved and no solution based outputs are created. Input, however, is still read in validate mode and thus can be written to NetCDF exports when configured. Specific IDP supported packages can be configured to export griddata array input by using the ``EXPORT\_ARRAY\_NETCDF'' package option when running the simulation in validate mode. When configured in this way, \mf will generate a NetCDF export file, absent a dependent or time coordinate variable, that can serve as a separate input file for model gridded package data. + +\subsection{NetCDF as simulation input} +\mf can read NetCDF files as model inputs containing package griddata array input. Files generated using the validate method described in the previous section are suitable as inputs- note that \mf expects specific annotations for NetCDF input variables and that these are written by default into \mf NetCDF exports. An example follows showing a model name file that configures a NetCDF input and IC and NPF input files that specify specific griddata parameters should be read from the model NetCDF input: +\input{netcdf_input.tex} + +\subsection{High Performance Computing (HPC) Utility} +\input{utl_hpc.tex} + +\subsection{NetCDF configuration (NCF) Utility} +\input{utl_ncf.tex} diff --git a/doc/mf6io/framework/array_data.tex b/doc/mf6io/framework/array_data.tex index a9f29420559..47e15f7d8d9 100644 --- a/doc/mf6io/framework/array_data.tex +++ b/doc/mf6io/framework/array_data.tex @@ -102,6 +102,8 @@ \subsubsection{READARRAY Examples} Here, the initial heads for the model are provided in the \texttt{strt} array. If the optional LAYERED keyword is present, then a separate array is provided for each layer. If the LAYERED keyword is not present, then the entire starting head array is read at once. The LAYERED keyword may be useful to discretization packages of type DIS and DISV, which support the concept of layers. Models defined with the DISU Package are not layered. +Note that the \mf Extended build also supports an optional NETCDF keyword. This keyword is not compatible with the LAYERED keyword and is a valid option only if a model NetCDF input file is configured. This type of workflow is covered in the section which describes Extended \mf. + For a structured DIS model, the READARRAY utility is used to read arrays that are dimensioned to the full size of the grid (of size \texttt{nlay*nrow*ncol}). This utility first reads an array name, which associates the input to be read with the desired array. For these arrays, an optional keyword ``LAYERED'' can be located next to the array name. If ``LAYERED'' is detected, then a control line is provided for each layer and the array is filled with values for each model layer. If the ``LAYERED'' keyword is absent, then a single control line is used and the entire array is filled at once. For example, the following block shows one way the \mf GWF model starting head array (STRT) could be specified for a model with 4 layers. Following the array name and the ``LAYERED'' keyword are four control lines, one for each layer. diff --git a/doc/mf6io/framework/form_of_input.tex b/doc/mf6io/framework/form_of_input.tex index b974245e575..27bde683269 100644 --- a/doc/mf6io/framework/form_of_input.tex +++ b/doc/mf6io/framework/form_of_input.tex @@ -24,6 +24,8 @@ \subsection{Block and Keyword Input} \end{lstlisting} This example shows the items that may be specified with this OPTIONS block. Optional items are enclosed between ``['' and ``]'' symbols. The ``\texttt{<}'' and ``\texttt{>}'' symbols indicate a variable that must be provided by the user. In this case, \texttt{auxiliary} is an array of size \texttt{naux}. Because there are bracket symbols around the entire item, the user it not required to specify anything for this item. Likewise, the user may or may not invoke the ``\texttt{PRINT\_INPUT}'' option. Lastly, the user can specify ``\texttt{MAXIMUM\_ITERATION}'' followed by a numeric value for ``\texttt{maxsfrit}''. If the user does not specify an optional item, then a default condition will apply. Behavior of the default condition is described in the input instructions for that item. +Note that text color in the input instructions is indicative of special features or behaviors associated with the variables printed in that color. Specifically, the text color of blue is reserved to indicate a variable that may be represented with a time series. The text color of red is reserved for keywords or variables that are supported only in the extended build of \mf. The extended build is covered in its own section in this document. + \vspace{6pt}\noindent A valid user input block for OPTIONS might be: \begin{lstlisting}[style=inputfile] diff --git a/doc/mf6io/mf6io.nightlybuild.tex b/doc/mf6io/mf6io.nightlybuild.tex index 7add69c6005..914fb79df0d 100644 --- a/doc/mf6io/mf6io.nightlybuild.tex +++ b/doc/mf6io/mf6io.nightlybuild.tex @@ -45,6 +45,7 @@ } \lstdefinestyle{blockdefinition}{ moredelim=**[is][\color{blue}]{@}{@}, + moredelim=**[is][\color{red}]{\$}{\$}, } %usage: \lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwf-chd-dimensions.dat} \lstdefinestyle{inputfile}{ diff --git a/doc/mf6io/mf6io.tex b/doc/mf6io/mf6io.tex index fa70a72f117..fda0ad6fff5 100644 --- a/doc/mf6io/mf6io.tex +++ b/doc/mf6io/mf6io.tex @@ -37,6 +37,7 @@ } \lstdefinestyle{blockdefinition}{ moredelim=**[is][\color{blue}]{@}{@}, + moredelim=**[is][\color{red}]{\$}{\$}, } %usage: \lstinputlisting[style=blockdefinition]{./mf6ivar/tex/gwf-chd-dimensions.dat} \lstdefinestyle{inputfile}{ diff --git a/doc/mf6io/mf6ivar/dfn/gwe-cnd.dfn b/doc/mf6io/mf6ivar/dfn/gwe-cnd.dfn index 5214018101c..4d9ef1b70a1 100644 --- a/doc/mf6io/mf6ivar/dfn/gwe-cnd.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwe-cnd.dfn @@ -35,6 +35,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # --------------------- gwe cnd griddata --------------------- @@ -44,6 +45,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -54,6 +56,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -64,6 +67,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -74,6 +78,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -84,6 +89,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -94,6 +100,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf true optional true longname thermal conductivity of the simulated fluid description thermal conductivity of the simulated fluid. Note that the CND Package does not account for the tortuosity of the flow paths when solving for the conductive spread of heat. If tortuosity plays an important role in the thermal conductivity calculation, its effect should be reflected in the value specified for KTW. @@ -104,6 +111,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf true optional true longname thermal conductivity of the aquifer material description thermal conductivity of the aquifer material diff --git a/doc/mf6io/mf6ivar/dfn/gwe-dis.dfn b/doc/mf6io/mf6ivar/dfn/gwe-dis.dfn index d8c771250ee..f38d8434cf9 100644 --- a/doc/mf6io/mf6ivar/dfn/gwe-dis.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwe-dis.dfn @@ -58,6 +58,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true block options name ncf_filerecord @@ -77,6 +78,7 @@ tagged true optional false longname ncf keyword description keyword to specify that record corresponds to a netcdf configuration (NCF) file. +extended true block options name filein @@ -98,6 +100,7 @@ optional false tagged false longname file name of NCF information description defines a netcdf configuration (NCF) input file. +extended true # --------------------- gwe dis dimensions --------------------- @@ -135,6 +138,7 @@ name delr type double precision shape (ncol) reader readarray +netcdf true longname spacing along a row description is the column spacing in the row direction. default_value 1.0 @@ -144,6 +148,7 @@ name delc type double precision shape (nrow) reader readarray +netcdf true longname spacing along a column description is the row spacing in the column direction. default_value 1.0 @@ -153,6 +158,7 @@ name top type double precision shape (ncol, nrow) reader readarray +netcdf true longname cell top elevation description is the top elevation for each cell in the top model layer. default_value 1.0 @@ -163,6 +169,7 @@ type double precision shape (ncol, nrow, nlay) reader readarray layered true +netcdf true longname cell bottom elevation description is the bottom elevation for each cell. default_value 0. @@ -173,6 +180,7 @@ type integer shape (ncol, nrow, nlay) reader readarray layered true +netcdf 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/doc/mf6io/mf6ivar/dfn/gwe-disv.dfn b/doc/mf6io/mf6ivar/dfn/gwe-disv.dfn index 9216bb243e9..85d95504c06 100644 --- a/doc/mf6io/mf6ivar/dfn/gwe-disv.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwe-disv.dfn @@ -58,6 +58,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true block options name ncf_filerecord @@ -77,6 +78,7 @@ tagged true optional false longname ncf keyword description keyword to specify that record corresponds to a netcdf configuration (NCF) file. +extended true block options name filein @@ -98,6 +100,7 @@ optional false tagged false longname file name of NCF information description defines a netcdf configuration (NCF) input file. +extended true # --------------------- gwe disv dimensions --------------------- @@ -132,6 +135,7 @@ name top type double precision shape (ncpl) reader readarray +netcdf true longname model top elevation description is the top elevation for each cell in the top model layer. @@ -141,6 +145,7 @@ type double precision shape (ncpl, nlay) reader readarray layered true +netcdf true longname model bottom elevation description is the bottom elevation for each cell. @@ -150,6 +155,7 @@ type integer shape (ncpl, nlay) reader readarray layered true +netcdf 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/doc/mf6io/mf6ivar/dfn/gwe-ic.dfn b/doc/mf6io/mf6ivar/dfn/gwe-ic.dfn index ed8a1feab43..77e9deabfbb 100644 --- a/doc/mf6io/mf6ivar/dfn/gwe-ic.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwe-ic.dfn @@ -17,6 +17,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # --------------------- gwe ic griddata --------------------- @@ -26,6 +27,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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/doc/mf6io/mf6ivar/dfn/gwe-nam.dfn b/doc/mf6io/mf6ivar/dfn/gwe-nam.dfn index c44c4fcfbfe..ed291f0088a 100644 --- a/doc/mf6io/mf6ivar/dfn/gwe-nam.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwe-nam.dfn @@ -40,7 +40,8 @@ reader urword optional true mf6internal export_netcdf longname export model output netcdf file. -description keyword that specifies timeseries data for the dependent variable should be written to a model output netcdf file. No value or ``UGRID'' (ugrid based export) values are supported. +description keyword that specifies timeseries data for the dependent variable should be written to a model output netcdf file. ``STRUCTURED'' or ``MESH'' (ugrid based export) values are supported. +extended true block options name nc_filerecord @@ -49,7 +50,7 @@ reader urword tagged true optional true longname -description netcdf config filerecord +description netcdf filerecord block options name netcdf @@ -60,6 +61,7 @@ tagged true optional false longname netcdf keyword description keyword to specify that record corresponds to a netcdf input file. +extended true block options name filein @@ -82,6 +84,7 @@ tagged false longname netcdf input filename description defines a netcdf input file. mf6internal netcdf_fname +extended true # --------------------- gwe nam packages --------------------- diff --git a/doc/mf6io/mf6ivar/dfn/gwf-dis.dfn b/doc/mf6io/mf6ivar/dfn/gwf-dis.dfn index fd6c553eb6d..dd00ba0c246 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-dis.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-dis.dfn @@ -58,6 +58,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true block options name ncf_filerecord @@ -77,6 +78,7 @@ tagged true optional false longname ncf keyword description keyword to specify that record corresponds to a netcdf configuration (NCF) file. +extended true block options name filein @@ -98,6 +100,7 @@ optional false tagged false longname file name of NCF information description defines a netcdf configuration (NCF) input file. +extended true # --------------------- gwf dis dimensions --------------------- @@ -135,6 +138,7 @@ name delr type double precision shape (ncol) reader readarray +netcdf true longname spacing along a row description is the column spacing in the row direction. default_value 1.0 @@ -144,6 +148,7 @@ name delc type double precision shape (nrow) reader readarray +netcdf true longname spacing along a column description is the row spacing in the column direction. default_value 1.0 @@ -153,6 +158,7 @@ name top type double precision shape (ncol, nrow) reader readarray +netcdf true longname cell top elevation description is the top elevation for each cell in the top model layer. default_value 1.0 @@ -163,6 +169,7 @@ type double precision shape (ncol, nrow, nlay) reader readarray layered true +netcdf true longname cell bottom elevation description is the bottom elevation for each cell. default_value 0. @@ -173,6 +180,7 @@ type integer shape (ncol, nrow, nlay) reader readarray layered true +netcdf 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 or greater, 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/doc/mf6io/mf6ivar/dfn/gwf-disv.dfn b/doc/mf6io/mf6ivar/dfn/gwf-disv.dfn index fe3a70db334..1d3aea38038 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-disv.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-disv.dfn @@ -58,6 +58,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true block options name ncf_filerecord @@ -77,6 +78,7 @@ tagged true optional false longname ncf keyword description keyword to specify that record corresponds to a netcdf configuration (NCF) file. +extended true block options name filein @@ -98,6 +100,7 @@ optional false tagged false longname file name of NCF information description defines a netcdf configuration (NCF) input file. +extended true # --------------------- gwf disv dimensions --------------------- @@ -132,6 +135,7 @@ name top type double precision shape (ncpl) reader readarray +netcdf true longname model top elevation description is the top elevation for each cell in the top model layer. @@ -141,6 +145,7 @@ type double precision shape (ncpl, nlay) reader readarray layered true +netcdf true longname model bottom elevation description is the bottom elevation for each cell. @@ -150,6 +155,7 @@ type integer shape (ncpl, nlay) reader readarray layered true +netcdf 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 or greater, 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/doc/mf6io/mf6ivar/dfn/gwf-evta.dfn b/doc/mf6io/mf6ivar/dfn/gwf-evta.dfn index ab4a44c276f..601d25ee6c3 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-evta.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-evta.dfn @@ -149,6 +149,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # --------------------- gwf evta period --------------------- diff --git a/doc/mf6io/mf6ivar/dfn/gwf-ic.dfn b/doc/mf6io/mf6ivar/dfn/gwf-ic.dfn index f580987dea2..1ad27b4e236 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-ic.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-ic.dfn @@ -17,6 +17,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # --------------------- gwf ic griddata --------------------- @@ -26,6 +27,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf true longname starting head description is the initial (starting) head---that is, head at the beginning of the GWF Model simulation. STRT must be specified for all simulations, including steady-state simulations. One value is read for every model cell. For simulations in which the first stress period is steady state, the values used for STRT generally do not affect the simulation (exceptions may occur if cells go dry and (or) rewet). The execution time, however, will be less if STRT includes hydraulic heads that are close to the steady-state solution. A head value lower than the cell bottom can be provided if a cell should start as dry. default_value 1.0 diff --git a/doc/mf6io/mf6ivar/dfn/gwf-nam.dfn b/doc/mf6io/mf6ivar/dfn/gwf-nam.dfn index 1f69456cd05..634ad908c14 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-nam.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-nam.dfn @@ -65,7 +65,8 @@ reader urword optional true mf6internal export_netcdf longname export model output netcdf file. -description keyword that specifies timeseries data for the dependent variable should be written to a model output netcdf file. No value or ``UGRID'' (ugrid based export) values are supported. +description keyword that specifies timeseries data for the dependent variable should be written to a model output netcdf file. ``STRUCTURED'' or ``MESH'' (ugrid based export) values are supported. +extended true block options name nc_filerecord @@ -74,7 +75,7 @@ reader urword tagged true optional true longname -description netcdf config filerecord +description netcdf filerecord block options name netcdf @@ -85,6 +86,7 @@ tagged true optional false longname netcdf keyword description keyword to specify that record corresponds to a netcdf input file. +extended true block options name filein @@ -107,6 +109,7 @@ tagged false longname netcdf input filename description defines a netcdf input file. mf6internal netcdf_fname +extended true # --------------------- gwf nam packages --------------------- diff --git a/doc/mf6io/mf6ivar/dfn/gwf-npf.dfn b/doc/mf6io/mf6ivar/dfn/gwf-npf.dfn index 3937ea2eca0..812fb6f3f9d 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-npf.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-npf.dfn @@ -241,6 +241,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # dev options @@ -271,6 +272,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional longname confined or convertible indicator description flag for each cell that specifies how saturated thickness is treated. 0 means saturated thickness is held constant; $>$0 means saturated thickness varies with computed head when head is below the cell top; $<$0 means saturated thickness varies with computed head unless the THICKSTRT option is in effect. When THICKSTRT is in effect, a negative value for ICELLTYPE indicates that the saturated thickness value used in conductance calculations in the NPF Package will be computed as STRT-BOT and held constant. If the THICKSTRT option is not in effect, then negative values provided by the user for ICELLTYPE are automatically reassigned by the program to a value of one. @@ -283,6 +285,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional longname hydraulic conductivity (L/T) description is the hydraulic conductivity. For the common case in which the user would like to specify the horizontal hydraulic conductivity and the vertical hydraulic conductivity, then K should be assigned as the horizontal hydraulic conductivity, K33 should be assigned as the vertical hydraulic conductivity, and K22 and the three rotation angles should not be specified. When more sophisticated anisotropy is required, then K corresponds to the K11 hydraulic conductivity axis. All included cells (IDOMAIN $>$ 0) must have a K value greater than zero. @@ -295,6 +298,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional true longname hydraulic conductivity of second ellipsoid axis description is the hydraulic conductivity of the second ellipsoid axis (or the ratio of K22/K if the K22OVERK option is specified); for an unrotated case this is the hydraulic conductivity in the y direction. If K22 is not included in the GRIDDATA block, then K22 is set equal to K. For a regular MODFLOW grid (DIS Package is used) in which no rotation angles are specified, K22 is the hydraulic conductivity along columns in the y direction. For an unstructured DISU grid, the user must assign principal x and y axes and provide the angle for each cell face relative to the assigned x direction. All included cells (IDOMAIN $>$ 0) must have a K22 value greater than zero. @@ -306,6 +310,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional true longname hydraulic conductivity of third ellipsoid axis (L/T) description is the hydraulic conductivity of the third ellipsoid axis (or the ratio of K33/K if the K33OVERK option is specified); for an unrotated case, this is the vertical hydraulic conductivity. When anisotropy is applied, K33 corresponds to the K33 tensor component. All included cells (IDOMAIN $>$ 0) must have a K33 value greater than zero. @@ -317,6 +322,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional true longname first anisotropy rotation angle (degrees) description is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the first of three sequential rotations of the hydraulic conductivity ellipsoid. With the K11, K22, and K33 axes of the ellipsoid initially aligned with the x, y, and z coordinate axes, respectively, ANGLE1 rotates the ellipsoid about its K33 axis (within the x - y plane). A positive value represents counter-clockwise rotation when viewed from any point on the positive K33 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K11 axis lies within the x - z plane. If ANGLE1 is not specified, default values of zero are assigned to ANGLE1, ANGLE2, and ANGLE3, in which case the K11, K22, and K33 axes are aligned with the x, y, and z axes, respectively. @@ -328,6 +334,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional true longname second anisotropy rotation angle (degrees) description is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the second of three sequential rotations of the hydraulic conductivity ellipsoid. Following the rotation by ANGLE1 described above, ANGLE2 rotates the ellipsoid about its K22 axis (out of the x - y plane). An array can be specified for ANGLE2 only if ANGLE1 is also specified. A positive value of ANGLE2 represents clockwise rotation when viewed from any point on the positive K22 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K11 axis lies within the x - y plane. If ANGLE2 is not specified, default values of zero are assigned to ANGLE2 and ANGLE3; connections that are not user-designated as vertical are assumed to be strictly horizontal (that is, to have no z component to their orientation); and connection lengths are based on horizontal distances. @@ -339,6 +346,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional true longname third anisotropy rotation angle (degrees) description is a rotation angle of the hydraulic conductivity tensor in degrees. The angle represents the third of three sequential rotations of the hydraulic conductivity ellipsoid. Following the rotations by ANGLE1 and ANGLE2 described above, ANGLE3 rotates the ellipsoid about its K11 axis. An array can be specified for ANGLE3 only if ANGLE1 and ANGLE2 are also specified. An array must be specified for ANGLE3 if ANGLE2 is specified. A positive value of ANGLE3 represents clockwise rotation when viewed from any point on the positive K11 axis, looking toward the center of the ellipsoid. A value of zero indicates that the K22 axis lies within the x - y plane. @@ -350,6 +358,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional true longname wetdry threshold and factor description is a combination of the wetting threshold and a flag to indicate which neighboring cells can cause a cell to become wet. If WETDRY $<$ 0, only a cell below a dry cell can cause the cell to become wet. If WETDRY $>$ 0, the cell below a dry cell and horizontally adjacent cells can cause a cell to become wet. If WETDRY is 0, the cell cannot be wetted. The absolute value of WETDRY is the wetting threshold. When the sum of BOT and the absolute value of WETDRY at a dry cell is equaled or exceeded by the head at an adjacent cell, the cell is wetted. WETDRY must be specified if ``REWET'' is specified in the OPTIONS block. If ``REWET'' is not specified in the options block, then WETDRY can be entered, and memory will be allocated for it, even though it is not used. diff --git a/doc/mf6io/mf6ivar/dfn/gwf-rcha.dfn b/doc/mf6io/mf6ivar/dfn/gwf-rcha.dfn index 1441a0988b9..dcdb6059619 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-rcha.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-rcha.dfn @@ -149,6 +149,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # --------------------- gwf rcha period --------------------- diff --git a/doc/mf6io/mf6ivar/dfn/gwf-sto.dfn b/doc/mf6io/mf6ivar/dfn/gwf-sto.dfn index a658947a03c..197805b9098 100644 --- a/doc/mf6io/mf6ivar/dfn/gwf-sto.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwf-sto.dfn @@ -86,6 +86,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # dev options block options @@ -115,6 +116,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional false longname convertible indicator description is a flag for each cell that specifies whether or not a cell is convertible for the storage calculation. 0 indicates confined storage is used. $>$0 indicates confined storage is used when head is above cell top and a mixed formulation of unconfined and confined storage is used when head is below cell top. @@ -127,6 +129,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional false longname specific storage description is specific storage (or the storage coefficient if STORAGECOEFFICIENT is specified as an option). Specific storage values must be greater than or equal to 0. If the CSUB Package is included in the GWF model, specific storage must be zero for every cell. @@ -139,6 +142,7 @@ shape (nodes) valid reader readarray layered true +netcdf true optional false longname specific yield description is specific yield. Specific yield values must be greater than or equal to 0. Specific yield does not have to be specified if there are no convertible cells (ICONVERT=0 in every cell). diff --git a/doc/mf6io/mf6ivar/dfn/gwt-dis.dfn b/doc/mf6io/mf6ivar/dfn/gwt-dis.dfn index a11f0ef487d..c19307cb826 100644 --- a/doc/mf6io/mf6ivar/dfn/gwt-dis.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwt-dis.dfn @@ -58,6 +58,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true block options name ncf_filerecord @@ -77,6 +78,7 @@ tagged true optional false longname ncf keyword description keyword to specify that record corresponds to a netcdf configuration (NCF) file. +extended true block options name filein @@ -98,6 +100,7 @@ optional false tagged false longname file name of NCF information description defines a netcdf configuration (NCF) input file. +extended true # --------------------- gwt dis dimensions --------------------- @@ -135,6 +138,7 @@ name delr type double precision shape (ncol) reader readarray +netcdf true longname spacing along a row description is the column spacing in the row direction. default_value 1.0 @@ -144,6 +148,7 @@ name delc type double precision shape (nrow) reader readarray +netcdf true longname spacing along a column description is the row spacing in the column direction. default_value 1.0 @@ -153,6 +158,7 @@ name top type double precision shape (ncol, nrow) reader readarray +netcdf true longname cell top elevation description is the top elevation for each cell in the top model layer. default_value 1.0 @@ -162,6 +168,7 @@ name botm type double precision shape (ncol, nrow, nlay) reader readarray +netcdf true layered true longname cell bottom elevation description is the bottom elevation for each cell. @@ -173,6 +180,7 @@ type integer shape (ncol, nrow, nlay) reader readarray layered true +netcdf 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/doc/mf6io/mf6ivar/dfn/gwt-disv.dfn b/doc/mf6io/mf6ivar/dfn/gwt-disv.dfn index 119f33bd133..dc9b8d0a035 100644 --- a/doc/mf6io/mf6ivar/dfn/gwt-disv.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwt-disv.dfn @@ -58,6 +58,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true block options name ncf_filerecord @@ -77,6 +78,7 @@ tagged true optional false longname ncf keyword description keyword to specify that record corresponds to a netcdf configuration (NCF) file. +extended true block options name filein @@ -98,6 +100,7 @@ optional false tagged false longname file name of NCF information description defines a netcdf configuration (NCF) input file. +extended true # --------------------- gwt disv dimensions --------------------- @@ -132,6 +135,7 @@ name top type double precision shape (ncpl) reader readarray +netcdf true longname model top elevation description is the top elevation for each cell in the top model layer. @@ -141,6 +145,7 @@ type double precision shape (ncpl, nlay) reader readarray layered true +netcdf true longname model bottom elevation description is the bottom elevation for each cell. @@ -150,6 +155,7 @@ type integer shape (ncpl, nlay) reader readarray layered true +netcdf 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/doc/mf6io/mf6ivar/dfn/gwt-dsp.dfn b/doc/mf6io/mf6ivar/dfn/gwt-dsp.dfn index 5412ca694c7..f4cf8a80e51 100644 --- a/doc/mf6io/mf6ivar/dfn/gwt-dsp.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwt-dsp.dfn @@ -35,6 +35,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # --------------------- gwt dsp griddata --------------------- @@ -44,6 +45,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf true optional true longname effective molecular diffusion coefficient description effective molecular diffusion coefficient. @@ -54,6 +56,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -64,6 +67,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -74,6 +78,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -84,6 +89,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. @@ -94,6 +100,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf 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. diff --git a/doc/mf6io/mf6ivar/dfn/gwt-ic.dfn b/doc/mf6io/mf6ivar/dfn/gwt-ic.dfn index d9c3a89225d..83165a79c1c 100644 --- a/doc/mf6io/mf6ivar/dfn/gwt-ic.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwt-ic.dfn @@ -17,6 +17,7 @@ optional true mf6internal export_nc longname export array variables to netcdf output files. description keyword that specifies input griddata arrays should be written to the model output netcdf file. +extended true # --------------------- gwt ic griddata --------------------- @@ -26,6 +27,7 @@ type double precision shape (nodes) reader readarray layered true +netcdf true longname starting concentration description is the initial (starting) concentration---that is, concentration at the beginning of the GWT Model simulation. STRT must be specified for all GWT Model simulations. One value is read for every model cell. default_value 0.0 diff --git a/doc/mf6io/mf6ivar/dfn/gwt-nam.dfn b/doc/mf6io/mf6ivar/dfn/gwt-nam.dfn index 9fd712fbf03..5c3aee0bc73 100644 --- a/doc/mf6io/mf6ivar/dfn/gwt-nam.dfn +++ b/doc/mf6io/mf6ivar/dfn/gwt-nam.dfn @@ -40,7 +40,8 @@ reader urword optional true mf6internal export_netcdf longname export model output netcdf file. -description keyword that specifies timeseries data for the dependent variable should be written to a model output netcdf file. No value or ``UGRID'' (ugrid based export) values are supported. +description keyword that specifies timeseries data for the dependent variable should be written to a model output netcdf file. ``STRUCTURED'' or ``MESH'' (ugrid based export) values are supported. +extended true block options name nc_filerecord @@ -49,7 +50,7 @@ reader urword tagged true optional true longname -description netcdf config filerecord +description netcdf filerecord block options name netcdf @@ -60,6 +61,7 @@ tagged true optional false longname netcdf keyword description keyword to specify that record corresponds to a netcdf input file. +extended true block options name filein @@ -82,6 +84,7 @@ tagged false longname netcdf input filename description defines a netcdf input file. mf6internal netcdf_fname +extended true # --------------------- gwt nam packages --------------------- diff --git a/doc/mf6io/mf6ivar/dfn/sim-nam.dfn b/doc/mf6io/mf6ivar/dfn/sim-nam.dfn index 9ba8b3e52e2..c22dbc7f1c9 100644 --- a/doc/mf6io/mf6ivar/dfn/sim-nam.dfn +++ b/doc/mf6io/mf6ivar/dfn/sim-nam.dfn @@ -61,6 +61,7 @@ tagged true optional false longname head keyword description keyword to specify that record corresponds to a hpc file. +extended true block options name filein @@ -83,6 +84,7 @@ optional false tagged false longname file name of time series information description name of input file to define HPC file settings for the HPC package. See the ``HPC File'' section for instructions for preparing HPC input files. +extended true # --------------------- sim nam timing --------------------- diff --git a/doc/mf6io/mf6ivar/dfn/utl-ncf.dfn b/doc/mf6io/mf6ivar/dfn/utl-ncf.dfn index 6c28035503e..68694fda43a 100644 --- a/doc/mf6io/mf6ivar/dfn/utl-ncf.dfn +++ b/doc/mf6io/mf6ivar/dfn/utl-ncf.dfn @@ -18,7 +18,7 @@ type integer reader urword optional true longname variable compression deflate level -description is the deflate level (0=min, 9=max) for per variable compression in the netcdf file. Defining the parameter activates per variable compression in the export file at the level specified. +description is the variable deflate level (0=min, 9=max) in the netcdf file. Defining this parameter activates per-variable compression at the level specified. block options name shuffle @@ -42,8 +42,8 @@ type keyword in_record true reader urword optional false -longname keyword when defining ugrid chunking parameters -description is a keyword for providing netcdf export chunk sizes. Chunking can dramatically impact data access times and is optimal chunking is highly dependent on access patterns (timeseries vs spatial, for example). It can also significanlty impact compressibility of the data. A valid input record specifies chunk_time and either chunk_face (UGRID) or chunk_z, chunk_y, and chunk_x (STRUCTURED). +longname keyword when defining chunking parameters +description is a keyword for providing netcdf export chunk sizes. Chunking can dramatically impact data access times and optimal chunking is highly dependent on access patterns (timeseries vs spatial, for example). It can also significantly impact compressibility of the data. A valid input record specifies chunk\_time and either chunk\_face (MESH) or chunk\_z, chunk\_y, and chunk\_x (STRUCTURED). block options name chunk_time @@ -60,8 +60,8 @@ type integer in_record true reader urword optional true -longname chunking parameter for the ugrid face dimension -description is the keyword used to provide a ugrid face dimension chunk size. +longname chunking parameter for the mesh face dimension +description is the keyword used to provide a mesh face dimension chunk size. block options name chunk_z @@ -96,7 +96,7 @@ type keyword reader urword optional true longname -description is the keyword used to turn off internal input tagging in the model netcdf file. Tagging adds internal modflow 6 attribute(s) to input variables which identify the variable. Currently this applies to gridded arrays. +description is the keyword used to turn off internal input tagging in the model netcdf file. Tagging adds internal modflow 6 attribute(s) to variables which facilitate identification. Currently this applies to gridded arrays. mf6internal attr_off # --------------------- utl ncf dimensions --------------------- diff --git a/doc/mf6io/mf6ivar/examples/netcdf-ic-example.dat b/doc/mf6io/mf6ivar/examples/netcdf-ic-example.dat new file mode 100644 index 00000000000..aa690cae97a --- /dev/null +++ b/doc/mf6io/mf6ivar/examples/netcdf-ic-example.dat @@ -0,0 +1,7 @@ +# GWF Model IC Input +BEGIN options +END options + +BEGIN griddata + strt NETCDF # read STRT from the model NetCDF input +END griddata diff --git a/doc/mf6io/mf6ivar/examples/netcdf-nam-example.dat b/doc/mf6io/mf6ivar/examples/netcdf-nam-example.dat new file mode 100644 index 00000000000..9fc30a34bec --- /dev/null +++ b/doc/mf6io/mf6ivar/examples/netcdf-nam-example.dat @@ -0,0 +1,12 @@ +# GWF Model input name file +BEGIN options + EXPORT_NETCDF MESH # configure mesh type model NetCDF timeseries export + NETCDF FILEIN gwf.in.nc # configure model NetCDF griddata input file +END options + +BEGIN packages + DISV6 gwf.disv disv + IC6 gwf.ic ic + NPF6 gwf.npf npf + CHD6 gwf.chd chd_0 +END packages diff --git a/doc/mf6io/mf6ivar/examples/netcdf-npf-example.dat b/doc/mf6io/mf6ivar/examples/netcdf-npf-example.dat new file mode 100644 index 00000000000..818ad8af90b --- /dev/null +++ b/doc/mf6io/mf6ivar/examples/netcdf-npf-example.dat @@ -0,0 +1,8 @@ +# GWF Model NPF input +BEGIN options +END options + +BEGIN griddata + icelltype NETCDF # read ICELLTYPE from the model NetCDF input + k NETCDF # read K from the model NetCDF input +END griddata diff --git a/doc/mf6io/mf6ivar/examples/utl-ncf-example.dat b/doc/mf6io/mf6ivar/examples/utl-ncf-example.dat new file mode 100644 index 00000000000..926069d7e9c --- /dev/null +++ b/doc/mf6io/mf6ivar/examples/utl-ncf-example.dat @@ -0,0 +1,9 @@ +BEGIN OPTIONS + DEFLATE 5 + SHUFFLE + CHUNKING UGC_TIME 10 UGC_FACE 19690 + OGC_WKT 'PROJCS["NAD_1983_UTM_Zone_14N",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID[" +GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transver +se_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-99. +0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]' +END OPTIONS diff --git a/doc/mf6io/mf6ivar/mf6ivar.py b/doc/mf6io/mf6ivar/mf6ivar.py index f6d64558ec8..e8114126c3a 100644 --- a/doc/mf6io/mf6ivar/mf6ivar.py +++ b/doc/mf6io/mf6ivar/mf6ivar.py @@ -225,6 +225,13 @@ def block_entry(varname, block, vardict, prefix=" "): if "time_series" in v: if v["time_series"] == "true": tsmarker = "@" + extmarker = "" + if "extended" in v: + if v["extended"] == "true": + extmarker = "$" + if "netcdf" in v: + if v["netcdf"] == "true": + extmarker = "$" # check valid type vtype = v["type"] @@ -246,7 +253,7 @@ def block_entry(varname, block, vardict, prefix=" "): s = s.strip() s = f"{s}\n{prefix}{s}\n{prefix}..." - # layered + # layered and netcdf elif v["reader"] in ["readarray", "u1ddbl", "u2ddbl", "u1dint"]: shape = v["shape"] reader = v["reader"].upper() @@ -254,15 +261,29 @@ def block_entry(varname, block, vardict, prefix=" "): if "layered" in v: if v["layered"] == "true": layered = " [LAYERED]" + if "netcdf" in v: + if v["netcdf"] == "true": + layered = layered + f" {extmarker}[NETCDF]{extmarker}" s = f"{s}{layered}\n{prefix}{prefix}<{varname}{shape}> -- {reader}" - # keyword - elif v["type"] != "keyword": + # timeseries, extended color annotation + else: vtmp = varname - if "shape" in v: - shape = v["shape"] - vtmp += shape - s = f"{s} <{tsmarker}{vtmp}{tsmarker}>" + if tsmarker != "" and v["type"] != "keyword": + if "shape" in v: + shape = v["shape"] + vtmp += shape + s = f"{s} <{tsmarker}{vtmp}{tsmarker}>" + elif extmarker != "": + if v["type"] != "keyword": + if "shape" in v: + shape = v["shape"] + vtmp += shape + s = f"{extmarker}{s}{extmarker} <{extmarker}{vtmp}{extmarker}>" + else: + s = f"{extmarker}{s}{extmarker}" + elif v["type"] != "keyword": + s = f"{s} <{vtmp}>" # if optional, wrap string in square brackets if "optional" in v: @@ -381,6 +402,10 @@ def write_desc(vardict, block, blk_var_list, varexcludeprefix=None): fmt = "\\textcolor{blue}\{\}" ss = "\\textcolor{blue}{" + ss + "}" # \textcolor{declared-color}{text} + if "extended" in v: + if v["extended"] == "true": + fmt = "\\textcolor{red}\{\}" + ss = "\\textcolor{red}{" + ss + "}" s += "\\item " + ss + "\n\n" t = v["type"] @@ -441,6 +466,9 @@ def write_desc_md(vardict, block, blk_var_list, varexcludeprefix=None): if "time_series" in v: if v["time_series"] == "true": ss = '' + ss + "" + if "extended" in v: + if v["extended"] == "true": + ss = '' + ss + "" s += " * " + ss + "\n\n" t = v["type"] diff --git a/doc/mf6io/netcdf_input.tex b/doc/mf6io/netcdf_input.tex new file mode 100644 index 00000000000..b50b048ee65 --- /dev/null +++ b/doc/mf6io/netcdf_input.tex @@ -0,0 +1,4 @@ +\lstinputlisting[style=inputfile]{./mf6ivar/examples/netcdf-nam-example.dat} +\lstinputlisting[style=inputfile]{./mf6ivar/examples/netcdf-ic-example.dat} +\lstinputlisting[style=inputfile]{./mf6ivar/examples/netcdf-npf-example.dat} +The above name file configures a NetCDF model input file, using the ”NETCDF FILEIN” keyword set, which contains IC and NPF package griddata arrays. The model IC and NPF inputs below the name file indicate that the STRT, ICELLTYPE and K parameters should be read from the configured model NetCDF input by using the ”NETCDF” keyword after each griddata block parameter name. Note also in this example that EXPORT\_NETCDF is configured, which will generate a timeseries export of the model dependent variable over the course of the simulation run. diff --git a/doc/mf6io/utl_ncf.tex b/doc/mf6io/utl_ncf.tex new file mode 100644 index 00000000000..953bf42c00f --- /dev/null +++ b/doc/mf6io/utl_ncf.tex @@ -0,0 +1,18 @@ +The NetCDF configuration (NCF) utility can be activated by specifying the NCF6 option in a DIS or DISV input file. + +The netcdf configuration utility applies to model NetCDF exports that are elected with the EXPORT\_NETCDF keyword in a model name file. The EXPORT\_NETCDF keyword can be used whether or not this configuration package is defined. When defined, this package provides options related to data variable chunking, compression and grid mapping (projections). + +\subsection{Structure of Blocks} +\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/utl-ncf-options.dat} +\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/utl-ncf-dimensions.dat} +\lstinputlisting[style=blockdefinition]{./mf6ivar/tex/utl-ncf-griddata.dat} +\vspace{5mm} + +\subsection{Explanation of Variables} +\begin{description} +\input{./mf6ivar/tex/utl-ncf-desc.tex} +\end{description} +\vspace{5mm} + +\subsection{Example Input File} +\lstinputlisting[style=inputfile]{./mf6ivar/examples/utl-ncf-example.dat}