timflow.transient.linesink.DitchString2#

class timflow.transient.linesink.DitchString2(model, xy=[(-1, 0), (1, 0)], tsandQ=[(0, 1)], res=0, wh='H', layers=0, Astorage=None, label=None)#

Bases: LineSinkStringBase, timflow.transient.equation.MscreenDitchEquation

Create ditch consisting of a string of line-sink.

The total discharge for the string is specified and divided over the line-sinks such that the head at the center inside each line-sink is equal. A width and resistance may optionally be specified.

Inflow per unit length of line-sink is computed as:

\[\sigma = w(h_{aq} - h_{ls})/c\]

where \(c\) is the resistance of the bottom of the line-sink, \(w\) is the width over which water enters the line-sink, \(h_{aq}\) is the head in the aquifer at the center of the line-sink, \(h_{ls}\) is the specified head inside the line-sink Note that all that matters is the conductance term \(w/c\) but both are specified separately

Parameters:
  • model (Model object) – Model to which the element is added

  • xy (array or list) – list or array of (x,y) pairs of coordinates of end-points of line-sinks in string

  • tsandQ (list or 2D array of (time, discharge) values) – if list or 2D array: pairs of time and discharge after that time

  • res (scalar (default is 0)) – resistance of line-sink

  • wh (scalar or str) – distance over which water enters line-sink if ‘H’: (default) distance is equal to the thickness of the aquifer layer (when flow comes mainly from one side) if ‘2H’: distance is twice the thickness of the aquifer layer (when flow comes from both sides) if scalar: the width of the stream that partially penetrates the aquifer layer

  • layers (scalar, list or array) – layer(s) in which element is placed if scalar: element is placed in this layer if list or array: element is placed in all these layers

  • label (str or None) – label of element

Methods#

initialize()

Initialize the element.

potinf(x, y[, aq])

Returns array (nunknowns, Nperiods).

disvecinf(x, y[, aq])

Returns array (nunknowns,Nperiods).

headinside(t[, derivative])

The head inside the line-sink string.

plot([ax, layer])

Plot the element.

run_after_solve()

Function to run after a solution is completed.

discharge_list(t[, derivative])

The discharge of each line-sink in the string.

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.

equation()

Matrix rows for multi-screen conditions where total discharge is specified.