timflow.transient.well.Well#

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

Bases: WellBase, timflow.transient.equation.WellBoreStorageEquation

Create a well with a specified discharge.

The well may be screened in multiple layers. The discharge is distributed across the layers such that the head inside the well is the same in all screened layers. Wellbore storage and skin effect may be taken into account. 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

  • rw (float) – radius of the well

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

  • res (float) – resistance of the well screen

  • rc (float) – radius of the caisson, the pipe where the water table inside the well flucuates, which accounts for the wellbore storage

  • layers (int, array or list) – layer (int) or layers (list or array) where well is screened

  • wbstype (string) – ‘pumping’: Q is the discharge of the well ‘slug’: volume of water instantaneously taken out of the well

  • label (string (default: None)) – label of the well

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.

equation()

Matrix rows for multi-aquifer well element.