Recharge in a circular area#

This notebook demonstrates how to model a circular area with constant recharge or extraction using the CircAreaSink element.

import matplotlib.pyplot as plt
import numpy as np

import timflow.steady as tfs

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

N = 0.001
R = 100
ml = tfs.ModelMaq(kaq=5, z=[10, 0])
ca = tfs.CircAreaSink(ml, xc=0, yc=0, R=100, N=0.001)
ml.solve()
x = np.linspace(-200, 200, 100)
h = ml.headalongline(x, 0)
plt.plot(x, h[0]);
Number of elements, Number of equations: 1 , 0
No unknowns. Solution complete
../../_images/e937bffca1af8f0dea980285b920cfaf7bf87e62b5151118d480a75279a99d4c.png
qx = np.zeros_like(x)
for i in range(len(x)):
    qx[i], qy = ml.disvec(x[i], 1e-6)
plt.plot(x, qx)
qxb = N * np.pi * R**2 / (2 * np.pi * R)
plt.axhline(qxb, color="r", ls="--")
plt.axhline(-qxb, color="r", ls="--");
/tmp/ipykernel_1136/4090603064.py:3: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)
  qx[i], qy = ml.disvec(x[i], 1e-6)
../../_images/e422721f7d08b67f3e2490f6676280a505da1f0684a38e8595c02f15d6474d9f.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 = tfs.ModelMaq(kaq=5, z=[10, 0])
ca = tfs.CircAreaSink(ml, xc=-200, yc=0, R=100, N=0.001)
w = tfs.Well(ml, 200, 0, Qw=Q, rw=0.1)
ml.solve()
x = np.linspace(-400, 300, 100)
h = ml.headalongline(x, 0)
plt.plot(x, h[0]);
Number of elements, Number of equations: 2 , 0
No unknowns. Solution complete
../../_images/eced2edf930049f041c86de2a439c348cecbb2f2c40b472b809aee7823b01c98.png
N = 0.001
R = 100
Q = N * np.pi * R**2
ml = tfs.ModelMaq(kaq=5, z=[10, 0])
ca = tfs.CircAreaSink(ml, xc=-200, yc=0, R=100, N=0.001)
w = tfs.Well(ml, 200, 0, Qw=Q, rw=0.1)
ml.solve()
ml.plots.contour([-300, 300, -200, 200], ngr=40)
Number of elements, Number of equations: 2 , 0
No unknowns. Solution complete
<Axes: >
../../_images/7ee7322d39d7a13dfb2708a99d0310d8610c6bacea597bda9de00bcb970da050.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 = tfs.ModelMaq(kaq=[5, 20], z=[20, 12, 10, 0], c=[1000])
ca = tfs.CircAreaSink(ml, xc=0, yc=0, R=100, N=0.001)
w = tfs.Well(ml, 0, 0, Qw=Q, rw=0.1, layers=1)
rf = tfs.Constant(ml, 1000, 0, 0)
ml.solve()
x = np.linspace(-200, 200, 100)
h = ml.headalongline(x, 0)
plt.plot(x, h[0])
plt.plot(x, h[1]);
Number of elements, Number of equations: 3 , 1
.
.
.

solution complete
../../_images/17061b0513f3cb48642d2ad97bcd00fbc827936d30ed0e73f12ff06cff49ba1c.png
x = np.linspace(-1000, 1000, 101)
h = ml.headalongline(x, 0)
plt.plot(x, h[0])
plt.plot(x, h[1]);
../../_images/f39b68900236fa47ce6835b219ad9b3ee537eed6b357fda17e321d526a1c8d7f.png