imod.mf6.LayeredWell#

class imod.mf6.LayeredWell(*_, **__)[source]#

Agnostic WEL package, which accepts x, y and layers.

This package can be written to any provided model grid, given that it has enough layers. Any number of WEL Packages can be specified for a single groundwater flow model. https://water.usgs.gov/water-resources/software/MODFLOW-6/mf6io_6.0.4.pdf#page=63

Parameters:
  • y (list of floats or np.array of floats) – is the y location of the well.

  • x (list of floats or np.array of floats) – is the x location of the well.

  • layer (list of ints or np.array of ints) – is the layer of the well.

  • rate (list of floats or xr.DataArray) – is the volumetric well rate. A positive value indicates well (injection) and a negative value indicates discharge (extraction) (q). If provided as DataArray, an "index" dimension is required and an optional "time" dimension and coordinate specify transient input. In the latter case, it is important that dimensions are in the order: ("time", "index")

  • concentration (array of floats (xr.DataArray, optional)) – if this flow package is used in simulations also involving transport, then this array is used as the concentration for inflow over this boundary.

  • concentration_boundary_type (({"AUX", "AUXMIXED"}, optional)) – if this flow package is used in simulations also involving transport, then this keyword specifies how outflow over this boundary is computed.

  • id (list of Any, optional) – assign an identifier code to each well. if not provided, one will be generated Must be convertible to string, and unique entries.

  • minimum_k (float, optional) – on creating point wells, no point wells will be placed in cells with a lower horizontal conductivity than this

  • minimum_thickness (float, optional) – on creating point wells, no point wells will be placed in cells with a lower thickness than this

  • print_input (({True, False}, optional)) – keyword to indicate that the list of well information will be written to the listing file immediately after it is read. Default is False.

  • print_flows (({True, False}, optional)) – Indicates that the list of well flow rates will be printed to the listing file for every stress period time step in which “BUDGET PRINT” is specified in Output Control. If there is no Output Control option and PRINT FLOWS is specified, then flow rates are printed for the last time step of each stress period. Default is False.

  • save_flows (({True, False}, optional)) – Indicates that well flow terms will be written to the file specified with “BUDGET FILEOUT” in Output Control. Default is False.

  • observations ([Not yet supported.]) – Default is None.

  • validate ({True, False}) – Flag to indicate whether the package should be validated upon initialization. This raises a ValidationError if package input is provided in the wrong manner. Defaults to True.

  • repeat_stress (Optional[xr.DataArray] of datetimes) – Used to repeat data for e.g. repeating stress periods such as seasonality without duplicating the values. The DataArray should have dimensions ("repeat", "repeat_items"). The repeat_items dimension should have size 2: the first value is the “key”, the second value is the “value”. For the “key” datetime, the data of the “value” datetime will be used. Can also be set with a dictionary using the set_repeat_stress method.

Examples

>>> layer = [1, 2]
>>> y = [83.0, 77.0]
>>> x = [81.0, 82.0]
>>> rate = [1.0, 1.0]
>>> imod.mf6.LayeredWell(x, y, layer, rate)

For a transient well:

>>> weltimes = pd.date_range("2000-01-01", "2000-01-03")
>>> rate_factor_time = xr.DataArray([0.5, 1.0], coords={"time": weltimes}, dims=("time",))
>>> rate_transient = rate_factor_time * xr.DataArray(rate, dims=("index",))
>>> imod.mf6.LayeredWell(x, y, layer, rate_transient)
__init__(x: ndarray | list[float], y: ndarray | list[float], layer: ndarray | list[int], rate: list[float] | DataArray, concentration: list[float] | DataArray | None = None, concentration_boundary_type='aux', id: list[Any] | None = None, minimum_k: float = 0.1, minimum_thickness: float = 1.0, print_input: bool = False, print_flows: bool = False, save_flows: bool = False, observations=None, validate: bool = True, repeat_stress: DataArray | None = None)[source]#

Methods

__init__(x, y, layer, rate[, concentration, ...])

cleanup(dis)

clip_box([time_min, time_max, layer_min, ...])

Clip a package by a bounding box (time, layer, y, x).

copy()

from_file(path, **kwargs)

Loads an imod mf6 package from a file (currently only netcdf and zarr are supported).

from_imod5_cap_data(imod5_data)

Create LayeredWell from imod5_data in "cap" package.

from_imod5_data(key, imod5_data, times[, ...])

Convert wells to imod5 data, loaded with imod.formats.prj.open_projectfile_data(), to a Well object.

gather_filtered_well_ids(well_data_filtered, ...)

get_non_grid_data(grid_names)

This function copies the attributes of a dataset that are scalars, such as options.

get_period_varnames()

get_regrid_methods()

is_clipping_supported()

is_empty()

Returns True if the package is empty- for example if it contains only no-data values.

is_grid_agnostic_package()

is_regridding_supported()

is_splitting_supported()

isel()

mask(domain)

Mask wells based on two-dimensional domain.

regrid_like(target_grid, regrid_cache[, ...])

Creates a package of the same type as this package, based on another discretization.

render(directory, pkgname, globaltimes, binary)

Render fills in the template only, doesn't write binary data

sel()

set_repeat_stress(times)

Set repeat stresses: re-use data of earlier periods.

to_mf6_package_information(filtered_wells, ...)

to_mf6_pkg(active, top, bottom, k[, ...])

Write package to Modflow 6 package.

to_netcdf(*args[, mdal_compliant, crs])

Write dataset contents to a netCDF file.

write(pkgname, globaltimes, directory[, ...])

Write package to file

write_binary_griddata(outpath, da, dtype)

write_blockfile(pkgname, globaltimes, ...)

write_text_griddata(outpath, da, dtype)

Attributes

auxiliary_data_fields

dataset

x

y