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:
XsectionCross-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