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/23a6c2dc92a7b5e6170538ed7ed9a97fb99ebb0e7ee5894abfe1948d77bacf85.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/f3c2d1b7cdd754639918d6ea92fc892b4d827f7497b3efe7e0eaa663863bdae5.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/5a35fb200e3f9248122c615159f1beb0d720ee03152a74bddce6866bb4260f85.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/a8815dc2b3a8e4ca2270690bd67ae6cf79ab8db788e653f97f38b5e27bb1a88e.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/d5ee294419166abf1e2823c78d4a286bcd16b264629234df9bf7f5fbd9050a98.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/33df4808cbef6cfedfb80cb38036c6bd624cf7485e6931626ae8e3caa0ace6a1.png
ml.plots.head_along_line(
    -500, 500, 0, 0, t=[0.1, 100, 1000], layers=[0, 1], sstart=-500, figsize=(8, 3)
);
../../_images/87dbff3afb73ae33b51230344d327436ad0a25ca0d9456560d9e3c9b47a5074d.png