diff --git a/flopy4/array.py b/flopy4/array.py index d6ffc59..9815269 100644 --- a/flopy4/array.py +++ b/flopy4/array.py @@ -460,7 +460,13 @@ def load(cls, f, cwd, shape, header=True, **kwargs): elif "disv" in mempath.split("/"): nlay = params.get("dimensions").get("nlay") ncpl = params.get("dimensions").get("ncpl") - shape = (nlay, ncpl) + nvert = params.get("dimensions").get("nvert") + if shape == "(ncpl)": + shape = ncpl + elif shape == "(ncpl, nlay)": + shape = (nlay, ncpl) + elif shape == "(nvert)": + shape = nvert elif "disu" in mempath.split("/"): nodes = params.get("dimensions").get("nodes") nja = params.get("dimensions").get("nja") diff --git a/flopy4/compound.py b/flopy4/compound.py index 05735f2..e2760f9 100644 --- a/flopy4/compound.py +++ b/flopy4/compound.py @@ -343,6 +343,7 @@ def load(cls, f, **kwargs) -> "MFList": kwargs.pop("mname", None) kwargs.pop("shape", None) # e.g. maxbound + jidx = -1 param_lists = [] param_cols = [] param_types = [] @@ -353,18 +354,26 @@ def load(cls, f, **kwargs) -> "MFList": # "boundames and auxvars not yet supported in period blocks" # ) pcols = 0 - if params[k].shape is None or params[k].shape == "": + if ( + params[k].shape is None + or params[k].shape == "" + or params[k].shape == "(:)" + ): pcols = 1 elif params[k].shape == "(ncelldim)": - if model_shape: - pcols = len(model_shape) - else: - raise ValueError("model_shape not set") + assert model_shape + pcols = len(model_shape) + elif params[k].shape == "(ncvert)": + # param_cols will be updated each line + jidx = len(param_cols) - 1 else: - pcols = len(params[k].shape.split(",")) + raise ValueError( + "MFList param {params[k].name} has " + "unsupported shape {params[k].shape}" + ) param_cols.append(pcols) - param_lists.append(list()) param_types.append(params[k].type) + param_lists.append(list()) if list(params.items())[-1][1].shape == "(:)": maxsplit = sum(param_cols) - 1 @@ -381,6 +390,8 @@ def load(cls, f, **kwargs) -> "MFList": break else: tokens = strip(line).split(maxsplit=maxsplit) + if jidx >= 0: + param_cols[jidx + 1] = int(tokens[jidx]) assert len(tokens) == sum(param_cols) icol = 0 for i in range(len(param_types)): diff --git a/flopy4/ispec/gwe_disv.py b/flopy4/ispec/gwe_disv.py new file mode 100644 index 0000000..aed48ca --- /dev/null +++ b/flopy4/ispec/gwe_disv.py @@ -0,0 +1,386 @@ +# generated file +from flopy4.array import MFArray +from flopy4.compound import MFRecord, MFList +from flopy4.package import MFPackage +from flopy4.scalar import MFDouble, MFFilename, MFInteger, MFKeyword, MFString + + +class GweDisv(MFPackage): + multipkg = False + stress = False + advanced = False + + length_units = MFString( + type = "string", + block = "options", + shape = "", + 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''.""", + ) + + nogrb = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""do not write binary grid file""", + description = +"""keyword to deactivate writing of the binary grid file.""", + ) + + xorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + yorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + angrot = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + export_array_ascii = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to layered ascii files.""", + description = +"""keyword that specifies input griddata arrays should be written to +layered ascii output files.""", + ) + + export_array_netcdf = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to netcdf output files.""", + description = +"""keyword that specifies input griddata arrays should be written to the +model output netcdf file.""", + ) + + ncf_filerecord = MFRecord( + type = "record", + params = { + "ncf6": MFKeyword(), + "filein": MFKeyword(), + "ncf6_filename": MFString(), + }, + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""""", + description = +"""""", + ) + + ncf6 = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""ncf keyword""", + description = +"""keyword to specify that record corresponds to a netcdf configuration +(NCF) file.""", + ) + + filein = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file keyword""", + description = +"""keyword to specify that an input filename is expected next.""", + ) + + ncf6_filename = MFString( + type = "string", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file name of NCF information""", + description = +"""defines a netcdf configuration (NCF) input file.""", + ) + + nlay = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + reader = "urword", + optional = False, + longname = +"""number of layers""", + description = +"""is the number of layers in the model grid.""", + ) + + ncpl = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + nvert = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + top = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl)", + reader = "readarray", + optional = False, + longname = +"""model top elevation""", + description = +"""is the top elevation for each cell in the top model layer.""", + ) + + botm = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + optional = False, + longname = +"""model bottom elevation""", + description = +"""is the bottom elevation for each cell.""", + ) + + idomain = MFArray( + type = "integer", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + 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.""", + ) + + iv = MFInteger( + type = "integer", + block = "vertices", + shape = "", + 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.""", + ) + + xv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for vertex""", + description = +"""is the x-coordinate for the vertex.""", + ) + + yv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for vertex""", + description = +"""is the y-coordinate for the vertex.""", + ) + + vertices = MFList( + type = "recarray", + params = { + "iv": iv, + "xv": xv, + "yv": yv, + }, + block = "vertices", + shape = "(nvert)", + reader = "urword", + optional = False, + longname = +"""vertices data""", + description = +"""""", + ) + + icell2d = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + xc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for cell center""", + description = +"""is the x-coordinate for the cell center.""", + ) + + yc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for cell center""", + description = +"""is the y-coordinate for the cell center.""", + ) + + ncvert = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + icvert = MFArray( + type = "integer", + block = "cell2d", + shape = "(ncvert)", + 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.""", + ) + + cell2d = MFList( + type = "recarray", + params = { + "icell2d": icell2d, + "xc": xc, + "yc": yc, + "ncvert": ncvert, + "icvert": icvert, + }, + block = "cell2d", + shape = "(ncpl)", + reader = "urword", + optional = False, + longname = +"""cell2d data""", + description = +"""""", + ) \ No newline at end of file diff --git a/flopy4/ispec/gwe_model.py b/flopy4/ispec/gwe_model.py index 09dc6c2..a248880 100644 --- a/flopy4/ispec/gwe_model.py +++ b/flopy4/ispec/gwe_model.py @@ -3,8 +3,10 @@ from flopy4.resolver import Resolve from flopy4.ispec.gwe_dis import GweDis from flopy4.ispec.gwe_disu import GweDisu +from flopy4.ispec.gwe_disv import GweDisv class GweModel(MFModel, Resolve): dis6 = GweDis() disu6 = GweDisu() + disv6 = GweDisv() diff --git a/flopy4/ispec/gwf_disv.py b/flopy4/ispec/gwf_disv.py new file mode 100644 index 0000000..142e555 --- /dev/null +++ b/flopy4/ispec/gwf_disv.py @@ -0,0 +1,386 @@ +# generated file +from flopy4.array import MFArray +from flopy4.compound import MFRecord, MFList +from flopy4.package import MFPackage +from flopy4.scalar import MFDouble, MFFilename, MFInteger, MFKeyword, MFString + + +class GwfDisv(MFPackage): + multipkg = False + stress = False + advanced = False + + length_units = MFString( + type = "string", + block = "options", + shape = "", + 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''.""", + ) + + nogrb = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""do not write binary grid file""", + description = +"""keyword to deactivate writing of the binary grid file.""", + ) + + xorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + yorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + angrot = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + export_array_ascii = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to layered ascii files.""", + description = +"""keyword that specifies input griddata arrays should be written to +layered ascii output files.""", + ) + + export_array_netcdf = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to netcdf output files.""", + description = +"""keyword that specifies input griddata arrays should be written to the +model output netcdf file.""", + ) + + ncf_filerecord = MFRecord( + type = "record", + params = { + "ncf6": MFKeyword(), + "filein": MFKeyword(), + "ncf6_filename": MFString(), + }, + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""""", + description = +"""""", + ) + + ncf6 = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""ncf keyword""", + description = +"""keyword to specify that record corresponds to a netcdf configuration +(NCF) file.""", + ) + + filein = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file keyword""", + description = +"""keyword to specify that an input filename is expected next.""", + ) + + ncf6_filename = MFString( + type = "string", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file name of NCF information""", + description = +"""defines a netcdf configuration (NCF) input file.""", + ) + + nlay = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + reader = "urword", + optional = False, + longname = +"""number of layers""", + description = +"""is the number of layers in the model grid.""", + ) + + ncpl = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + nvert = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + top = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl)", + reader = "readarray", + optional = False, + longname = +"""model top elevation""", + description = +"""is the top elevation for each cell in the top model layer.""", + ) + + botm = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + optional = False, + longname = +"""model bottom elevation""", + description = +"""is the bottom elevation for each cell.""", + ) + + idomain = MFArray( + type = "integer", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + 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.""", + ) + + iv = MFInteger( + type = "integer", + block = "vertices", + shape = "", + 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.""", + ) + + xv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for vertex""", + description = +"""is the x-coordinate for the vertex.""", + ) + + yv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for vertex""", + description = +"""is the y-coordinate for the vertex.""", + ) + + vertices = MFList( + type = "recarray", + params = { + "iv": iv, + "xv": xv, + "yv": yv, + }, + block = "vertices", + shape = "(nvert)", + reader = "urword", + optional = False, + longname = +"""vertices data""", + description = +"""""", + ) + + icell2d = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + xc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for cell center""", + description = +"""is the x-coordinate for the cell center.""", + ) + + yc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for cell center""", + description = +"""is the y-coordinate for the cell center.""", + ) + + ncvert = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + icvert = MFArray( + type = "integer", + block = "cell2d", + shape = "(ncvert)", + 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.""", + ) + + cell2d = MFList( + type = "recarray", + params = { + "icell2d": icell2d, + "xc": xc, + "yc": yc, + "ncvert": ncvert, + "icvert": icvert, + }, + block = "cell2d", + shape = "(ncpl)", + reader = "urword", + optional = False, + longname = +"""cell2d data""", + description = +"""""", + ) \ No newline at end of file diff --git a/flopy4/ispec/gwf_model.py b/flopy4/ispec/gwf_model.py index 0158a00..62af6c8 100644 --- a/flopy4/ispec/gwf_model.py +++ b/flopy4/ispec/gwf_model.py @@ -4,6 +4,7 @@ from flopy4.ispec.gwf_chd import GwfChd from flopy4.ispec.gwf_dis import GwfDis from flopy4.ispec.gwf_disu import GwfDisu +from flopy4.ispec.gwf_disv import GwfDisv from flopy4.ispec.gwf_ic import GwfIc from flopy4.ispec.gwf_nam import GwfNam from flopy4.ispec.gwf_npf import GwfNpf @@ -13,6 +14,7 @@ class GwfModel(MFModel, Resolve): chd6 = GwfChd() dis6 = GwfDis() disu6 = GwfDisu() + disv6 = GwfDisv() ic6 = GwfIc() nam6 = GwfNam() npf6 = GwfNpf() diff --git a/flopy4/ispec/gwt_disv.py b/flopy4/ispec/gwt_disv.py new file mode 100644 index 0000000..c8b5e07 --- /dev/null +++ b/flopy4/ispec/gwt_disv.py @@ -0,0 +1,386 @@ +# generated file +from flopy4.array import MFArray +from flopy4.compound import MFRecord, MFList +from flopy4.package import MFPackage +from flopy4.scalar import MFDouble, MFFilename, MFInteger, MFKeyword, MFString + + +class GwtDisv(MFPackage): + multipkg = False + stress = False + advanced = False + + length_units = MFString( + type = "string", + block = "options", + shape = "", + 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''.""", + ) + + nogrb = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""do not write binary grid file""", + description = +"""keyword to deactivate writing of the binary grid file.""", + ) + + xorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + yorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + angrot = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + export_array_ascii = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to layered ascii files.""", + description = +"""keyword that specifies input griddata arrays should be written to +layered ascii output files.""", + ) + + export_array_netcdf = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to netcdf output files.""", + description = +"""keyword that specifies input griddata arrays should be written to the +model output netcdf file.""", + ) + + ncf_filerecord = MFRecord( + type = "record", + params = { + "ncf6": MFKeyword(), + "filein": MFKeyword(), + "ncf6_filename": MFString(), + }, + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""""", + description = +"""""", + ) + + ncf6 = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""ncf keyword""", + description = +"""keyword to specify that record corresponds to a netcdf configuration +(NCF) file.""", + ) + + filein = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file keyword""", + description = +"""keyword to specify that an input filename is expected next.""", + ) + + ncf6_filename = MFString( + type = "string", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file name of NCF information""", + description = +"""defines a netcdf configuration (NCF) input file.""", + ) + + nlay = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + reader = "urword", + optional = False, + longname = +"""number of layers""", + description = +"""is the number of layers in the model grid.""", + ) + + ncpl = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + nvert = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + top = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl)", + reader = "readarray", + optional = False, + longname = +"""model top elevation""", + description = +"""is the top elevation for each cell in the top model layer.""", + ) + + botm = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + optional = False, + longname = +"""model bottom elevation""", + description = +"""is the bottom elevation for each cell.""", + ) + + idomain = MFArray( + type = "integer", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + 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.""", + ) + + iv = MFInteger( + type = "integer", + block = "vertices", + shape = "", + 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.""", + ) + + xv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for vertex""", + description = +"""is the x-coordinate for the vertex.""", + ) + + yv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for vertex""", + description = +"""is the y-coordinate for the vertex.""", + ) + + vertices = MFList( + type = "recarray", + params = { + "iv": iv, + "xv": xv, + "yv": yv, + }, + block = "vertices", + shape = "(nvert)", + reader = "urword", + optional = False, + longname = +"""vertices data""", + description = +"""""", + ) + + icell2d = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + xc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for cell center""", + description = +"""is the x-coordinate for the cell center.""", + ) + + yc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for cell center""", + description = +"""is the y-coordinate for the cell center.""", + ) + + ncvert = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + icvert = MFArray( + type = "integer", + block = "cell2d", + shape = "(ncvert)", + 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.""", + ) + + cell2d = MFList( + type = "recarray", + params = { + "icell2d": icell2d, + "xc": xc, + "yc": yc, + "ncvert": ncvert, + "icvert": icvert, + }, + block = "cell2d", + shape = "(ncpl)", + reader = "urword", + optional = False, + longname = +"""cell2d data""", + description = +"""""", + ) \ No newline at end of file diff --git a/flopy4/ispec/gwt_model.py b/flopy4/ispec/gwt_model.py index a01a9cc..d2293dd 100644 --- a/flopy4/ispec/gwt_model.py +++ b/flopy4/ispec/gwt_model.py @@ -3,8 +3,10 @@ from flopy4.resolver import Resolve from flopy4.ispec.gwt_dis import GwtDis from flopy4.ispec.gwt_disu import GwtDisu +from flopy4.ispec.gwt_disv import GwtDisv class GwtModel(MFModel, Resolve): dis6 = GwtDis() disu6 = GwtDisu() + disv6 = GwtDisv() diff --git a/flopy4/ispec/prt_disv.py b/flopy4/ispec/prt_disv.py new file mode 100644 index 0000000..f1343e4 --- /dev/null +++ b/flopy4/ispec/prt_disv.py @@ -0,0 +1,386 @@ +# generated file +from flopy4.array import MFArray +from flopy4.compound import MFRecord, MFList +from flopy4.package import MFPackage +from flopy4.scalar import MFDouble, MFFilename, MFInteger, MFKeyword, MFString + + +class PrtDisv(MFPackage): + multipkg = False + stress = False + advanced = False + + length_units = MFString( + type = "string", + block = "options", + shape = "", + 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''.""", + ) + + nogrb = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""do not write binary grid file""", + description = +"""keyword to deactivate writing of the binary grid file.""", + ) + + xorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + yorigin = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + angrot = MFDouble( + type = "double", + block = "options", + shape = "", + 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.""", + ) + + export_array_ascii = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to layered ascii files.""", + description = +"""keyword that specifies input griddata arrays should be written to +layered ascii output files.""", + ) + + export_array_netcdf = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""export array variables to netcdf output files.""", + description = +"""keyword that specifies input griddata arrays should be written to the +model output netcdf file.""", + ) + + ncf_filerecord = MFRecord( + type = "record", + params = { + "ncf6": MFKeyword(), + "filein": MFKeyword(), + "ncf6_filename": MFString(), + }, + block = "options", + shape = "", + reader = "urword", + optional = True, + longname = +"""""", + description = +"""""", + ) + + ncf6 = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""ncf keyword""", + description = +"""keyword to specify that record corresponds to a netcdf configuration +(NCF) file.""", + ) + + filein = MFKeyword( + type = "keyword", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file keyword""", + description = +"""keyword to specify that an input filename is expected next.""", + ) + + ncf6_filename = MFString( + type = "string", + block = "options", + shape = "", + reader = "urword", + optional = False, + longname = +"""file name of NCF information""", + description = +"""defines a netcdf configuration (NCF) input file.""", + ) + + nlay = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + reader = "urword", + optional = False, + longname = +"""number of layers""", + description = +"""is the number of layers in the model grid.""", + ) + + ncpl = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + nvert = MFInteger( + type = "integer", + block = "dimensions", + shape = "", + 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.""", + ) + + top = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl)", + reader = "readarray", + optional = False, + longname = +"""model top elevation""", + description = +"""is the top elevation for each cell in the top model layer.""", + ) + + botm = MFArray( + type = "double", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + optional = False, + longname = +"""model bottom elevation""", + description = +"""is the bottom elevation for each cell.""", + ) + + idomain = MFArray( + type = "integer", + block = "griddata", + shape = "(ncpl, nlay)", + reader = "readarray", + 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.""", + ) + + iv = MFInteger( + type = "integer", + block = "vertices", + shape = "", + 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.""", + ) + + xv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for vertex""", + description = +"""is the x-coordinate for the vertex.""", + ) + + yv = MFDouble( + type = "double", + block = "vertices", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for vertex""", + description = +"""is the y-coordinate for the vertex.""", + ) + + vertices = MFList( + type = "recarray", + params = { + "iv": iv, + "xv": xv, + "yv": yv, + }, + block = "vertices", + shape = "(nvert)", + reader = "urword", + optional = False, + longname = +"""vertices data""", + description = +"""""", + ) + + icell2d = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + xc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""x-coordinate for cell center""", + description = +"""is the x-coordinate for the cell center.""", + ) + + yc = MFDouble( + type = "double", + block = "cell2d", + shape = "", + reader = "urword", + optional = False, + longname = +"""y-coordinate for cell center""", + description = +"""is the y-coordinate for the cell center.""", + ) + + ncvert = MFInteger( + type = "integer", + block = "cell2d", + shape = "", + 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.""", + ) + + icvert = MFArray( + type = "integer", + block = "cell2d", + shape = "(ncvert)", + 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.""", + ) + + cell2d = MFList( + type = "recarray", + params = { + "icell2d": icell2d, + "xc": xc, + "yc": yc, + "ncvert": ncvert, + "icvert": icvert, + }, + block = "cell2d", + shape = "(ncpl)", + reader = "urword", + optional = False, + longname = +"""cell2d data""", + description = +"""""", + ) \ No newline at end of file diff --git a/flopy4/ispec/prt_model.py b/flopy4/ispec/prt_model.py index cc4454b..f332225 100644 --- a/flopy4/ispec/prt_model.py +++ b/flopy4/ispec/prt_model.py @@ -2,9 +2,11 @@ from flopy4.model import MFModel from flopy4.resolver import Resolve from flopy4.ispec.prt_dis import PrtDis +from flopy4.ispec.prt_disv import PrtDisv from flopy4.ispec.prt_prp import PrtPrp class PrtModel(MFModel, Resolve): dis6 = PrtDis() + disv6 = PrtDisv() prp6 = PrtPrp() diff --git a/spec/dfn/gwe-disv.dfn b/spec/dfn/gwe-disv.dfn new file mode 100644 index 0000000..9216bb2 --- /dev/null +++ b/spec/dfn/gwe-disv.dfn @@ -0,0 +1,263 @@ +# --------------------- gwe disv options --------------------- +# mf6 subpackage utl-ncf + +block options +name length_units +type string +reader urword +optional true +longname model length units +description is the length units used for this model. Values can be ``FEET'', ``METERS'', or ``CENTIMETERS''. If not specified, the default is ``UNKNOWN''. + +block options +name nogrb +type keyword +reader urword +optional true +longname do not write binary grid file +description keyword to deactivate writing of the binary grid file. + +block options +name xorigin +type double precision +reader urword +optional true +longname x-position origin of the model grid coordinate system +description x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name yorigin +type double precision +reader urword +optional true +longname y-position origin of the model grid coordinate system +description y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name angrot +type double precision +reader urword +optional true +longname rotation angle +description counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +block options +name export_array_netcdf +type keyword +reader urword +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. + +block options +name ncf_filerecord +type record ncf6 filein ncf6_filename +reader urword +tagged true +optional true +longname +description + +block options +name ncf6 +type keyword +in_record true +reader urword +tagged true +optional false +longname ncf keyword +description keyword to specify that record corresponds to a netcdf configuration (NCF) file. + +block options +name filein +type keyword +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 ncf6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of NCF information +description defines a netcdf configuration (NCF) input file. + +# --------------------- 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/spec/dfn/gwf-disv.dfn b/spec/dfn/gwf-disv.dfn new file mode 100644 index 0000000..fe3a70d --- /dev/null +++ b/spec/dfn/gwf-disv.dfn @@ -0,0 +1,263 @@ +# --------------------- gwf disv options --------------------- +# mf6 subpackage utl-ncf + +block options +name length_units +type string +reader urword +optional true +longname model length units +description is the length units used for this model. Values can be ``FEET'', ``METERS'', or ``CENTIMETERS''. If not specified, the default is ``UNKNOWN''. + +block options +name nogrb +type keyword +reader urword +optional true +longname do not write binary grid file +description keyword to deactivate writing of the binary grid file. + +block options +name xorigin +type double precision +reader urword +optional true +longname x-position origin of the model grid coordinate system +description x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name yorigin +type double precision +reader urword +optional true +longname y-position origin of the model grid coordinate system +description y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name angrot +type double precision +reader urword +optional true +longname rotation angle +description counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +block options +name export_array_netcdf +type keyword +reader urword +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. + +block options +name ncf_filerecord +type record ncf6 filein ncf6_filename +reader urword +tagged true +optional true +longname +description + +block options +name ncf6 +type keyword +in_record true +reader urword +tagged true +optional false +longname ncf keyword +description keyword to specify that record corresponds to a netcdf configuration (NCF) file. + +block options +name filein +type keyword +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 ncf6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of NCF information +description defines a netcdf configuration (NCF) input file. + +# --------------------- gwf 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. + +# --------------------- gwf 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 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. + + +# --------------------- gwf 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. + + +# --------------------- gwf 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/spec/dfn/gwt-disv.dfn b/spec/dfn/gwt-disv.dfn new file mode 100644 index 0000000..119f33b --- /dev/null +++ b/spec/dfn/gwt-disv.dfn @@ -0,0 +1,263 @@ +# --------------------- gwt disv options --------------------- +# mf6 subpackage utl-ncf + +block options +name length_units +type string +reader urword +optional true +longname model length units +description is the length units used for this model. Values can be ``FEET'', ``METERS'', or ``CENTIMETERS''. If not specified, the default is ``UNKNOWN''. + +block options +name nogrb +type keyword +reader urword +optional true +longname do not write binary grid file +description keyword to deactivate writing of the binary grid file. + +block options +name xorigin +type double precision +reader urword +optional true +longname x-position origin of the model grid coordinate system +description x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name yorigin +type double precision +reader urword +optional true +longname y-position origin of the model grid coordinate system +description y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name angrot +type double precision +reader urword +optional true +longname rotation angle +description counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +block options +name export_array_netcdf +type keyword +reader urword +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. + +block options +name ncf_filerecord +type record ncf6 filein ncf6_filename +reader urword +tagged true +optional true +longname +description + +block options +name ncf6 +type keyword +in_record true +reader urword +tagged true +optional false +longname ncf keyword +description keyword to specify that record corresponds to a netcdf configuration (NCF) file. + +block options +name filein +type keyword +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 ncf6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of NCF information +description defines a netcdf configuration (NCF) input file. + +# --------------------- gwt 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. + +# --------------------- gwt 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. + + +# --------------------- gwt 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. + + +# --------------------- gwt 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/spec/dfn/prt-disv.dfn b/spec/dfn/prt-disv.dfn new file mode 100644 index 0000000..540d70a --- /dev/null +++ b/spec/dfn/prt-disv.dfn @@ -0,0 +1,262 @@ +# --------------------- prt disv options --------------------- + +block options +name length_units +type string +reader urword +optional true +longname model length units +description is the length units used for this model. Values can be ``FEET'', ``METERS'', or ``CENTIMETERS''. If not specified, the default is ``UNKNOWN''. + +block options +name nogrb +type keyword +reader urword +optional true +longname do not write binary grid file +description keyword to deactivate writing of the binary grid file. + +block options +name xorigin +type double precision +reader urword +optional true +longname x-position origin of the model grid coordinate system +description x-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. A default value of zero is assigned if not specified. The value for XORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name yorigin +type double precision +reader urword +optional true +longname y-position origin of the model grid coordinate system +description y-position of the origin used for model grid vertices. This value should be provided in a real-world coordinate system. If not specified, then a default value equal to zero is used. The value for YORIGIN does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name angrot +type double precision +reader urword +optional true +longname rotation angle +description counter-clockwise rotation angle (in degrees) of the model grid coordinate system relative to a real-world coordinate system. If not specified, then a default value of 0.0 is assigned. The value for ANGROT does not affect the model simulation, but it is written to the binary grid file so that postprocessors can locate the grid in space. + +block options +name export_array_ascii +type keyword +reader urword +optional true +mf6internal export_ascii +longname export array variables to layered ascii files. +description keyword that specifies input griddata arrays should be written to layered ascii output files. + +block options +name export_array_netcdf +type keyword +reader urword +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. + +block options +name ncf_filerecord +type record ncf6 filein ncf6_filename +reader urword +tagged true +optional true +longname +description + +block options +name ncf6 +type keyword +in_record true +reader urword +tagged true +optional false +longname ncf keyword +description keyword to specify that record corresponds to a netcdf configuration (NCF) file. + +block options +name filein +type keyword +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 ncf6_filename +type string +preserve_case true +in_record true +reader urword +optional false +tagged false +longname file name of NCF information +description defines a netcdf configuration (NCF) input file. + +# --------------------- prt 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. + +# --------------------- prt 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. + + +# --------------------- prt 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. + + +# --------------------- prt 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/spec/make_ispec.py b/spec/make_ispec.py index dd438e4..2476a5c 100644 --- a/spec/make_ispec.py +++ b/spec/make_ispec.py @@ -82,7 +82,7 @@ def __init__( typelist.clear() break else: - raise ValueError(f"Cannot add record type => {t}") + raise ValueError(f"Cannot add record type => {ptype}") if ptype.startswith("record"): tin["block"][b][blkparam]["rectypes"] = typelist else: diff --git a/spec/toml/gwe-disv.toml b/spec/toml/gwe-disv.toml new file mode 100644 index 0000000..2aa8363 --- /dev/null +++ b/spec/toml/gwe-disv.toml @@ -0,0 +1,465 @@ +component = "GWE" +subcomponent = "DISV" +blocknames = [ "options", "dimensions", "griddata", "vertices", "cell2d",] +multipkg = false +stress = false +advanced = false + +[block.options.length_units] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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''." +deprecated = "" + +[block.options.nogrb] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +deprecated = "" + +[block.options.xorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.yorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.angrot] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.export_array_ascii] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +deprecated = "" + +[block.options.export_array_netcdf] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to netcdf output files." +description = "keyword that specifies input griddata arrays should be written to the model output netcdf file." +deprecated = "" + +[block.options.ncf_filerecord] +type = "record ncf6 filein ncf6_filename" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "" +description = "" +deprecated = "" + +[block.options.ncf6] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a netcdf configuration (NCF) file." +deprecated = "" + +[block.options.filein] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." +deprecated = "" + +[block.options.ncf6_filename] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = true +numeric_index = false +longname = "file name of NCF information" +description = "defines a netcdf configuration (NCF) input file." +deprecated = "" + +[block.dimensions.nlay] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "number of layers" +description = "is the number of layers in the model grid." +deprecated = "" + +[block.dimensions.ncpl] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.dimensions.nvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.griddata.top] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +deprecated = "" + +[block.griddata.botm] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +deprecated = "" + +[block.griddata.idomain] +type = "integer" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.vertices.iv] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +deprecated = "" + +[block.vertices.xv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +deprecated = "" + +[block.vertices.yv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +deprecated = "" + +[block.vertices.vertices] +type = "recarray iv xv yv" +block_variable = false +valid = [] +shape = "(nvert)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "vertices data" +description = "" +deprecated = "" + +[block.cell2d.icell2d] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.xc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +deprecated = "" + +[block.cell2d.yc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +deprecated = "" + +[block.cell2d.ncvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.cell2d.icvert] +type = "integer" +block_variable = false +valid = [] +shape = "(ncvert)" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.cell2d] +type = "recarray icell2d xc yc ncvert icvert" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "cell2d data" +description = "" +deprecated = "" diff --git a/spec/toml/gwf-disv.toml b/spec/toml/gwf-disv.toml new file mode 100644 index 0000000..69d0425 --- /dev/null +++ b/spec/toml/gwf-disv.toml @@ -0,0 +1,465 @@ +component = "GWF" +subcomponent = "DISV" +blocknames = [ "options", "dimensions", "griddata", "vertices", "cell2d",] +multipkg = false +stress = false +advanced = false + +[block.options.length_units] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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''." +deprecated = "" + +[block.options.nogrb] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +deprecated = "" + +[block.options.xorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.yorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.angrot] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.export_array_ascii] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +deprecated = "" + +[block.options.export_array_netcdf] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to netcdf output files." +description = "keyword that specifies input griddata arrays should be written to the model output netcdf file." +deprecated = "" + +[block.options.ncf_filerecord] +type = "record ncf6 filein ncf6_filename" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "" +description = "" +deprecated = "" + +[block.options.ncf6] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a netcdf configuration (NCF) file." +deprecated = "" + +[block.options.filein] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." +deprecated = "" + +[block.options.ncf6_filename] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = true +numeric_index = false +longname = "file name of NCF information" +description = "defines a netcdf configuration (NCF) input file." +deprecated = "" + +[block.dimensions.nlay] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "number of layers" +description = "is the number of layers in the model grid." +deprecated = "" + +[block.dimensions.ncpl] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.dimensions.nvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.griddata.top] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +deprecated = "" + +[block.griddata.botm] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +deprecated = "" + +[block.griddata.idomain] +type = "integer" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.vertices.iv] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +deprecated = "" + +[block.vertices.xv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +deprecated = "" + +[block.vertices.yv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +deprecated = "" + +[block.vertices.vertices] +type = "recarray iv xv yv" +block_variable = false +valid = [] +shape = "(nvert)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "vertices data" +description = "" +deprecated = "" + +[block.cell2d.icell2d] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.xc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +deprecated = "" + +[block.cell2d.yc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +deprecated = "" + +[block.cell2d.ncvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.cell2d.icvert] +type = "integer" +block_variable = false +valid = [] +shape = "(ncvert)" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.cell2d] +type = "recarray icell2d xc yc ncvert icvert" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "cell2d data" +description = "" +deprecated = "" diff --git a/spec/toml/gwt-disv.toml b/spec/toml/gwt-disv.toml new file mode 100644 index 0000000..f7f0f58 --- /dev/null +++ b/spec/toml/gwt-disv.toml @@ -0,0 +1,465 @@ +component = "GWT" +subcomponent = "DISV" +blocknames = [ "options", "dimensions", "griddata", "vertices", "cell2d",] +multipkg = false +stress = false +advanced = false + +[block.options.length_units] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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''." +deprecated = "" + +[block.options.nogrb] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +deprecated = "" + +[block.options.xorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.yorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.angrot] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.export_array_ascii] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +deprecated = "" + +[block.options.export_array_netcdf] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to netcdf output files." +description = "keyword that specifies input griddata arrays should be written to the model output netcdf file." +deprecated = "" + +[block.options.ncf_filerecord] +type = "record ncf6 filein ncf6_filename" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "" +description = "" +deprecated = "" + +[block.options.ncf6] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a netcdf configuration (NCF) file." +deprecated = "" + +[block.options.filein] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." +deprecated = "" + +[block.options.ncf6_filename] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = true +numeric_index = false +longname = "file name of NCF information" +description = "defines a netcdf configuration (NCF) input file." +deprecated = "" + +[block.dimensions.nlay] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "number of layers" +description = "is the number of layers in the model grid." +deprecated = "" + +[block.dimensions.ncpl] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.dimensions.nvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.griddata.top] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +deprecated = "" + +[block.griddata.botm] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +deprecated = "" + +[block.griddata.idomain] +type = "integer" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.vertices.iv] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +deprecated = "" + +[block.vertices.xv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +deprecated = "" + +[block.vertices.yv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +deprecated = "" + +[block.vertices.vertices] +type = "recarray iv xv yv" +block_variable = false +valid = [] +shape = "(nvert)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "vertices data" +description = "" +deprecated = "" + +[block.cell2d.icell2d] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.xc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +deprecated = "" + +[block.cell2d.yc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +deprecated = "" + +[block.cell2d.ncvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.cell2d.icvert] +type = "integer" +block_variable = false +valid = [] +shape = "(ncvert)" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.cell2d] +type = "recarray icell2d xc yc ncvert icvert" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "cell2d data" +description = "" +deprecated = "" diff --git a/spec/toml/prt-disv.toml b/spec/toml/prt-disv.toml new file mode 100644 index 0000000..f500561 --- /dev/null +++ b/spec/toml/prt-disv.toml @@ -0,0 +1,465 @@ +component = "PRT" +subcomponent = "DISV" +blocknames = [ "options", "dimensions", "griddata", "vertices", "cell2d",] +multipkg = false +stress = false +advanced = false + +[block.options.length_units] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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''." +deprecated = "" + +[block.options.nogrb] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "do not write binary grid file" +description = "keyword to deactivate writing of the binary grid file." +deprecated = "" + +[block.options.xorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.yorigin] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.angrot] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.options.export_array_ascii] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to layered ascii files." +description = "keyword that specifies input griddata arrays should be written to layered ascii output files." +deprecated = "" + +[block.options.export_array_netcdf] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "export array variables to netcdf output files." +description = "keyword that specifies input griddata arrays should be written to the model output netcdf file." +deprecated = "" + +[block.options.ncf_filerecord] +type = "record ncf6 filein ncf6_filename" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = true +preserve_case = false +numeric_index = false +longname = "" +description = "" +deprecated = "" + +[block.options.ncf6] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "ncf keyword" +description = "keyword to specify that record corresponds to a netcdf configuration (NCF) file." +deprecated = "" + +[block.options.filein] +type = "keyword" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "file keyword" +description = "keyword to specify that an input filename is expected next." +deprecated = "" + +[block.options.ncf6_filename] +type = "string" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = true +numeric_index = false +longname = "file name of NCF information" +description = "defines a netcdf configuration (NCF) input file." +deprecated = "" + +[block.dimensions.nlay] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "number of layers" +description = "is the number of layers in the model grid." +deprecated = "" + +[block.dimensions.ncpl] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.dimensions.nvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.griddata.top] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model top elevation" +description = "is the top elevation for each cell in the top model layer." +deprecated = "" + +[block.griddata.botm] +type = "double" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = false +preserve_case = false +numeric_index = false +longname = "model bottom elevation" +description = "is the bottom elevation for each cell." +deprecated = "" + +[block.griddata.idomain] +type = "integer" +block_variable = false +valid = [] +shape = "(ncpl, nlay)" +tagged = true +in_record = false +layered = true +time_series = false +reader = "readarray" +optional = true +preserve_case = false +numeric_index = false +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." +deprecated = "" + +[block.vertices.iv] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +longname = "vertex number" +description = "is the vertex number. Records in the VERTICES block must be listed in consecutive order from 1 to NVERT." +deprecated = "" + +[block.vertices.xv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for vertex" +description = "is the x-coordinate for the vertex." +deprecated = "" + +[block.vertices.yv] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for vertex" +description = "is the y-coordinate for the vertex." +deprecated = "" + +[block.vertices.vertices] +type = "recarray iv xv yv" +block_variable = false +valid = [] +shape = "(nvert)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "vertices data" +description = "" +deprecated = "" + +[block.cell2d.icell2d] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.xc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "x-coordinate for cell center" +description = "is the x-coordinate for the cell center." +deprecated = "" + +[block.cell2d.yc] +type = "double" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "y-coordinate for cell center" +description = "is the y-coordinate for the cell center." +deprecated = "" + +[block.cell2d.ncvert] +type = "integer" +block_variable = false +valid = [] +shape = "" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = 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." +deprecated = "" + +[block.cell2d.icvert] +type = "integer" +block_variable = false +valid = [] +shape = "(ncvert)" +tagged = false +in_record = true +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = true +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." +deprecated = "" + +[block.cell2d.cell2d] +type = "recarray icell2d xc yc ncvert icvert" +block_variable = false +valid = [] +shape = "(ncpl)" +tagged = true +in_record = false +layered = false +time_series = false +reader = "urword" +optional = false +preserve_case = false +numeric_index = false +longname = "cell2d data" +description = "" +deprecated = "" diff --git a/test/data/test_mf6model_0-disu01a_0/disu01a.disu b/test/data/test_mf6model_0-disu01a_0/disu01a.disu index f5b7e18..979cee0 100644 --- a/test/data/test_mf6model_0-disu01a_0/disu01a.disu +++ b/test/data/test_mf6model_0-disu01a_0/disu01a.disu @@ -11,13 +11,16 @@ END dimensions BEGIN griddata top INTERNAL FACTOR 1.0 - 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 + 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -20.00000000 -20.00000000 + -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 bot INTERNAL FACTOR 1.0 - -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 + -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -30.00000000 -30.00000000 + -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 area INTERNAL FACTOR 1.0 - 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 + 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 + 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 END griddata BEGIN connectiondata diff --git a/test/data/test_mf6model_0-disu01a_0/disu01a.lst b/test/data/test_mf6model_0-disu01a_0/disu01a.lst deleted file mode 100644 index d854659..0000000 --- a/test/data/test_mf6model_0-disu01a_0/disu01a.lst +++ /dev/null @@ -1,224 +0,0 @@ - MODFLOW 6 EXTENDED - U.S. GEOLOGICAL SURVEY MODULAR HYDROLOGIC MODEL - GROUNDWATER FLOW MODEL (GWF) - VERSION 6.6.0.dev0 (preliminary) 05/23/2024 - ***DEVELOP MODE*** - - MODFLOW 6 compiled Oct 16 2024 07:42:59 with GCC version 11.4.0 - -This software is preliminary or provisional and is subject to -revision. It is being provided to meet the need for timely best -science. The software has not received final approval by the U.S. -Geological Survey (USGS). No warranty, expressed or implied, is made -by the USGS or the U.S. Government as to the functionality of the -software and related material nor shall the fact of release -constitute any such warranty. The software is provided on the -condition that neither the USGS nor the U.S. Government shall be held -liable for any damages resulting from the authorized or unauthorized -use of the software. - - -As a work of the United States Government, this USGS product is -in the public domain within the United States. You can copy, -modify, distribute, and perform the work, even for commercial -purposes, all without asking permission. Additionally, USGS -waives copyright and related rights in the work worldwide -through CC0 1.0 Universal Public Domain Dedication -(https://creativecommons.org/publicdomain/zero/1.0/). - -The following GNU Lesser General Public License (LGPL) libraries -are used in this USGS product: - - SPARSKIT version 2.0 - ilut, luson, and qsplit - (https://www-users.cse.umn.edu/~saad/software/SPARSKIT/) - - RCM - Reverse Cuthill McKee Ordering - (https://people.math.sc.edu/Burkardt/f_src/rcm/rcm.html) - - BLAS - Basic Linear Algebra Subprograms Level 1 - (https://people.math.sc.edu/Burkardt/f_src/blas1_d/blas1_d.html) - - SPARSEKIT - Sparse Matrix Utility Package - amux, dperm, dvperm, rperm, and cperm - (https://people.sc.fsu.edu/~jburkardt/f77_src/sparsekit/sparsekit.html) - -The following BSD-3 License libraries are used in this USGS product: - - Modern Fortran DAG Library - Copyright (c) 2018, Jacob Williams - All rights reserved. - (https://github.com/jacobwilliams/daglib) - -The following library is used in this USGS product: - - NetCDF, network Common Data Form software library - Copyright (c) 1993-2014 University Corporation for Atmospheric - Research/Unidata. Redistribution and use in source and binary - forms, with or without modification, are permitted provided that - the conditions in the NetCDF copyright are met - (https://www.unidata.ucar.edu/software/netcdf/copyright.html) - -The following 2-clause BSD License library is used in this -USGS product: - - PETSc, the Portable, Extensible Toolkit for Scientific - Computation Library - Copyright (c) 1991-2021, UChicago Argonne, LLC - and the PETSc Development Team All rights reserved. - (https://petsc.org/release/) - -MODFLOW 6 compiler options: -fdiagnostics-color=always -cpp -I -src/libmf6core.a.p -I src -I ../src -I src/libmf6_external.a.p -I -/home/mjreno/.clone/external/petsc/arch-linux-c-debug/include -I -/home/mjreno/.clone/external/petsc/include -I -/home/mjreno/.clone/external/petsc/arch-linux-c-debug/lib -I /usr/include -I -/usr/include/hdf5/serial -imultiarch x86_64-linux-gnu -D _FILE_OFFSET_BITS=64 --D __linux__ -D __WITH_PETSC__ -D __WITH_MPI__ -D __WITH_NETCDF__ --mtune=generic -march=x86-64 -O2 -Wall -Wpedantic -Wcharacter-truncation --Wno-unused-dummy-argument -Wno-intrinsic-shadow -Wno-maybe-uninitialized --Wno-uninitialized -std=f2008 -fall-intrinsics -ffpe-summary=overflow --ffpe-trap=overflow,zero -fPIC -J src/libmf6core.a.p --fpre-include=/usr/include/finclude/math-vector-fortran.h - -System command used to initiate simulation: -/home/mjreno/.clone/usgs/modflow6/bin/mf6 mfsim.nam - -MODFLOW was compiled using uniform precision. - -Real Variables - KIND: 8 - TINY (smallest non-zero value): 2.225074-308 - HUGE (largest value): 1.797693+308 - PRECISION: 15 - SIZE IN BITS: 64 - -Integer Variables - KIND: 4 - HUGE (largest value): 2147483647 - SIZE IN BITS: 32 - -Long Integer Variables - KIND: 8 - HUGE (largest value): 9223372036854775807 - SIZE IN BITS: 64 - -Logical Variables - KIND: 4 - SIZE IN BITS: 32 - - NAMEFILE OPTIONS: - END NAMEFILE OPTIONS: - - DISU -- UNSTRUCTURED GRID DISCRETIZATION PACKAGE, VERSION 2 : 3/27/2014 - INPUT READ FROM MEMPATH: __INPUT__/DISU01A/DISU - - - Setting Discretization Options - VERTICAL_OFFSET_TOLERANCE = 0.0000000000000000 - End Setting Discretization Options - - Setting Discretization Dimensions - NODES = 27 - NJA = 135 - End Setting Discretization Dimensions - - Setting Discretization Griddata - TOP set from input file - BOT set from input file - AREA set from input file - End Setting Discretization Griddata - - Setting Discretization Connectivity - IAC set from input file - JA set from input file - IHC set from input file - CL12 set from input file - HWVA set from input file - End Setting Discretization Connectivity - - - NPF -- NODE PROPERTY FLOW PACKAGE, VERSION 1, 3/30/2015 INPUT READ FROM MEMPATH: __INPUT__/DISU01A/NPF - - - IC -- Initial Conditions Package, Version 8, 3/28/2015 input read from mempath: __INPUT__/DISU01A/IC - - - Setting NPF Options - End Setting NPF Options - - Setting NPF Griddata - ICELLTYPE set from input file - K set from input file - K33 not provided. Setting K33 = K. - K22 not provided. Setting K22 = K. - End Setting NPF Griddata - - - CHD -- CHD PACKAGE, VERSION 8, 2/22/2014 INPUT READ FROM MEMPATH: __INPUT__/DISU01A/CHD_0 - - PROCESSING CHD BASE OPTIONS - END OF CHD BASE OPTIONS - - PROCESSING CHD BASE DIMENSIONS - MAXBOUND = 2 - END OF CHD BASE DIMENSIONS - STRT set from input file - BINARY GRID INFORMATION WILL BE WRITTEN TO: - UNIT NUMBER: 1010 - FILE NAME: disu01a.disu.grb - - OPENED disu01a.disu.grb - FILE TYPE:DATA(BINARY) UNIT 1010 STATUS:REPLACE - FORMAT:UNFORMATTED ACCESS:STREAM - ACTION:READWRITE - - THE LAST TIME STEP WILL BE PRINTED - THE LAST TIME STEP WILL BE PRINTED - -start timestep kper="1" kstp="1" mode="normal" - -1 - HEAD IN LAYER 1 AT END OF TIME STEP 1 IN STRESS PERIOD 1 - --------------------------------------------------------------------------- - - 1 2 3 4 5 6 7 8 9 10 - 11 12 13 14 15 16 17 18 19 20 - 21 22 23 24 25 26 27 - .................................................................................................................................................................................................................................................................................................................................... - 1 1.000 0.6434 0.5000 0.6434 0.5000 0.3566 0.5000 0.3566 0.000 0.6838 - 0.5735 0.5000 0.5735 0.5000 0.4265 0.5000 0.4265 0.3162 0.5882 0.5404 - 0.5000 0.5404 0.5000 0.4596 0.5000 0.4596 0.4118 - - - VOLUME BUDGET FOR ENTIRE MODEL AT END OF TIME STEP 1, STRESS PERIOD 1 - --------------------------------------------------------------------------------------------------- - - CUMULATIVE VOLUME L**3 RATES FOR THIS TIME STEP L**3/T PACKAGE NAME - ------------------ ------------------------ ---------------- - - IN: IN: - --- --- - CHD = 10.2941 CHD = 10.2941 CHD_0 - - TOTAL IN = 10.2941 TOTAL IN = 10.2941 - - OUT: OUT: - ---- ---- - CHD = 10.2941 CHD = 10.2941 CHD_0 - - TOTAL OUT = 10.2941 TOTAL OUT = 10.2941 - - IN - OUT = 6.3459E-06 IN - OUT = 6.3459E-06 - - PERCENT DISCREPANCY = 0.00 PERCENT DISCREPANCY = 0.00 - - - - - TIME SUMMARY AT END OF TIME STEP 1 IN STRESS PERIOD 1 - TIME STEP LENGTH = 1.00000 - STRESS PERIOD TIME = 1.00000 - TOTAL SIMULATION TIME = 1.00000 - -end timestep - diff --git a/test/data/test_mf6model_0-disu01a_0/disu01a.orig.disu b/test/data/test_mf6model_0-disu01a_0/disu01a.orig.disu deleted file mode 100644 index 979cee0..0000000 --- a/test/data/test_mf6model_0-disu01a_0/disu01a.orig.disu +++ /dev/null @@ -1,148 +0,0 @@ -# File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. -BEGIN options - VERTICAL_OFFSET_TOLERANCE 0.00000000 -END options - -BEGIN dimensions - NODES 27 - NJA 135 -END dimensions - -BEGIN griddata - top - INTERNAL FACTOR 1.0 - 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -20.00000000 -20.00000000 - -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 - bot - INTERNAL FACTOR 1.0 - -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -30.00000000 -30.00000000 - -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 - area - INTERNAL FACTOR 1.0 - 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 - 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 100.00000000 -END griddata - -BEGIN connectiondata - iac - INTERNAL FACTOR 1 - 4 5 4 5 6 5 4 5 4 5 6 5 6 7 6 5 6 5 4 5 - 4 5 6 5 4 5 4 - ja - INTERNAL FACTOR 1 - 1 2 4 10 - 2 1 3 5 11 - 3 2 6 12 - 4 1 5 7 13 - 5 2 4 6 8 14 - 6 3 5 9 15 - 7 4 8 16 - 8 5 7 9 17 - 9 6 8 18 - 10 1 11 13 19 - 11 2 10 12 14 20 - 12 3 11 15 21 - 13 4 10 14 16 22 - 14 5 11 13 15 17 23 - 15 6 12 14 18 24 - 16 7 13 17 25 - 17 8 14 16 18 26 - 18 9 15 17 27 - 19 10 20 22 - 20 11 19 21 23 - 21 12 20 24 - 22 13 19 23 25 - 23 14 20 22 24 26 - 24 15 21 23 27 - 25 16 22 26 - 26 17 23 25 27 - 27 18 24 26 - ihc - INTERNAL FACTOR 1 - 1 1 1 0 - 1 1 1 1 0 - 1 1 1 0 - 1 1 1 1 0 - 1 1 1 1 1 0 - 1 1 1 1 0 - 1 1 1 0 - 1 1 1 1 0 - 1 1 1 0 - 2 0 1 1 0 - 2 0 1 1 1 0 - 2 0 1 1 0 - 2 0 1 1 1 0 - 2 0 1 1 1 1 0 - 2 0 1 1 1 0 - 2 0 1 1 0 - 2 0 1 1 1 0 - 2 0 1 1 0 - 3 0 1 1 - 3 0 1 1 1 - 3 0 1 1 - 3 0 1 1 1 - 3 0 1 1 1 1 - 3 0 1 1 1 - 3 0 1 1 - 3 0 1 1 1 - 3 0 1 1 - cl12 - INTERNAL FACTOR 1.0 - 1.00000000 5.00000000 5.00000000 5.00000000 - 2.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 3.00000000 5.00000000 5.00000000 5.00000000 - 4.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 6.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 7.00000000 5.00000000 5.00000000 5.00000000 - 8.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 9.00000000 5.00000000 5.00000000 5.00000000 - 10.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 11.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 12.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 13.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 14.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 15.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 16.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 17.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 18.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 19.00000000 5.00000000 5.00000000 5.00000000 - 20.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 21.00000000 5.00000000 5.00000000 5.00000000 - 22.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 23.00000000 5.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 24.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 25.00000000 5.00000000 5.00000000 5.00000000 - 26.00000000 5.00000000 5.00000000 5.00000000 5.00000000 - 27.00000000 5.00000000 5.00000000 5.00000000 - hwva - INTERNAL FACTOR 1.0 - 1.00000000 10.00000000 10.00000000 100.00000000 - 2.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 3.00000000 10.00000000 10.00000000 100.00000000 - 4.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 5.00000000 10.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 6.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 7.00000000 10.00000000 10.00000000 100.00000000 - 8.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 9.00000000 10.00000000 10.00000000 100.00000000 - 10.00000000 100.00000000 10.00000000 10.00000000 100.00000000 - 11.00000000 100.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 12.00000000 100.00000000 10.00000000 10.00000000 100.00000000 - 13.00000000 100.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 14.00000000 100.00000000 10.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 15.00000000 100.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 16.00000000 100.00000000 10.00000000 10.00000000 100.00000000 - 17.00000000 100.00000000 10.00000000 10.00000000 10.00000000 100.00000000 - 18.00000000 100.00000000 10.00000000 10.00000000 100.00000000 - 19.00000000 100.00000000 10.00000000 10.00000000 - 20.00000000 100.00000000 10.00000000 10.00000000 10.00000000 - 21.00000000 100.00000000 10.00000000 10.00000000 - 22.00000000 100.00000000 10.00000000 10.00000000 10.00000000 - 23.00000000 100.00000000 10.00000000 10.00000000 10.00000000 10.00000000 - 24.00000000 100.00000000 10.00000000 10.00000000 10.00000000 - 25.00000000 100.00000000 10.00000000 10.00000000 - 26.00000000 100.00000000 10.00000000 10.00000000 10.00000000 - 27.00000000 100.00000000 10.00000000 10.00000000 -END connectiondata - diff --git a/test/data/test_mf6model_0-disu01a_0/mfsim.lst b/test/data/test_mf6model_0-disu01a_0/mfsim.lst deleted file mode 100644 index 0d48327..0000000 --- a/test/data/test_mf6model_0-disu01a_0/mfsim.lst +++ /dev/null @@ -1,286 +0,0 @@ - MODFLOW 6 EXTENDED - U.S. GEOLOGICAL SURVEY MODULAR HYDROLOGIC MODEL - VERSION 6.6.0.dev0 (preliminary) 05/23/2024 - ***DEVELOP MODE*** - - MODFLOW 6 compiled Oct 16 2024 07:42:59 with GCC version 11.4.0 - -This software is preliminary or provisional and is subject to -revision. It is being provided to meet the need for timely best -science. The software has not received final approval by the U.S. -Geological Survey (USGS). No warranty, expressed or implied, is made -by the USGS or the U.S. Government as to the functionality of the -software and related material nor shall the fact of release -constitute any such warranty. The software is provided on the -condition that neither the USGS nor the U.S. Government shall be held -liable for any damages resulting from the authorized or unauthorized -use of the software. - - -As a work of the United States Government, this USGS product is -in the public domain within the United States. You can copy, -modify, distribute, and perform the work, even for commercial -purposes, all without asking permission. Additionally, USGS -waives copyright and related rights in the work worldwide -through CC0 1.0 Universal Public Domain Dedication -(https://creativecommons.org/publicdomain/zero/1.0/). - -The following GNU Lesser General Public License (LGPL) libraries -are used in this USGS product: - - SPARSKIT version 2.0 - ilut, luson, and qsplit - (https://www-users.cse.umn.edu/~saad/software/SPARSKIT/) - - RCM - Reverse Cuthill McKee Ordering - (https://people.math.sc.edu/Burkardt/f_src/rcm/rcm.html) - - BLAS - Basic Linear Algebra Subprograms Level 1 - (https://people.math.sc.edu/Burkardt/f_src/blas1_d/blas1_d.html) - - SPARSEKIT - Sparse Matrix Utility Package - amux, dperm, dvperm, rperm, and cperm - (https://people.sc.fsu.edu/~jburkardt/f77_src/sparsekit/sparsekit.html) - -The following BSD-3 License libraries are used in this USGS product: - - Modern Fortran DAG Library - Copyright (c) 2018, Jacob Williams - All rights reserved. - (https://github.com/jacobwilliams/daglib) - -The following library is used in this USGS product: - - NetCDF, network Common Data Form software library - Copyright (c) 1993-2014 University Corporation for Atmospheric - Research/Unidata. Redistribution and use in source and binary - forms, with or without modification, are permitted provided that - the conditions in the NetCDF copyright are met - (https://www.unidata.ucar.edu/software/netcdf/copyright.html) - -The following 2-clause BSD License library is used in this -USGS product: - - PETSc, the Portable, Extensible Toolkit for Scientific - Computation Library - Copyright (c) 1991-2021, UChicago Argonne, LLC - and the PETSc Development Team All rights reserved. - (https://petsc.org/release/) - -MODFLOW 6 compiler options: -fdiagnostics-color=always -cpp -I -src/libmf6core.a.p -I src -I ../src -I src/libmf6_external.a.p -I -/home/mjreno/.clone/external/petsc/arch-linux-c-debug/include -I -/home/mjreno/.clone/external/petsc/include -I -/home/mjreno/.clone/external/petsc/arch-linux-c-debug/lib -I /usr/include -I -/usr/include/hdf5/serial -imultiarch x86_64-linux-gnu -D _FILE_OFFSET_BITS=64 --D __linux__ -D __WITH_PETSC__ -D __WITH_MPI__ -D __WITH_NETCDF__ --mtune=generic -march=x86-64 -O2 -Wall -Wpedantic -Wcharacter-truncation --Wno-unused-dummy-argument -Wno-intrinsic-shadow -Wno-maybe-uninitialized --Wno-uninitialized -std=f2008 -fall-intrinsics -ffpe-summary=overflow --ffpe-trap=overflow,zero -fPIC -J src/libmf6core.a.p --fpre-include=/usr/include/finclude/math-vector-fortran.h - -System command used to initiate simulation: -/home/mjreno/.clone/usgs/modflow6/bin/mf6 mfsim.nam - -MODFLOW was compiled using uniform precision. - -Real Variables - KIND: 8 - TINY (smallest non-zero value): 2.225074-308 - HUGE (largest value): 1.797693+308 - PRECISION: 15 - SIZE IN BITS: 64 - -Integer Variables - KIND: 4 - HUGE (largest value): 2147483647 - SIZE IN BITS: 32 - -Long Integer Variables - KIND: 8 - HUGE (largest value): 9223372036854775807 - SIZE IN BITS: 64 - -Logical Variables - KIND: 4 - SIZE IN BITS: 32 - - - OPENED mfsim.nam - FILE TYPE:NAM6 UNIT 1001 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - OPENED disu01a.tdis - FILE TYPE:TDIS6 UNIT 1002 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - OPENED disu01a.nam - FILE TYPE:GWF6 UNIT 1003 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - OPENED disu01a.disu - FILE TYPE:DISU6 UNIT 1004 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - OPENED disu01a.npf - FILE TYPE:NPF6 UNIT 1005 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - OPENED disu01a.ic - FILE TYPE:IC6 UNIT 1006 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - OPENED disu01a.chd - FILE TYPE:CHD6 UNIT 1007 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - READING SIMULATION OPTIONS - MAXIMUM NUMBER OF ERRORS THAT WILL BE STORED IS 1000 - END OF SIMULATION OPTIONS - - READING SIMULATION TIMING - - TDIS -- TEMPORAL DISCRETIZATION PACKAGE, - VERSION 1 : 11/13/2014 - INPUT READ FROM MEMPATH: __INPUT__/SIM/TDIS - PROCESSING TDIS OPTIONS - SIMULATION TIME UNIT IS UNDEFINED - END OF TDIS OPTIONS - PROCESSING TDIS DIMENSIONS - 1 STRESS PERIOD(S) IN SIMULATION - END OF TDIS DIMENSIONS - PROCESSING TDIS PERIODDATA - - - STRESS PERIOD LENGTH TIME STEPS MULTIPLIER FOR DELT - ---------------------------------------------------------------------------- - 1 1.000000 1 1.000 - END OF TDIS PERIODDATA - END OF SIMULATION TIMING - - READING SIMULATION MODELS - GWF6 model 1 will be created - END OF SIMULATION MODELS - - READING SIMULATION EXCHANGES - END OF SIMULATION EXCHANGES - - READING SOLUTIONGROUP - - Creating solution: SLN_1 - - OPENED disu01a.ims - FILE TYPE:IMS UNIT 1009 STATUS:OLD - FORMAT:FORMATTED ACCESS:SEQUENTIAL - ACTION:READ - - END OF SOLUTIONGROUP - -PROCESSING MODEL CONNECTIONS - - IMS -- ITERATIVE MODEL SOLUTION PACKAGE, VERSION 6, 4/28/2017 - INPUT READ FROM UNIT 1009 - # File generated by Flopy version 3.9.0.dev0 on 10/29/2024 at 08:36:29. - - PROCESSING IMS OPTIONS - END OF IMS OPTIONS - ***UNDER-RELAXATION WILL NOT BE USED*** - - ***IMS LINEAR SOLVER WILL BE USED*** - - IMSLINEAR -- UNSTRUCTURED LINEAR SOLUTION PACKAGE, VERSION 8, 04/28/2017 - A symmetric matrix will be solved - - OUTER ITERATION CONVERGENCE CRITERION (DVCLOSE) = 0.100000E-02 - MAXIMUM NUMBER OF OUTER ITERATIONS (MXITER) = 25 - SOLVER PRINTOUT INDEX (IPRIMS) = 1 - NONLINEAR ITERATION METHOD (NONLINMETH) = 0 - LINEAR SOLUTION METHOD (LINMETH) = 1 - - SOLUTION BY THE CONJUGATE-GRADIENT METHOD - ------------------------------------------------------------------ - MAXIMUM OF 25 CALLS OF SOLUTION ROUTINE - MAXIMUM OF 50 INTERNAL ITERATIONS PER CALL TO SOLUTION ROUTINE - LINEAR ACCELERATION METHOD = CG - MATRIX PRECONDITIONING TYPE = INCOMPLETE LU - MATRIX SCALING APPROACH = NO SCALING - MATRIX REORDERING APPROACH = ORIGINAL ORDERING - NUMBER OF ORTHOGONALIZATIONS = 0 - HEAD CHANGE CRITERION FOR CLOSURE = 0.10000E-02 - RESIDUAL CHANGE CRITERION FOR CLOSURE = 0.10000E+00 - RESIDUAL CONVERGENCE OPTION = 0 - RESIDUAL CONVERGENCE NORM = INFINITY NORM - RELAXATION FACTOR = 0.00000E+00 - - - - - Solving: Stress period: 1 Time step: 1 - -1 - STRESS PERIOD NO. 1, LENGTH = 1.000000 - ------------------------------------------ - NUMBER OF TIME STEPS = 1 - MULTIPLIER FOR DELT = 1.000 - INITIAL TIME STEP SIZE = 1.000000 - - SLN_1 OUTER ITERATION SUMMARY - ---------------------------------------------------------------------------------------------------------- - OUTER INNER STEP MAXIMUM CHANGE MODEL-(CELLID) OR - OUTER ITERATION STEP ITERATION ITERATION MAXIMUM CHANGE SUCCESS MODEL-PACKAGE-(NUMBER) - ---------------------------------------------------------------------------------------------------------- - Model 1 5 0.68382334 1_GWF-(10) - Model 2 1 -6.85437959E-06 * 1_GWF-(23) - ---------------------------------------------------------------------------------------------------------- - - - 2 CALLS TO NUMERICAL SOLUTION IN TIME STEP 1 STRESS PERIOD 1 - 6 TOTAL ITERATIONS - - - Solution SLN_1 summary - ---------------------------------------------------------------------- - Total formulate time: 0.28000000000000247E-4 seconds - Total solution time: 0.19999999999999185E-4 seconds - - - MEMORY MANAGER TOTAL STORAGE BY DATA TYPE, IN KILOBYTES - ------------------------------- - ALLOCATED - DATA TYPE MEMORY - ------------------------------- - Character 6.5490000 - Logical 4.40000000E-02 - Integer 9.1160000 - Real 17.072000 - ------------------------------- - Total 32.781000 - Virtual 0.0000000 - ------------------------------- - - - - Run end date and time (yyyy/mm/dd hh:mm:ss): 2024/10/29 8:36:29 - Elapsed run time: 0.029 Seconds - Normal termination of simulation. diff --git a/test/data/test_mf6model_0-disv01a_0/disv01a.chd b/test/data/test_mf6model_0-disv01a_0/disv01a.chd new file mode 100644 index 0000000..0c7f0ee --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/disv01a.chd @@ -0,0 +1,13 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options +END options + +BEGIN dimensions + MAXBOUND 2 +END dimensions + +BEGIN period 1 + 1 1 1.00000000E+00 + 1 9 0.00000000E+00 +END period 1 + diff --git a/test/data/test_mf6model_0-disv01a_0/disv01a.disv b/test/data/test_mf6model_0-disv01a_0/disv01a.disv new file mode 100644 index 0000000..f5fdc0e --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/disv01a.disv @@ -0,0 +1,54 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options +END options + +BEGIN dimensions + NLAY 3 + NCPL 9 + NVERT 16 +END dimensions + +BEGIN griddata + top + INTERNAL FACTOR 1.0 + 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 + botm LAYERED + INTERNAL FACTOR 1.0 + -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 -10.00000000 + INTERNAL FACTOR 1.0 + -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 -20.00000000 + INTERNAL FACTOR 1.0 + -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 -30.00000000 +END griddata + +BEGIN vertices + 1 1.00000000E+08 1.00000030E+08 + 2 1.00000010E+08 1.00000030E+08 + 3 1.00000020E+08 1.00000030E+08 + 4 1.00000030E+08 1.00000030E+08 + 5 1.00000000E+08 1.00000020E+08 + 6 1.00000010E+08 1.00000020E+08 + 7 1.00000020E+08 1.00000020E+08 + 8 1.00000030E+08 1.00000020E+08 + 9 1.00000000E+08 1.00000010E+08 + 10 1.00000010E+08 1.00000010E+08 + 11 1.00000020E+08 1.00000010E+08 + 12 1.00000030E+08 1.00000010E+08 + 13 1.00000000E+08 1.00000000E+08 + 14 1.00000010E+08 1.00000000E+08 + 15 1.00000020E+08 1.00000000E+08 + 16 1.00000030E+08 1.00000000E+08 +END vertices + +BEGIN cell2d + 1 1.00000005E+08 1.00000025E+08 4 1 2 6 5 + 2 1.00000015E+08 1.00000025E+08 4 2 3 7 6 + 3 1.00000025E+08 1.00000025E+08 4 3 4 8 7 + 4 1.00000005E+08 1.00000015E+08 4 5 6 10 9 + 5 1.00000015E+08 1.00000015E+08 4 6 7 11 10 + 6 1.00000025E+08 1.00000015E+08 4 7 8 12 11 + 7 1.00000005E+08 1.00000005E+08 4 9 10 14 13 + 8 1.00000015E+08 1.00000005E+08 4 10 11 15 14 + 9 1.00000025E+08 1.00000005E+08 4 11 12 16 15 +END cell2d + diff --git a/test/data/test_mf6model_0-disv01a_0/disv01a.ic b/test/data/test_mf6model_0-disv01a_0/disv01a.ic new file mode 100644 index 0000000..944fcf3 --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/disv01a.ic @@ -0,0 +1,9 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options +END options + +BEGIN griddata + strt + CONSTANT 0.00000000 +END griddata + diff --git a/test/data/test_mf6model_0-disv01a_0/disv01a.ims b/test/data/test_mf6model_0-disv01a_0/disv01a.ims new file mode 100644 index 0000000..5e85a8d --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/disv01a.ims @@ -0,0 +1,5 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options + PRINT_OPTION summary +END options + diff --git a/test/data/test_mf6model_0-disv01a_0/disv01a.nam b/test/data/test_mf6model_0-disv01a_0/disv01a.nam new file mode 100644 index 0000000..56d8c24 --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/disv01a.nam @@ -0,0 +1,11 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options +END options + +BEGIN packages + DISV6 disv01a.disv disv + IC6 disv01a.ic ic + NPF6 disv01a.npf npf + CHD6 disv01a.chd chd_0 +END packages + diff --git a/test/data/test_mf6model_0-disv01a_0/disv01a.npf b/test/data/test_mf6model_0-disv01a_0/disv01a.npf new file mode 100644 index 0000000..b8f11ad --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/disv01a.npf @@ -0,0 +1,11 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options +END options + +BEGIN griddata + icelltype + CONSTANT 0 + k + CONSTANT 1.00000000 +END griddata + diff --git a/test/data/test_mf6model_0-disv01a_0/disv01a.tdis b/test/data/test_mf6model_0-disv01a_0/disv01a.tdis new file mode 100644 index 0000000..163e9e4 --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/disv01a.tdis @@ -0,0 +1,12 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options +END options + +BEGIN dimensions + NPER 1 +END dimensions + +BEGIN perioddata + 1.00000000 1 1.00000000 +END perioddata + diff --git a/test/data/test_mf6model_0-disv01a_0/mfsim.nam b/test/data/test_mf6model_0-disv01a_0/mfsim.nam new file mode 100644 index 0000000..dcc26bf --- /dev/null +++ b/test/data/test_mf6model_0-disv01a_0/mfsim.nam @@ -0,0 +1,19 @@ +# File generated by Flopy version 3.9.0.dev2 on 10/30/2024 at 08:03:52. +BEGIN options +END options + +BEGIN timing + TDIS6 disv01a.tdis +END timing + +BEGIN models + gwf6 disv01a.nam disv01a +END models + +BEGIN exchanges +END exchanges + +BEGIN solutiongroup 1 + ims6 disv01a.ims disv01a +END solutiongroup 1 + diff --git a/test/test_sim.py b/test/test_sim.py index cd2b7a6..4c2f310 100644 --- a/test/test_sim.py +++ b/test/test_sim.py @@ -346,21 +346,57 @@ def test_gwf_chd01(tmp_path): shutil.copytree(data_fpth, tmp_path / "gwf_chd01") sim_fpth = Path(tmp_path / "gwf_chd01" / "mfsim.nam") - s = None + sim = None with open(sim_fpth, "r") as f: - s = MFSimulation.load(f) + sim = MFSimulation.load(f) write_dir = tmp_path / "write" os.makedirs(write_dir) - s.write(write_dir) + sim.write(write_dir) - s = subprocess.run(["which", "mf6"]) - if s.returncode == 0: + w = subprocess.run(["which", "mf6"]) + if w.returncode == 0: os.chdir(tmp_path / "gwf_chd01") subprocess.run(["mf6"]) os.chdir(tmp_path / "write") subprocess.run(["mf6"]) - subprocess.run(["diff", f"./{name}.lst", f"../gwf_chd01/{name}.lst"]) + diff = subprocess.run( + ["diff", f"./{name}.lst", f"../gwf_chd01/{name}.lst"] + ) + if diff.stdout: + print(f"\nGWF model list file difference: {diff.stdout}") + if diff.stderr: + print(diff.stderr) + + +def test_gwf_disv(tmp_path): + name = "disv01a" + + data_fpth = Path(__file__).parent / "data" / "test_mf6model_0-disv01a_0" + shutil.copytree(data_fpth, tmp_path / "disv01a") + sim_fpth = Path(tmp_path / "disv01a" / "mfsim.nam") + + sim = None + with open(sim_fpth, "r") as f: + sim = MFSimulation.load(f) + + write_dir = tmp_path / "write" + os.makedirs(write_dir) + sim.write(write_dir) + + w = subprocess.run(["which", "mf6"]) + if w.returncode == 0: + os.chdir(tmp_path / "disv01a") + subprocess.run(["mf6"]) + os.chdir(tmp_path / "write") + subprocess.run(["mf6"]) + diff = subprocess.run( + ["diff", f"./{name}.lst", f"../disv01a/{name}.lst"] + ) + if diff.stdout: + print(f"\nGWF model list file difference: {diff.stdout}") + if diff.stderr: + print(diff.stderr) def test_gwf_disu(tmp_path): @@ -370,18 +406,24 @@ def test_gwf_disu(tmp_path): shutil.copytree(data_fpth, tmp_path / "disu01a") sim_fpth = Path(tmp_path / "disu01a" / "mfsim.nam") - s = None + sim = None with open(sim_fpth, "r") as f: - s = MFSimulation.load(f) + sim = MFSimulation.load(f) write_dir = tmp_path / "write" os.makedirs(write_dir) - s.write(write_dir) + sim.write(write_dir) - s = subprocess.run(["which", "mf6"]) - if s.returncode == 0: + w = subprocess.run(["which", "mf6"]) + if w.returncode == 0: os.chdir(tmp_path / "disu01a") subprocess.run(["mf6"]) os.chdir(tmp_path / "write") subprocess.run(["mf6"]) - subprocess.run(["diff", f"./{name}.lst", f"../disu01a/{name}.lst"]) + diff = subprocess.run( + ["diff", f"./{name}.lst", f"../disu01a/{name}.lst"] + ) + if diff.stdout: + print(f"\nGWF model list file difference: {diff.stdout}") + if diff.stderr: + print(diff.stderr)