HeadWell#

class timflow.steady.well.HeadWell(model, xw=0, yw=0, hw=10, rw=0.1, res=0, layers=0, label=None, addtomodel=True)#

Bases: WellBase, timflow.steady.equation.HeadEquation

HeadWell Class to create a well with a specified head inside the well.

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_i - h_w)/c\]

where \(c\) is the resistance of the well screen and \(h_w\) is the head inside the well.

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

  • hw (float) – head inside 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 (default: None)) – label of the well

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. With metadata=True, each item is a result dict from traceline().

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.

equation()#

Mix-in class that returns matrix rows for head-specified conditions.

Notes

Now written as heads.

Returns:

  • matrix – (nunknowns,neq)

  • rhs – (nunknowns)