timflow.transient.model.Model3D#

class timflow.transient.model.Model3D(kaq=1, z=[4, 3, 2, 1], Saq=0.001, kzoverkh=0.1, poraq=0.3, topboundary='conf', phreatictop=False, topres=0, topthick=0, topSll=0, toppor=0.3, tmin=1, tmax=10, tstart=0, M=10, steady=None)#

Bases: TimModel

Create a multi-layer model object consisting of many aquifer layers.

The resistance between the layers is computed from the vertical hydraulic conductivity of the layers.

Parameters:
  • kaq (float, array or list) – hydraulic conductivity of each layer from the top down if float, hydraulic conductivity is the same in all aquifers

  • z (array or list) – elevation of top of system followed by bottoms of all layers from the top down bottom of layer is automatically equal to top of layer below it if topboundary=’conf’: length is number of layers + 1 if topboundary=’semi’: length is number of layers + 2 as top of leaky layer on top of systems needs to be specified

  • Saq (float, array or list) – specific storage of all aquifers layers if float, sepcific storage is same in all aquifers layers if phreatictop is True and topboundary is ‘conf’, Saq of top aquifer is phreatic storage coefficient (and not multiplied with the layer thickness)

  • kzoverkh (float) – vertical anisotropy ratio vertical k divided by horizontal k if float, value is the same for all layers length is number of layers

  • topboundary (string, 'conf' or 'semi' (default is 'conf')) – indicating whether the top is confined (‘conf’) or semi-confined (‘semi’). currently only implemented for ‘conf’

  • topres (float) – resistance of top semi-confining layer, only read if topboundary=’semi’

  • topthick (float) – thickness of top semi-confining layer, only read if topboundary=’semi’

  • phreatictop (boolean) – the storage coefficient of the top aquifer layer is treated as phreatic storage (and not multiplied with the aquifer thickness)

  • tmin (scalar) – the minimum time for which heads can be computed after any change in boundary condition.

  • tmax (scalar) – the maximum time for which heads can be computed.

  • tstart (scalar) – time at start of simulation (default 0)

  • M (integer (default 10)) – the number of terms to be used in the numerical inversion algorithm. 10 is usually sufficient. If drawdown curves appear to oscillate, more terms may be needed, but this seldom happens.

  • steady (optional instance of a solved timflow.steady model) – a timflow.steady model may be included to add steady-state flow

Methods#

compute_laplace_parameters()

Compute the parameters for the Laplace transform inversion.

potential(x, y, t[, layers, aq, derivative, returnphi])

Returns pot[naq, ntimes] if layers=None, otherwise pot[len(layers), ntimes].

potentialone(x, y, time[, layers, aq, derivative, ...])

Returns pot[naq] if layers=None, otherwise pot[len(layers)].

disvec(x, y, t[, layers, aq, derivative])

Compute discharge vectgor.

head(x, y, t[, layers, aq, derivative, neglect_steady])

Head at x, y, t where t can be multiple times.

headalongline(x, y, t[, layers])

Head along line or curve.

disvecalongline(x, y, t[, layers])

Discharge vector along line or curve.

headgrid(xg, yg, t[, layers, printrow])

Grid of heads.

headgrid2(x1, x2, nx, y1, y2, ny, t[, layers, printrow])

Grid of heads.

inverseLapTran(pot, t)

Returns array of potentials of len(t) t must be ordered and tmin<=t<=tmax.

solve([printmat, sendback, silent])

Compute solution.

aquifer_summary()

Return DataFrame with summary of aquifer(s) parameters in model.