Xsection3D#

class timflow.steady.inhomogeneity1d.Xsection3D(model, x1, x2, kaq, z=None, kzoverkh=1, npor=0.3, topboundary='conf', hstar=None, topres=None, topthick=0.0, N=None, name=None)#

Bases: Xsection

Cross-section inhomogeneity consisting of stacked aquifer layers.

The resistance between the layers is computed from the vertical hydraulic conductivity of the layers.

Parameters:
  • model (Model object) – model to which the element is added

  • x1 (float) – left boundary of inhomogeneity (may be -np.inf if extends to infinity)

  • x2 (float) – right boundary of inhomogeneity (may be np.inf if extends to infinity)

  • kaq (float, array or list) – hydraulic conductivity of each layer from the top down if float, hydraulic conductivity is the same in all aquifers

  • z (array or list) – elevation of top of system followed by bottoms of all layers from the top down bottom of layer is automatically equal to top of layer below it if topboundary=’conf’: length is number of layers + 1 if topboundary=’semi’: length is number of layers + 2 as top of leaky layer on top of systems needs to be specified

  • kzoverkh (float) – vertical anisotropy ratio vertical k divided by horizontal k if float, value is the same for all layers length is number of layers

  • npor (float, array or list) – porosity of all aquifer layers from the top down if float, porosity is the same for all layers if topboundary=’conf’: length is number of layers if topboundary=’semi’: length is number of layers + 1

  • topboundary (string, 'conf' or 'semi' (default is 'conf')) – indicating whether the top is confined (‘conf’) or semi-confined (‘semi’)

  • topres (float) – resistance of top semi-confining layer, only read if topboundary=’semi’

  • topthick (float) – thickness of top semi-confining layer, only read if topboundary=’semi’

  • hstar (float or None (default is None)) – head value above semi-confining top, only read if topboundary=’semi’

  • N (float (default is None)) – infiltration rate, only read if topboundary=’conf’

  • name (string, optional) – name of the inhomogeneity

plot(ax=None, labels: bool = False, params: bool = False, names: bool = False, fmt: str | None = None, units: dict | None = None, layer_names: tuple | dict = ('aquifer', 'leaky layer'), ha: str = 'center', **kwargs)#

Plot the cross-section.

Parameters:
  • ax (plt.Axes, optional) – Axis to plot the cross-section on. If None, a new axis will be created.

  • labels (bool, optional) – If True, add layer-name labels.

  • params (bool, optional) – If True, add parameter labels.

  • names (bool, optional) – If True, add inhomogeneity names.

  • fmt (str) – format string for parameters

  • units (dict, optional) – Dictionary with units for parameters, only used if params is True. Use timflow parameter names as keys e.g. {“kaq”: “m/d”, “c”: “d”}.

  • layer_names (tuple or dict, optional) – names for aquifers and leaky layers, default is (‘aquifer’, ‘leaky layer’). If a dict is provided, it maps layer type and number to a name, e.g. {‘aquifer 0’: ‘top aquifer’, ‘leaky layer 1’: ‘clay layer’

  • ha (str, optional) – Horizontal alignment for parameter labels. Defaults to “center”.

findlayer(z)#

Returns layer-number, layer-type and model-layer-number.

summary()#

Get summary of aquifer parameters.

Returns:

Summary of aquifer parameters including layer type, thickness, hydraulic conductivity, and resistance.

Return type:

pd.DataFrame