timflow.transient.well.DischargeWell#

class timflow.transient.well.DischargeWell(model, xw=0, yw=0, tsandQ=[(0, 1)], rw=0.1, res=0, layers=0, label=None)#

Bases: WellBase

Well with a specified discharge for each layer that the well is screened in.

This is not very common and is likely only used for testing and comparison with other codes. The discharge must be specified for each screened layer. 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_wH_i(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

  • tsandQ (list of tuples) – tuples of starting time and discharge after starting time

  • 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

Examples

Example of a well that pumps with a discharge of 100 between times 10 and 50, with a discharge of 20 between times 50 and 200, and zero discharge after time 200.

>>> Well(ml, tsandQ=[(10, 100), (50, 20), (200, 0)])

Methods#

initialize()

Initialize the element.

setflowcoef()

Separate function so that this can be overloaded for other types.

potinf(x, y[, aq])

Can be called with only one x,y value.

potinfone(x, y, jtime[, aq])

Can be called with only one x,y value for time interval jtime.

disvecinf(x, y[, aq])

Can be called with only one x,y value.

headinside(t[, derivative])

Returns head inside the well for the layers that the well is screened in.

plot([ax, layer])

Plot the element.

potential(x, y[, aq])

Returns complex array of size (ngvbc, naq, npval).

unitpotential(x, y[, aq])

Returns complex array of size (naq, npval).

unitpotentialone(x, y, jtime[, aq])

Returns complex array of size (naq, npval).

disvec(x, y[, aq])

Returns 2 complex arrays of size (ngvbc, naq, npval).

unitdisvec(x, y[, aq])

Returns 2 complex arrays of size (naq, npval).

potinflayers(x, y[, layers, aq])

Layers can be scalar, list, or array.

potentiallayers(x, y[, layers, aq])

Returns complex array of size (ngvbc, len(layers),npval).

unitpotentiallayers(x, y[, layers, aq])

Returns complex array of size (len(layers), npval).

disvecinflayers(x, y[, layers, aq])

Layers can be scalar, list, or array.

disveclayers(x, y[, layers, aq])

Returns 2 complex array of size (ngvbc, len(layers), npval).

unitdisveclayers(x, y[, layers, aq])

Returns complex array of size (len(layers), npval).

discharge(t[, derivative])

The discharge in each layer.

dischargeold(t[, derivative])

The discharge in each layer.

run_after_solve()

Function to run after a solution is completed.