Edelman: sudden change in water level in a confined aquifer#

Example from Analyical Groundwater Modeling, ch. 5, p. 72.

import matplotlib.pyplot as plt
import numpy as np
import timflow.transient as tft

from bruggeman.edelman import h_edelman
h_edelman
\[\displaystyle \varphi = h \operatorname{erfc}{\left(\frac{\sqrt{\frac{S x^{2}}{T \left(t - t_{0}\right)}}}{2} \right)}\]
k = 10.0  # m/d, hydraulic conductivity
D = 10.0  # m, thickness of aquifer
S = 0.2  # -, storage coeffecient
Δh = 2.0  # m, rise in water level
t0 = 0.0  # time at which Δh is measured
mlconf = tft.ModelMaq(kaq=k, z=[0, -D], Saq=S, tmin=1, tmax=1e2, topboundary="phreatic")
hls = tft.River1D(mlconf, tsandh=[(0, Δh)], layers=[0])
mlconf.solve()
self.neq  1
solution complete
x = np.linspace(0, 200, 101)
y = np.zeros_like(x)
t = np.logspace(0, 2, 3)

plt.figure(figsize=(10, 3))
for i in range(len(t)):
    h = mlconf.headalongline(x, y, t[i])
    plt.plot(x, h.squeeze(), label=f"t={t[i]:.0f} d")
    ha = h_edelman(x, t[i], k * D, S, Δh, t0)
    plt.plot(x, ha, "k:")

plt.plot([], [], c="k", ls="dotted", label="Edelman")
plt.legend(loc=(0, 1), frameon=False, ncol=6, fontsize="small")
plt.xlabel("x [m]")
plt.ylabel("head [m]")
plt.grid()
../_images/a56a0af7b88b18ffb5b9b79c48f0ba01c503b40a39921dd8c7767825467d8edd.png