Groundwater Flow to Wells - II (pp. 162 - 166)

Leaky Confining Layer (No storage in the confining layer) A.K.A. Hantush (1956) Solution

Situation Set-Up and Mathematical Considerations

Leakance Considerations

Mathematical Model

Solutions

TWRI BOOK 3 Chapter B3 TYPE CURVES FOR SELECTED PROBLEMS OF FLOW TO WELLS IN CONFINED AQUIFERS (go to pg. 21)

def wh(u, rho): # Hantush Leaky aquifer well function
    import numpy
    """Returns Hantush's well function values

    Note: works only for scalar values of u and rho

    Parameters:
    -----------
    u : scalar  (u= r^2 * S / (4 * kD * t))
    rho : sclaar (rho =r / lambda, lambda = sqrt(kD * c))
    Returns:
    --------
    Wh(u, rho) : Hantush well function value for (u, rho)
    """
    try:
        u =float(u)
        rho =float(rho)
    except:
        print("u and rho must be scalars.")
        raise ValueError()

    LOGINF = 2
    y = numpy.logspace(numpy.log10(u), LOGINF, 1000)
    ym = 0.5 * (y[:-1]+  y[1:])
    dy = numpy.diff(y)
    wh = numpy.sum(numpy.exp(-ym - (rho / 2)**2 / ym ) * dy / ym)
    return wh

wh(0.625,5)
0.007379841673127564

Example on pg. 165 to illustrate homebrew script

The relevant problem parametrs are:

  • \(K = 0.73 m/d\)

  • \(b = 5.2 m\)

  • \(T = Kb = 3.8 m^2/d\)

  • \(S = 0.0035\)

  • \(Q_w = 28 m^3/d\)

  • \(b' = 1.1 m\)

  • \(K'_v = 5.5 \times 10^{-5} m/d\)

Notice in the example the author tests some requesite assumptions before proceeding to look up values in a table (also a good idea here, but we will just be lazy and apply the script)

def leaky(radius,time,storage,transmissivity,discharge,leakance): # Leaky drawdown function using Hantush solution
    import math
    u = ((radius**2)*(storage))/(4*transmissivity*time)
    roB = radius/leakance
    leaky = ((discharge)/(4*math.pi*transmissivity))*wh(u,roB)
    return(leaky)
import math
radius=[1.5,5.5,10,25,75,150]
ddn=[0 for i in range(len(radius))] # list of zeros to hold results
# simulation constants
time = 1 # 1 day
transmissivity = 3.8
storage = 0.0035
discharge = 28
bprime = 1.1
Kvert = 5.5e-05
# computed constants
B = math.sqrt((transmissivity*bprime)/Kvert)
# compute the drawdowns
for i in range(len(radius)):
    ddn[i]=leaky(radius[i],time,storage,transmissivity,discharge,B)
# print results
print("radius    drawdown   ")
for i in range(len(radius)):
    print(round(radius[i],1),round(ddn[i],3))
radius    drawdown   
1.5 4.089
5.5 2.57
10 1.879
25 0.874
75 0.079
150 0.001

Leaky Confining Layer (No storage in the confining layer)

Situation Set-Up and Mathematical Considerations

Leakance Considerations

Mathematical Model

Solutions

TWRI BOOK 3 Chapter B3 TYPE CURVES FOR SELECTED PROBLEMS OF FLOW TO WELLS IN CONFINED AQUIFERS (go to pg. 28)

Usually solutions are approximated for early-time, mid-time, and late-time behavior and use combinations of Theis solutions and finite-term series. The actual integral can certainly be evaluated if needed, but modern (circa-2023) approaches would probably be to finite-difference the crap out of things and take the numerical solution as good enough!