Solutions
Python modules for computing analytical solutions for drawdown and depletion for a pumping well near a stream. Multiple solutions for both drawdown and depletion are included. Some solutions assume a single aquifer and others account for streambed resistance or two aquifers vertically separated by an aquitard.
- pycap.solutions.WardLoughDepletion(T1, S1, t, dist, Q, T2, S2, width, streambed_thick, streambed_K, aquitard_thick, aquitard_K, x=0, y=0, NSteh1=2, **kwargs)[source]
Compute streamflow depletion using Ward and Lough (2011) solution
Ward and Lough (2011) presented a solution for streamflow depletion by a pumping well in a layered aquifer system. The stream is in the upper aquifer, and the pumping well is in a lower aquifer that is separated from the upper aquifer by a semi-confining aquitard layer.
Ward, N.D.,and Lough, H., 2011, Stream depletion from pumping a semiconfined aquifer in a two-layer leaky aquifer system (techical note): Journal of Hydrologic Engineering ASCE, v. 16, no. 11, pgs. 955-959, https://doi.org/10.1061/(ASCE)HE.1943-5584.0000382.
- Parameters
- T: float
transmissivity [L**2/T]
- storage [unitless]
specific yield in the upper q aquifer
- time: float, optionally np.array or list
time at which to calculate results [T]
- dist: float, optionally np.array or list
distance at which to calculate results in [L]
- Q: float
pumping rate (+ is extraction) [L**3/T]
- **kwargs: included to all depletion methods for extra values required in some calls
- Returns
- Qs: float
streamflow depletion rate, optionally np.array or list depending on input of time and dist [L**3/T]
- Other Parameters
- T2: float
Transmissivity of deeper system
- S2: float
Storativity of
- streambed_thick: float
thickness of streambed
- streambed_K: float
hydraulic conductivity of streambed, [L/T]
- aquitard_thick: float
thickness of intervening leaky aquitard, [L]
- aquitard_K: float
hydraulic conductivity of intervening leaky aquifer, [L/T]
- x: float
x-coordinate of drawdown location (with origin being x=0 at stream location) [L]
- y: float
y-coordinate of drawdown location (with origin being y=0 at pumping well location) [L]
- NSteh1: int
Number of Stehfest series levels - algorithmic tuning parameter. Defaults to 2.
- width: float
stream width (b in paper) [L]
- pycap.solutions.WardLoughDrawdown(T1, S1, t, dist, Q, T2, S2, width, streambed_thick, streambed_K, aquitard_thick, aquitard_K, x, y, NSteh1=2, NSteh2=2, **kwargs)[source]
Compute drawdown using Ward and Lough (2011) solution
Ward and Lough (2011) presented a solution for streamflow depletion by a pumping well in a layered aquifer system. The stream is in the upper aquifer, and the pumping well is in a lower aquifer that is separated from the upper aquifer by a semi-confining aquitard layer.
Ward, N.D.,and Lough, H., 2011, Stream depletion from pumping a semiconfined aquifer in a two-layer leaky aquifer system (technical note): Journal of Hydrologic Engineering ASCE, v. 16, no. 11, pgs. 955-959, https://doi.org/10.1061/(ASCE)HE.1943-5584.0000382.
- Parameters
- T: float
Transmissivity in the upper aquifer [L**2/T] (K*D or T1 in the original paper)
- S: float
Specific yield for upper aquifer [unitless] (S1 in the original paper)
- t: float, optionally np.array or list
time at which to calculate results [T]
- dist: Distance between pumping well and stream [L]
(L in the original paper)
- Q: float
pumping rate (+ is extraction) [L**3/T]
- **kwargs: included to all drawdown methods for extra values required
in some calls
- Returns
- ——-
- ddwn float, 2-column ndarray
drawdown at specified location [L] in the shallow aquifer (column 0) and the deeper aquifer (column 1)
- Other Parameters
- T2: float
Transmissivity of deeper system
- S2: float
Storativity of
- streambed_thick: float
thickness of streambed
- streambed_K: float
hydraulic conductivity of streambed, [L/T]
- aquitard_thick: float
thickness of intervening leaky aquitard, [L]
- aquitard_K: float
hydraulic conductivity of intervening leaky aquifer, [L/T]
- x: float
x-coordinate of drawdown location (with origin being x=0 at stream location) [L]
- y: float
y-coordinate of drawdown location (with origin being y=0 at pumping well location) [L]
- NSteh1: int
Number of Stehfest series levels - algorithmic tuning parameter. Defaults to 2.
- NStehl2: int
Number of Stehfest series levels - algorithmic tuning parameter. Defaults to 2.
- width: float
stream width (b in paper) [L]
- pycap.solutions.glover(T, S, time, dist, Q, **kwargs)[source]
Calculate Glover and Balmer (1954) solution for stream depletion
Depletion solution for a well near a river where the river fully penetrates the aquifer and there is no streambed resistance.
Glover, R.E. and Balmer, G.G., 1954, River depletion from pumping a well near a river, Eos Transactions of the American Geophysical Union, v. 35, no. 3, pg. 468-470, https://doi.org/10.1029/TR035i003p00468.
- Parameters
- T: float
transmissivity [L**2/T]
- S: float
storage [unitless]
- time: float, optionally np.array or list
time at which to calculate results [T]
- dist: float, optionally np.array or list
distance at which to calculate results in [ft]
- Q: float
pumping rate (+ is extraction) [L**3/T]
- **kwargs: included to all depletion methods for extra values required in some calls
- Returns
- drawdown: float
depletion values at at input parameter times/distances
- pycap.solutions.hunt2003(T, S, time, dist, Q, Bprime, Bdouble, aquitard_K, sigma, width, streambed_conductance, **kwargs)[source]
Function for Hunt (2003) solution for streamflow depletion by a pumping well.
Computes streamflow depletion by a pumping well in a semiconfined aquifer for a partially penetrating stream. The stream is in an upper semi-confining aquifer and pumping is in a lower aquifer.
Hunt, B., 2003, Unsteady streamflow depletion when pumping from semiconfined aquifer: Journal of Hydrologic Engineering, v.8, no. 1, pgs 12-19. https://doi.org/10.1061/(ASCE)1084-0699(2003)8:1(12)
- Parameters
- T: float
transmissivity [L**2/T]
- S: float
storage [unitless]
- time: float, optionally np.array or list
time at which to calculate results [T]
- dist: float, optionally np.array or list
distance at which to calculate results in [L]
- Q: float
pumping rate (+ is extraction) [L**3/T]
- **kwargs: included to all depletion methods for extra values required in some calls
- Returns
- Qs: float
streamflow depletion rate, optionally np.array or list depending on input of time and dist [L**3/T]
- Other Parameters
- Bprime: float
saturated thickness of semiconfining layer containing stream, [L]
- Bdouble: float
distance from bottom of stream to bottom of semiconfining layer, [L] (aquitard thickness beneath the stream)
- aquitard_K: float
hydraulic conductivity of semiconfining layer [L/T]
- sigma: float
porosity of semiconfining layer
- width: float
stream width (b in paper) [T]
- streambed_conductance: float
streambed conductance [L/T] (lambda in the paper), only used if K is less than 1e-10
- pycap.solutions.hunt99(T, S, time, dist, Q, streambed_conductance, **kwargs)[source]
Function for Hunt (1999) solution for streamflow depletion by a pumping well.
Computes streamflow depletion by a pumping well for a partially penetrating stream with streambed resistance.
Hunt, B., 1999, Unsteady streamflow depletion from ground water pumping: Groundwater, v. 37, no. 1, pgs. 98-102, https://doi.org/10.1111/j.1745-6584.1999.tb00962.x
- Parameters
- T: float
transmissivity [L**2/T]
- S: float
storage [unitless]
- time: float, optionally np.array or list
time at which to calculate results [T]
- dist: float, optionally np.array or list
distance at which to calculate results in [L]
- Q: float
pumping rate (+ is extraction) [L**3/T]
- **kwargs: included to all depletion methods for extra values required in some calls
- Returns
- Qs: float
streamflow depletion rate, optionally np.array or list depending on input of time and dist [L**3/T]
- Other Parameters
- streambed_conductance: float
streambed_conductance conductance [L/T] (lambda in the paper)
- pycap.solutions.hunt99ddwn(T, S, time, dist, Q, streambed_conductance=0, x=0, y=0, **kwargs)[source]
- Function to calculate drawdown in an aquifer with a partially
penetrating stream including streambed resistance (Hunt, 1999). Units are not specified, but should be consistent length and time.
The solution becomes the Theis solution if streambed conductance is zero, and approaches an image-well solution from Theis or Glover and Balmer (1954) as streambed conductance gets very large. Note that the well is located at the location x,y = (l, 0) and the stream is aligned with y-axis at x=0.
x and y locations provided are the points at which drawdown is calculated and reported. It is possible to provide x and y ndarrays generated with numpy.meshgrid.
Hunt, B., 1999, Unsteady streamflow depletion from ground water pumping: Groundwater, v. 37, no. 1, pgs. 98-102, https://doi.org/10.1111/j.1745-6584.1999.tb00962.x
- Parameters
- T: float
Transmissivity of aquifer [L**2/T]
- S: float
Storativity of aquifer [dimensionless]
- time: float, optionally np.array or list
time at which to calculate results [T]
- dist: float
distance between well and stream in [L]
- Qfloat
pumping rate (+ is extraction) [L**3/T]
- streambed_conductance: float
streambed conductance [ft/d] (lambda in the paper)
- x: float, optionally ndarray
x locations at which to report calculated drawdown.
- y: float, optionally ndarray
y locations at which to report calculated drawdown.
- **kwargs: included to all drawdown methods for extra values required
in some calls
- Returns
- drawdown: float
single value, meshgrid of drawdowns, or np.array with shape (ntimes, meshgridxx, meshgridyy) depending on input form of x, y, and ntimes [L]
- pycap.solutions.sdf(T, S, dist, **kwargs)[source]
internal function for Stream Depletion Factor
Stream Depletion Factor was defined by Jenkins (1968) and described in Jenkins as the time when the volume of stream depletion is 28 percent of the net volume pumped from the well. SDF = dist**2 * S/T.
Jenkins, C.T., Computation of rate and volume of stream depletion by wells: U.S. Geological Survey Techniques of Water-Resources Investigations, Chapter D1, Book 4, https://pubs.usgs.gov/twri/twri4d1/.
- Parameters
- T: float
transmissivity [L**2/T]
- S: float
storage [unitless]
- dist: float, optionally np.array or list
distance at which to calculate results in [L]
- **kwargs: included to all depletion methods for extra values required in some calls
- Returns
- SDF: float
Stream depletion factor [T]
- pycap.solutions.theis(T, S, time, dist, Q, **kwargs)[source]
- Function to calculate Theis drawdown. Units are not specified, but
should be consistent length and time.
Calculates the Theis drawdown solution at specified times or distances from a pumping well.
- Parameters
- T: float
transmissivity [L**2/T]
- S: float
storage [dimensionless]
- time: float, optionally np.array or list
time at which to calculate results [T]
- dist: float, optionally np.array or list
distance at which to calculate results in [L]
- Q: float
pumping rate (+ is extraction) [L**3/T]
- **kwargs: included to all drawdown methods for extra values required
in some calls
- Returns
- drawdown: float or array of floats
drawdown values at input parameter times/distances [L]
- pycap.solutions.walton(T, S, time, dist, Q, **kwargs)[source]
Calculate depletion using Walton (1987) PT-8 BASIC program logic
Provides the Glover and Balmer (Jenkins) solution.
Walton, W.C., Groundwater Pumping Tests: Lewis Publishers, Chelsea, Michigan, 201 p.
Note that unlike the other depletion functions, this Walton function is unit-specific, using feet and days as dimensions.
- Parameters
- T: float
transmissivity [gal per d per ft]
- S: float
storage [unitless]
- time: float, optionally np.array or list
time at which to calculate results [d]
- dist: float, optionally np.array or list
distance at which to calculate results in [ft]
- Q: float
pumping rate (+ is extraction) [ft**3/d]
- **kwargs: included to all depletion methods for extra values required in some calls
- Returns
- drawdown: float
depletion values at at input parameter times/distances