Skip to content

Basal boundaries

Drainage capacity and basal boundary assumptions.

Practical basal-boundary models.

The classes in this module represent two useful end-member concepts:

  • InfiniteDrainageBoundary: a pervious/semi-infinite basal domain with high drainage capacity.
  • FinitePerchedBoundary: a finite or restrictive basal domain that promotes perched-water buildup and water-table rise.

Both boundaries expose the same methods, so notebooks can compare them easily.

BasalBoundary dataclass

Base class for practical basal-boundary behavior.

Parameters:

Name Type Description Default
drainage_efficiency float

Multiplier in [0, 1] controlling effective basal drainage capacity, not the fraction of incoming water that drains. Higher values increase capacity. Even 1 does not prevent accumulation if input exceeds capacity.

required
name str

Descriptive boundary name used in result metadata.

required

has_finite_base property

has_finite_base: bool

Whether maximum_depth represents a finite restrictive base.

drainage_capacity

drainage_capacity(hydro: HydraulicProperties) -> float

Return effective drainage capacity in m/s.

This capacity adapts Baum et al. (2010), Eqs. (10a)--(10c), using the sign correction to Eq. (10a) in Baum and Godt (2013):

q_capacity = eta * Ks * sin(slope)**2

where eta is drainage_efficiency. This external capacity assumption is retained in both equation sets; it is not re-derived from the selected reconstructed pressure gradient.

excess_flux

excess_flux(basal_flux: ndarray, hydro: HydraulicProperties) -> np.ndarray

Return the part of basal flux that accumulates instead of draining.

positive_pressure

positive_pressure(z: ndarray, *, hydro: HydraulicProperties, water_table_depth: float) -> np.ndarray

Pressure head below a moving water table.

Algebraic form of Baum et al. (2010), Eq. (3b), and Baum et al. (2008), Eq. (3B), extended beyond their initially upward-flow case using the selected background gradient. This is not saturated diffusion.

z_w is the current water-table depth, measured downward. Above the water table the returned pressure is zero. Below the water table:

psi = beta * (z - z_w)

InfiniteDrainageBoundary dataclass

Bases: BasalBoundary

Pervious/semi-infinite basal boundary.

This boundary represents efficient drainage into a deep or highly pervious domain. In most moderate rainfall cases, little or no water-table rise is produced because drainage capacity is high.

FinitePerchedBoundary dataclass

Bases: BasalBoundary

Finite/restrictive basal boundary.

This boundary represents a lower-permeability contact or finite saturated layer that restricts drainage and promotes perched-water accumulation.