XsectionMaq#

class timflow.transient.inhom1d.XsectionMaq(model, x1, x2, kaq=1, z=(1, 0), c=(), Saq=0.001, Sll=0, leffaq=0, poraq=0.3, porll=0.3, topboundary='conf', phreatictop=None, tsandhstar=None, tsandN=None, name=None)#

Bases: Xsection

Cross-section inhomogeneity consisting of stacked aquifer layers.

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

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

  • x2 (float) – 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.

  • c (array) – Resistance of the leaky layers.

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

  • Sll (array) – Specific storage of the leaky layers.

  • leffaq (array) – loading efficiency of the aquifer

  • poraq (array) – Porosities of the aquifers.

  • porll (array) – Porosities of the leaky layers.

  • topboundary (string, 'confined', 'phreatic', 'semi', or 'leaky' (default is 'conf')) – indicating whether the top is confined (‘con’ is enough), phreatic (‘phr’ is enough), semi-confined (‘sem’ is enough), or a leaky layer (‘lea’ 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)

  • 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.