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.WellBoreStorageEquationCreate 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
- initialize()#
Initialize the element.
Initialization of terms that cannot be initialized before other elements or the aquifer is defined.
As we don’t want to require a certain order of entering elements, these terms are initialized when Model.solve is called The initialization class needs to be overloaded by all derived classes
- setflowcoef()#
Separate function so that this can be overloaded for other types.
- potinf(x, y, aq=None)#
Can be called with only one x,y value.
- potinfone(x, y, jtime, aq=None)#
Can be called with only one x,y value for time interval jtime.
- disvecinf(x, y, aq=None)#
Can be called with only one x,y value.
- headinside(t, derivative=0)#
Returns head inside the well for the layers that the well is screened in.
- Parameters:
t (float, list or array) – time for which head is computed
- Returns:
Q – nsreens is the number of layers with a well screen
- Return type:
array of size nscreens, ntimes
- plot(ax=None, layer=None)#
Plot the element.
- potential(x, y, aq=None)#
Returns complex array of size (ngvbc, naq, npval).
- unitpotential(x, y, aq=None)#
Returns complex array of size (naq, npval).
Can be more efficient for given elements.
- unitpotentialone(x, y, jtime, aq=None)#
Returns complex array of size (naq, npval).
Can be more efficient for given elements.
- disvec(x, y, aq=None)#
Returns 2 complex arrays of size (ngvbc, naq, npval).
- unitdisvec(x, y, aq=None)#
Returns 2 complex arrays of size (naq, npval).
Can be more efficient for given elements.
- potinflayers(x, y, layers=0, aq=None)#
Layers can be scalar, list, or array.
returns array of size (len(layers),nparam,npval) only used in building equations
- potentiallayers(x, y, layers=0, aq=None)#
Returns complex array of size (ngvbc, len(layers),npval).
Only used in building equations.
- unitpotentiallayers(x, y, layers=0, aq=None)#
Returns complex array of size (len(layers), npval).
Only used in building equations.
- disvecinflayers(x, y, layers=0, aq=None)#
Layers can be scalar, list, or array.
returns 2 arrays of size (len(layers),nparam,npval) only used in building equations
- disveclayers(x, y, layers=0, aq=None)#
Returns 2 complex array of size (ngvbc, len(layers), npval).
Only used in building equations.
- unitdisveclayers(x, y, layers=0, aq=None)#
Returns complex array of size (len(layers), npval).
Only used in building equations.
- discharge(t, derivative=0)#
The discharge in each layer.
- Parameters:
t (scalar, list or array) – times at which discharge is computed. t must be ordered and tmin <= t <= tmax
derivative (when derivative=0, returns discharge (default)) – when derivative=1, returns derivative of the discharge when derivative=-1, returns integrated discharge
- Returns:
Discharge in each screen with zeros for layers that are not screened
- Return type:
array of discharges (nlayers,len(t))
- dischargeold(t, derivative=0)#
The discharge in each layer.
- Parameters:
t (scalar, list or array) – times at which discharge is computed. t must be ordered and tmin <= t <= tmax
- Returns:
Discharge in each screen with zeros for layers that are not screened
- Return type:
array of discharges (nlayers,len(t))
- run_after_solve()#
Function to run after a solution is completed.
For most elements nothing needs to be done, but for strings of elements some arrays may need to be filled.
- equation()#
Matrix rows for multi-aquifer well element.
Element with total given discharge, uniform but unknown head and InternalStorageEquation.