import matplotlib.pyplot as plt
import numpy as np

import timflow.transient as tft

plt.rcParams["font.size"] = 8.0

Circular area-sink#

Circular area-sink with radius 100 m, located at the origin.

N = 0.001
R = 100
ml = tft.ModelMaq(kaq=5, z=[10, 0], Saq=2e-4, tmin=1e-3, tmax=1e4)
ca = tft.CircAreaSink(ml, 0, 0, 100, tsandN=[(0, 0.001)])
ml.solve()
ml.plots.head_along_line(-200, 200, 0, 0, t=[0.1, 1, 10], figsize=(8, 3), sstart=-200);
self.neq  0
No unknowns. Solution complete
../../_images/833624475200ae0185990ebb04f80767bebd385db0efaa0dac113059ea1096bf.png
plt.figure(figsize=(8, 3))
x = np.linspace(-200, 200, 200)
qx = np.zeros_like(x)
for t in [0.1, 1, 10]:
    for i in range(len(x)):
        qx[i] = ml.disvec(x[i], 1e-6, t)[0].item()
    plt.plot(x, qx, label="time is " + str(t))
qxb = N * np.pi * R**2 / (2 * np.pi * R)
plt.axhline(qxb, color="r", ls="--")
plt.axhline(-qxb, color="r", ls="--")
plt.xlabel("x (m)")
plt.ylabel("Qx (m^2/d)")
plt.legend(loc="best")
plt.grid()
../../_images/a2abb74fb66134e381f7a0aadd950baf1b440c02ede77ff7738a77f438da93b5.png

Circular area-sink and well#

Discharge of well is the same as total infiltration rate of the circular area-sink. Well and center of area-sink area located at equal distances from \(y\)-axis, so that the head remains zero along the \(y\)-axis. Solution approaches steady-state solution.

N = 0.001
R = 100
Q = N * np.pi * R**2
ml = tft.ModelMaq(kaq=5, z=[10, 0], Saq=2e-4, tmin=1e-3, tmax=1e4, M=10)
ca = tft.CircAreaSink(ml, -200, 0, 100, tsandN=[(0, 0.001)])
w = tft.Well(ml, 200, 0, rw=0.1, tsandQ=[(0, Q)])
ml.solve()
self.neq  1
solution complete
ml.plots.head_along_line(
    -400, 300, 0, 0, t=[0.1, 1, 10, 100, 1000], figsize=(8, 3), sstart=-400
);
../../_images/24d086a60425fd118f442e6079a7b70ff0afbd5977c3e8d3b7c3e5351a00c018.png
t = np.logspace(-3, 4, 100)
h = ml.head(-200, 0, t)
plt.figure(figsize=(8, 3))
plt.semilogx(t, h[0])
plt.xlabel("time")
plt.ylabel("head")
plt.title("head at center of area-sink")
plt.grid()
../../_images/a57c03650482a8f196949720c5e4247820fec39e497fbe6daedddde55ca1502b.png
N = 0.001
R = 100
Q = N * np.pi * R**2
ml = tft.ModelMaq(kaq=5, z=[10, 0], Saq=2e-4, tmin=10, tmax=100, M=10)
ca = tft.CircAreaSink(ml, -200, 0, 100, tsandN=[(0, 0.001)])
w = tft.Well(ml, 200, 0, rw=0.1, tsandQ=[(0, Q)])
ml.solve()
ml.plots.contour([-300, 300, -200, 200], ngr=40, t=20, labels=False);
self.neq  1
solution complete
../../_images/3f3862cd847fea985ce16e9e55927c6c04a94953af5d992558cb003efc13aaae.png

Two layers#

Discharge of well is the same as total infiltration rate of the circular area-sink. Center of area-sink and well are at the origin. Circular area-sink in layer 0, well in layer 1.

N = 0.001
R = 100
Q = N * np.pi * R**2
ml = tft.ModelMaq(
    kaq=[5, 20],
    z=[20, 12, 10, 0],
    c=[1000],
    Saq=[2e-4, 1e-4],
    tmin=1e-3,
    tmax=1e4,
    M=10,
)
ca = tft.CircAreaSink(ml, 0, 0, 100, tsandN=[(0, 0.001)])
w = tft.Well(ml, 0, 0, rw=0.1, tsandQ=[(0, Q)], layers=1)
ml.solve()
self.neq  1
solution complete
ml.plots.head_along_line(
    -200, 200, 0, 0, t=[0.1, 100], layers=[0, 1], sstart=-200, figsize=(8, 3)
);
../../_images/e34589721c44a91dac0126cb4fd4315b75eba5e7fc46d3e1a3c2884b67c91244.png
ml.plots.head_along_line(
    -500, 500, 0, 0, t=[0.1, 100, 1000], layers=[0, 1], sstart=-500, figsize=(8, 3)
);
../../_images/1053e27df5a4c7745cb8742d6ea1c6f0b0e2b1694ddc3b05b24bf99e548c1793.png