flopy.utils.gridgen module

class Gridgen(modelgrid, model_ws: str | PathLike = '.', exe_name: str | PathLike = 'gridgen', surface_interpolation='replicate', vertical_pass_through=False, **kwargs)[source]

Bases: object

Class to work with the gridgen program to create layered quadtree grids.

Parameters:
  • modelgrid (flopy.discretization.StructuredGrid) – Flopy StructuredGrid object. Note this also accepts ModflowDis and ModflowGwfdis objects, however it is deprecated and support will be removed in version 3.3.7

  • model_ws (str or PathLike) – workspace location for creating gridgen files (default is ‘.’)

  • exe_name (str) – path and name of the gridgen program. (default is gridgen)

  • surface_interpolation (str) – Default gridgen method for interpolating elevations. Valid options include ‘replicate’ (default) and ‘interpolate’

  • vertical_pass_through (bool) – If true, Gridgen’s GRID_TO_USGDATA command will connect layers where intermediate layers are inactive. (default is False)

  • **kwargs

    verical_smoothing_levelint

    maximum level difference between two vertically adjacent cells. Adjust with caution, as adjustments can cause unexpected results to simulated flows

    horizontal_smoothing_levelint

    maximum level difference between two horizontally adjacent cells. Adjust with caution, as adjustments can cause unexpected results to simulated flows

Notes

For the surface elevations, the top of a layer uses the same surface as the bottom of the overlying layer.

add_active_domain(feature, layers)[source]
Parameters:
  • feature (str, path-like or array-like) –

    feature can be:

    a shapefile name (str) or Pathlike a list of polygons a flopy.utils.geometry.Collection object of Polygons a shapely.geometry.Collection object of Polygons a geojson.GeometryCollection object of Polygons a list of shapefile.Shape objects a shapefile.Shapes object

  • layers (list) – A list of layers (zero based) for which this active domain applies.

Return type:

None

add_refinement_features(features, featuretype, level, layers)[source]
Parameters:
  • features (str, path-like or array-like) –

    features can be

    a shapefile name (str) or Pathlike a list of points, lines, or polygons a flopy.utils.geometry.Collection object a list of flopy.utils.geometry objects a shapely.geometry.Collection object a geojson.GeometryCollection object a list of shapefile.Shape objects a shapefile.Shapes object

  • featuretype (str) – Must be either ‘point’, ‘line’, or ‘polygon’

  • level (int) – The level of refinement for this features

  • layers (list) – A list of layers (zero based) for which this refinement features applies.

Return type:

None

build(verbose=False)[source]

Build the quadtree grid

Parameters:

verbose (bool) – If true, print the results of the gridgen command to the terminal (default is False)

Return type:

None

export(verbose=False)[source]

Export the quadtree grid to shapefiles, usgdata, and vtk

Parameters:

verbose (bool) – If true, print the results of the gridgen command to the terminal (default is False)

Return type:

None

get_angldegx(fldr=None)[source]

Get the angldegx array

Parameters:

fldr (ndarray) – Flow direction indicator array. If None, then it is read from gridgen output.

Returns:

angldegx – A 1D vector indicating the angle (in degrees) between the x axis and an outward normal to the face.

Return type:

ndarray

get_area()[source]

Get the area array

Returns:

area – A 1D vector of cell areas of size nodes

Return type:

ndarray

get_bot()[source]

Get the bot array

Returns:

bot – A 1D vector of cell bottom elevations of size nodes

Return type:

ndarray

get_cellxy(ncells)[source]
Parameters:

ncells (int) – Number of cells for which to create the list of cell centers

Returns:

cellxy – x and y cell centers. Shape is (ncells, 2)

Return type:

ndarray

get_center(nodenumber)[source]

Return the cell center x and y coordinates

Parameters:

nodenumber

Returns:

(x, y)

Return type:

tuple

get_cl12()[source]

Get the cl12 array

Returns:

cl12 – A 1D vector of the cell connection distances, which are from the center of cell n to its shared face will cell m

Return type:

ndarray

get_disu(model, nper=1, perlen=1, nstp=1, tsmult=1, steady=True, itmuni=4, lenuni=2)[source]

Create a MODFLOW-USG DISU flopy object.

Parameters:
  • model (Flopy model object) – The Flopy model object (of type flopy.modflow.mf.Modflow) to which this package will be added.

  • nper (int) – Number of model stress periods (default is 1).

  • perlen (float or array of floats (nper)) – A single value or array of the stress period lengths (default is 1).

  • nstp (int or array of ints (nper)) – Number of time steps in each stress period (default is 1).

  • tsmult (float or array of floats (nper)) – Time step multiplier (default is 1.0).

  • steady (boolean or array of boolean (nper)) – True or False indicating whether or not stress period is steady state (default is True).

  • itmuni (int) – Time units, default is days (4)

  • lenuni (int) – Length units, default is meters (2)

Returns:

disu

Return type:

Flopy ModflowDisU object.

get_fahl()[source]

Get the fahl array

Returns:

fahl – A 1D vector of the cell connection information, which is flow area for a vertical connection and horizontal length for a horizontal connection

Return type:

ndarray

get_fldr()[source]

Get the fldr array

Returns:

fldr – A 1D vector indicating the direction of the connection 1, 2, and 3 are plus x, y, and z directions. -1, -2, and -3 are negative x, y, and z directions.

Return type:

ndarray

get_gridprops_disu5()[source]

Get a dictionary of information needed to create a MODFLOW-USG DISU Package. The returned dictionary can be unpacked directly into the ModflowDisU constructor. The ja dictionary entry will be returned as zero-based.

Returns:

gridprops

Return type:

dict

get_gridprops_disu6(repair_asymmetry=True)[source]

Get a dictionary of information needed to create a MODFLOW 6 DISU Package. The returned dictionary can be unpacked directly into the ModflowGwfdisu constructor.

Parameters:

repair_asymmetry (bool) – MODFLOW 6 checks for symmetry in the hwva array, and round off errors in the floating point calculations can result in small errors. If this flag is true, then symmetry will be forced by setting the symmetric counterparts to the same value (the first one encountered).

Returns:

gridprops

Return type:

dict

get_gridprops_disv()[source]

Get a dictionary of information needed to create a MODFLOW 6 DISV Package. The returned dictionary can be unpacked directly into the ModflowGwfdisv constructor.

Returns:

gridprops

Return type:

dict

get_gridprops_unstructuredgrid()[source]

Get a dictionary of information needed to create a flopy UnstructuredGrid. The returned dictionary can be unpacked directly into the flopy.discretization.UnstructuredGrid() constructor.

Returns:

gridprops

Return type:

dict

get_gridprops_vertexgrid()[source]

Get a dictionary of information needed to create a flopy VertexGrid. The returned dictionary can be unpacked directly into the flopy.discretization.VertexGrid() constructor.

Returns:

gridprops

Return type:

dict

get_hwva(ja=None, ihc=None, fahl=None, top=None, bot=None)[source]

Get the hwva array

Parameters:
  • ja (ndarray) – Cell connectivity. If None, it will be read from gridgen output.

  • ihc (ndarray) – Connection horizontal indicator array. If None it will be read and calculated from gridgen output.

  • fahl (ndarray) – Flow area, horizontal width array required by MODFLOW-USG. If none then it will be read from the gridgen output. Default is None.

  • top (ndarray) – Cell top elevation. If None, it will be read from gridgen output.

  • bot (ndarray) – Cell bottom elevation. If None, it will be read from gridgen output.

Returns:

fahl – A 1D vector of the cell connection information, which is flow area for a vertical connection and horizontal length for a horizontal connection

Return type:

ndarray

get_iac()[source]

Get the iac array

Returns:

iac – A 1D vector of the number of connections (plus 1) for each cell

Return type:

ndarray

get_ihc(nodelay=None, ia=None, fldr=None)[source]

Get the ihc array

Parameters:
  • nodelay (ndarray) – Number of nodes in each layer. If None, then it is read from gridgen output.

  • ia (ndarray) – Starting location of a row in the matrix. If None, then it is read from gridgen output.

  • fldr (ndarray) – Flow direction indicator array. If None, then it is read from gridgen output.

Returns:

ihc – A 1D vector indicating the direction of the connection where 0 is vertical, 1 is a regular horizontal connection and 2 is a vertically staggered horizontal connection.

Return type:

ndarray

get_ivc(fldr=None)[source]

Get the MODFLOW-USG ivc array

Parameters:

fldr (ndarray) – Flow direction indicator array. If None, then it is read from gridgen output.

Returns:

ivc – A 1D vector indicating the direction of the connection where 1 is vertical and 0 is horizontal.

Return type:

ndarray

get_ja(nja=None)[source]

Get the zero-based ja array

Parameters:

nja (int) – Number of connections. If None, then it is read from gridgen output.

Returns:

ja – A 1D vector of the cell connectivity (one-based)

Return type:

ndarray

get_nlay()[source]

Get the number of layers

Returns:

nlay

Return type:

int

get_nod_recarray()[source]

Load the qtg.nod file and return as a numpy recarray

Returns:

node_ra – Recarray representation of the node file with zero-based indexing

Return type:

ndarray

get_nodelay()[source]

Return the nodelay array, which is an array of size nlay containing the number of nodes in each layer.

Returns:

nodelay – Number of nodes in each layer

Return type:

ndarray

get_nodes()[source]

Get the number of nodes

Returns:

nodes

Return type:

int

get_top()[source]

Get the top array

Returns:

top – A 1D vector of cell top elevations of size nodes

Return type:

ndarray

get_vertices(nodenumber)[source]

Return a list of 5 vertices for the cell. The first vertex should be the same as the last vertex.

Parameters:

nodenumber

Returns:

list of vertices

Return type:

list

get_verts_iverts(ncells, verbose=False)[source]

Return a 2d array of x and y vertices and a list of size ncells that has the list of vertices for each cell.

Parameters:
  • ncells (int) – The number of entries in iverts. This should be ncpl for a layered model and nodes for a disu model.

  • verbose (bool) – Print information as its working

Returns:

verts, iverts – verts is a 2d array of x and y vertex pairs (nvert, 2) and iverts is a list of vertices that comprise each cell

Return type:

tuple

static gridarray_to_flopyusg_gridarray(nodelay, a)[source]
intersect(features, featuretype, layer)[source]
Parameters:
  • features (str or list) – features can be either a string containing the name of a shapefile or it can be a list of points, lines, or polygons

  • featuretype (str) – Must be either ‘point’, ‘line’, or ‘polygon’

  • layer (int) – Layer (zero based) to intersect with. Zero based.

Returns:

result – Recarray of the intersection properties.

Return type:

np.recarray

plot(ax=None, layer=0, edgecolor='k', facecolor='none', cmap='Dark2', a=None, masked_values=None, **kwargs)[source]

Plot the grid. This method will plot the grid using the shapefile that was created as part of the build method.

Note that the layer option is not working yet.

Parameters:
  • ax (matplotlib.pyplot axis) – The plot axis. If not provided it, plt.gca() will be used. If there is not a current axis then a new one will be created.

  • layer (int) – Layer number to plot

  • cmap (string) – Name of colormap to use for polygon shading (default is ‘Dark2’)

  • edgecolor (string) – Color name. (Default is ‘scaled’ to scale the edge colors.)

  • facecolor (string) – Color name. (Default is ‘scaled’ to scale the face colors.)

  • a (numpy.ndarray) – Array to plot.

  • masked_values (iterable of floats, ints) – Values to mask.

  • kwargs (dictionary) – Keyword arguments that are passed to PatchCollection.set(**kwargs). Some common kwargs would be ‘linewidths’, ‘linestyles’, ‘alpha’, etc.

Returns:

pc

Return type:

matplotlib.collections.PatchCollection

static read_qtg_area_dat(model_ws: str | PathLike, nodes: int)[source]

Read qtg.area.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nodes (int) – Number of nodes

Return type:

np.ndarray

static read_qtg_cl_dat(model_ws: str | PathLike, nja: int)[source]

Read qtg.c1.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nja (int) – Number of connections

Return type:

np.ndarray

static read_qtg_fahl_dat(model_ws: str | PathLike, nja: int)[source]

Read qtg.fahl.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nja (int) – Number of connections

Return type:

np.ndarray

static read_qtg_fldr_dat(model_ws: str | PathLike, nja: int)[source]

Read qtg.fldr.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nja (int) – Number of connections

Return type:

np.ndarray

static read_qtg_iac_dat(model_ws: str | PathLike, nodes: int)[source]

Read qtg.iac.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nodes (int) – Number of nodes

Return type:

np.ndarray

static read_qtg_ja_dat(model_ws: str | PathLike, nja: int)[source]

Read qtg.ja.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nja (int) – Number of connections

Return type:

np.ndarray

static read_qtg_nod(model_ws: str | PathLike, nodes_only: bool = False)[source]

Read qtg.nod file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nodes_only (bool, optional) – Read only the number of nodes from file, by default False which reads the entire file

Return type:

int or numpy recarray

static read_qtg_nodesperlay_dat(model_ws: str | PathLike, nlay: int)[source]

Read qtgrid.shp file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nlay (int) – Number of layers

Return type:

np.ndarray

static read_qtgrid_shp(model_ws: str | PathLike)[source]

Read qtgrid.shp file

Parameters:

model_ws (Union[str, os.PathLike]) – Directory where file is stored

Return type:

shapefile

static read_quadtreegrid_bot_dat(model_ws: str | PathLike, nodelay: List[int], lay: int)[source]

Read quadtreegrid.bot_.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nodelay (list[int]) – Number of nodes in each layer

  • lay (int) – Layer

Return type:

np.ndarray

static read_quadtreegrid_top_dat(model_ws: str | PathLike, nodelay: List[int], lay: int)[source]

Read quadtreegrid.top_.dat file

Parameters:
  • model_ws (Union[str, os.PathLike]) – Directory where file is stored

  • nodelay (list[int]) – Number of nodes in each layer

  • lay (int) – Layer

Return type:

np.ndarray

resolve_shapefile_path(p)[source]
set_surface_interpolation(isurf, type, elev=None, elev_extent=None)[source]
Parameters:
  • isurf (int) – surface number where 0 is top and nlay + 1 is bottom

  • type (str) – Must be ‘INTERPOLATE’, ‘REPLICATE’ or ‘ASCIIGRID’.

  • elev (numpy.ndarray of shape (nr, nc) or str) – Array that is used as an asciigrid. If elev is a string, then it is assumed to be the name of the asciigrid.

  • elev_extent (list-like) – List of xmin, xmax, ymin, ymax extents of the elev grid. Must be specified for ASCIIGRID; optional otherwise.

Return type:

None

features_to_shapefile(features, featuretype, filename: str | PathLike)[source]

Write a shapefile for the features of type featuretype.

Parameters:
  • features (list) –

    point, line, or polygon features. Method accepts feature can be:

    a list of geometries flopy.utils.geometry.Collection object shapely.geometry.Collection object geojson.GeometryCollection object list of shapefile.Shape objects shapefile.Shapes object

  • featuretype (str) – Must be ‘point’, ‘line’, ‘linestring’, or ‘polygon’

  • filename (str or PathLike) – The shapefile to write (extension is optional)

Return type:

None

get_ia_from_iac(iac)[source]
get_isym(ia, ja)[source]
is_symmetrical(isym, a, atol=0)[source]
ndarray_to_asciigrid(fname: str | PathLike, a, extent, nodata=1e+30)[source]
read1d(f, a)[source]

Quick file to array reader for reading gridgen output. Much faster than the read1d function in util_array

repair_array_asymmetry(isym, a, atol=0)[source]