Xsection3D#

class timflow.transient.inhom1d.Xsection3D(model, x1, x2, kaq=1, z=(4, 3, 2, 1), Saq=0.001, kzoverkh=0.1, leffaq=0, poraq=0.3, topboundary='conf', phreatictop=None, topres=0, topthick=0, topSll=0, toppor=0.3, tsandhstar=None, tsandN=None, name=None)#

Bases: Xsection

Cross-section inhomogeneity consisting of stacked aquifer layers.

Vertical resistance is computed from vertical hydraulic conductivity and the anisotropy factor.

Parameters:
  • model (Model) – Model to add the cross-section to, usually an instance of ModelXsection.

  • x1 (scalar) – x-coordinate of the left boundary of the cross-section.

  • x2 (scalar) – x-coordinate of the right boundary of the cross-section.

  • kaq (array) – Hydraulic conductivities of the aquifers.

  • z (array) – Elevations of the tops and bottoms of the layers.

  • Saq (array) – Specific storage of the aquifers.

  • kzoverkh (scalar) – Ratio of vertical hydraulic conductivity to horizontal hydraulic conductivity.

  • leffaq (array) – Loading efficiency

  • poraq (array) – Porosities of the aquifers.

  • topboundary (string, 'confined', 'phreatic', or 'semi' (default is 'conf')) – indicating whether the top is confined (‘con’ is enough), phreatic (‘phr’ is enough) or semi-confined (‘sem’ is enough). When ‘phreatic’, the storage coefficient (Saq) of the top model layer is treated as phreatic storage (and not multiplied with the aquifer thickness) When ‘semi’, the topres and topthick must be specified.

  • topres (scalar) – Resistance of the top boundary. Only used if topboundary is ‘leaky’.

  • topthick (scalar) – Thickness of the top boundary. Only used if topboundary is ‘leaky’.

  • topSll (scalar) – Specific storage of the top boundary. Only used if topboundary is ‘leaky’.

  • toppor (scalar) – Porosity of the top boundary. Only used if topboundary is ‘leaky’.

  • tsandhstar (list of tuples) – list containing time and water level pairs for the hstar boundary condition.

  • tsandN (list of tuples) – list containing time and infiltration pairs for the infiltration boundary condition.

  • name (str) – Name of the cross-section.

is_inside(x, _)#

Check if a point is inside the cross-section.

Parameters:

x (float) – x-coordinate of the point.

Returns:

True if the point is inside the cross-section, False otherwise.

Return type:

bool

create_elements()#

Create linesinks to meet the continuity conditions the at the boundaries.

plot(ax=None, labels: bool = False, params: bool = False, names: bool = False, fmt: str | None = None, sep: Literal[', ', '\n'] = ', ', units: dict = 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, optional) – format string for parameter values, e.g. ‘.2f’ for 2 decimals.

  • sep (str, optional) – Separator between parameters, either “, “ or “n”

  • 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”, “Saq”: “m$^{-1}$”, “Sll”: “m$^{-1}$”}.

  • 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’}

  • sep – Separator between parameters, either “, “ or “n”

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

initialize()#

Initialize the aquifer data.

eigval[naq, npval]#

Array with eigenvalues

lab[naq, npval]#

Array with lambda values

lab2[naq, nint, npint]#

Array with lambda values reorganized per interval

eigvec[naq, naq, npval]#

Array with eigenvector matrices

coef[naq, naq, npval]#

Array with coefficients coef[ilayers, :, np] are the coefficients if the element is in ilayers belonging to Laplace parameter number np.

in_which_layer(z)#

Get layer given elevation z.

Returns -9999 if above top of system, +9999 if below bottom of system, negative for in leaky layer.

leaky layer -n is on top of aquifer n

findlayer(z)#

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