Well#
- class timflow.steady.well.Well(model, xw=0, yw=0, Qw=100.0, rw=0.1, res=0.0, layers=0, label=None, xc=None, yc=None)#
Bases:
WellBaseWell Class to create a well with a specified discharge.
Notes
The well may be screened in multiple layers. The resistance of the screen may be specified. The head is computed such that the discharge \(Q_i\) in layer \(i\) is computed as.
\[Q_i = 2 \pi r_w H (h_i - h_w) / c\]where \(c\) is the resistance of the well screen and \(h_w\) is the head inside the well. The total discharge is distributed over the screens such that \(h_w\) is the same in each screened layer.
- Parameters:
model (Model object) – model to which the element is added
xw (float) – x-coordinate of the well
yw (float) – y-coordinate of the well
Qw (float) – total discharge of the well
rw (float) – radius of the well
res (float) – resistance of the well screen
layers (int, array or list) – layer (int) or layers (list or array) where well is screened
label (string or None (default: None)) – label of the well
xc (float) – x-location of control point (default None, which puts it at xw)
yc (float) – y-location of control point (default None, which puts it at yw + rw)
Examples
Create a well in multiple layers:
ml = Model3D(kaq=10, z=np.arange(20, -1, -2), kzoverkh=0.1) Well(ml, 100, 200, 1000, layers=[0, 1, 2, 3])
- potinf(x, y, aq=None)#
Returns array of size (nparam, naq).
- disvecinf(x, y, aq=None)#
Returns array of size (2, nparam, naq).
- headinside()#
The head inside the well.
- Returns:
Head inside the well for each screen
- Return type:
array (length number of screens)
- discharge()#
The discharge in each layer.
- Returns:
Discharge in each screen with zeros for layers that are not screened
- Return type:
array (length number of layers)
- capturezone(nt=10, zstart=None, hstepmax=10, vstepfrac=0.2, tmax=None, nstepmax=100, silent='.')#
Compute a capture zone.
- Parameters:
nt (int) – number of path lines
zstart (scalar or None) – starting elevation of the path lines, middle of aquifer if None
hstepmax (scalar) – maximum step in horizontal space
vstepfrac (float) – maximum fraction of aquifer layer thickness during one step
tmax (scalar) – maximum time
nstepmax (scalar(int)) – maximum number of steps
silent (boolean or string) – True (no messages), False (all messages), or ‘.’ (print dot for each path line)
- Returns:
Full per-pathline result dicts from
traceline().- Return type:
list of dict
- capzone(nt=10, zstart=None, hstepmax=10, vstepfrac=0.2, tmax=None, nstepmax=100, silent='.', *, metadata=False)#
Compute a capture zone.
Deprecated since version Use:
capturezone()instead. This method will be removed in a future version.- Parameters:
nt (int) – number of path lines
zstart (scalar or None) – starting elevation of the path lines, middle of aquifer if None
hstepmax (scalar) – maximum step in horizontal space
vstepfrac (float) – maximum fraction of aquifer layer thickness during one step
tmax (scalar) – maximum time
nstepmax (scalar(int)) – maximum number of steps
silent (boolean or string) – True (no messages), False (all messages), or ‘.’ (print dot for each path line)
metadata (bool, default False) – If True, return full per-pathline result dicts from
traceline(). If False, return only the trace arrays.
- Returns:
xyzt – With
metadata=False(default), each item is only the(x, y, z, t)trace array. Withmetadata=True, each item is a result dict fromtraceline().- Return type:
list of dict or list of ndarray
- potinflayers(x, y, layers, aq=None)#
Returns array of size (len(layers),nparam).
Only used in building equations.
- potentiallayers(x, y, layers, aq=None)#
Returns array of size len(layers) only used in building equations.
- disvec(x, y, aq=None)#
Returns array of size (2, nparam, naq).
- disvecinflayers(x, y, layers, aq=None)#
Returns two arrays of size (len(layers),nparam).
Only used in building equations.
- disveclayers(x, y, layers, aq=None)#
Returns two arrays of size len(layers) only used in building equations.