ttim.model ========== .. py:module:: ttim.model Classes ------- .. autoapisummary:: ttim.model.TimModel ttim.model.ModelMaq ttim.model.Model3D ttim.model.ModelXsection Module Contents --------------- .. py:class:: TimModel(kaq=[1, 1], z=[3, 2, 1], Haq=[1, 1], Hll=[0], c=[1e+100, 100], Saq=[0.0001, 0.0001], Sll=[0], poraq=0.3, porll=0.3, ltype=['a', 'a'], topboundary='conf', phreatictop=False, tmin=1, tmax=10, tstart=0, M=10, kzoverkh=None, model3d=False, timmlmodel=None) .. py:attribute:: elementlist :value: [] .. py:attribute:: elementdict .. py:attribute:: vbclist :value: [] .. py:attribute:: zbclist :value: [] .. py:attribute:: gbclist :value: [] .. py:attribute:: tmin :value: 1 .. py:attribute:: tmax :value: 10 .. py:attribute:: tstart :value: 0 .. py:attribute:: M :value: 10 .. py:attribute:: aq .. py:attribute:: name :value: 'TimModel' .. py:attribute:: modelname :value: 'ml' .. py:attribute:: timmlmodel :value: None .. py:attribute:: plots .. py:attribute:: plot .. py:method:: xsection(*args, **kwargs) .. py:method:: contour(*args, **kwargs) .. py:method:: __repr__() .. py:method:: initialize() .. py:method:: addelement(e) .. py:method:: removeelement(e) .. py:method:: compute_laplace_parameters() Compute the parameters for the Laplace transform inversion. .. attribute:: nint :type: Number of time intervals .. attribute:: npint :type: Number of p values per interval .. attribute:: npval :type: Total number of p values (nint * npint) .. attribute:: p[npval] :type: Array with p values .. !! processed by numpydoc !! .. py:method:: potential(x, y, t, layers=None, aq=None, derivative=0, returnphi=0) Returns pot[naq, ntimes] if layers=None, otherwise pot[len(layers), ntimes]. t must be ordered. .. !! processed by numpydoc !! .. py:method:: potentialone(x, y, time, layers=None, aq=None, derivative=0, returnphi=0) Returns pot[naq] if layers=None, otherwise pot[len(layers)]. time is one value. .. !! processed by numpydoc !! .. py:method:: disvec(x, y, t, layers=None, aq=None, derivative=0) Compute discharge vectgor. Returns qx[naq, ntimes], qy[naq, ntimes] if layers=None, otherwise qx[len(layers,Ntimes)],qy[len(layers, ntimes)]. t must be ordered. .. !! processed by numpydoc !! .. py:method:: head(x, y, t, layers=None, aq=None, derivative=0, neglect_steady=False) Head at x, y, t where t can be multiple times. :param x: :type x: float :param y: :type y: float :param t: times for which grid is returned :type t: list or array :param layers: layers for which grid is returned if None: all layers are returned :type layers: integer, list or array, optional :returns: **h** :rtype: array size `nlayers, ntimes` .. !! processed by numpydoc !! .. py:method:: velocompold(x, y, z, t, aq=None, layer_ltype=[0, 0]) .. py:method:: velocomp(x, y, z, t, aq=None, layer_ltype=None) .. py:method:: velo_one(x, y, z, t, aq=None, layer_ltype=[0, 0]) .. py:method:: headinside(elabel, t) .. py:method:: strength(elabel, t) .. py:method:: headalongline(x, y, t, layers=None) Head along line or curve. :param x: x values of line :type x: 1D array or list :param y: y values of line :type y: 1D array or list :param t: times for which grid is returned :type t: float or 1D array or list :param layers: layers for which grid is returned :type layers: integer, list or array, optional :returns: **h** :rtype: array size `nlayers, ntimes, nx` .. !! processed by numpydoc !! .. py:method:: disvecalongline(x, y, t, layers=None) Discharge vector along line or curve. :param x: x values of line :type x: 1D array or list :param y: y values of line :type y: 1D array or list :param t: times for which grid is returned :type t: float or 1D array or list :param layers: layers for which grid is returned :type layers: integer, list or array, optional :returns: **q** :rtype: array size `nlayers, ntimes, nx` .. !! processed by numpydoc !! .. py:method:: headgrid(xg, yg, t, layers=None, printrow=False) Grid of heads. :param xg: x values of grid :type xg: array :param yg: y values of grid :type yg: array :param t: times for which grid is returned :type t: list or array :param layers: layers for which grid is returned :type layers: integer, list or array, optional :param printrow: prints dot to screen for each row of grid if set to `True` :type printrow: boolean, optional :returns: **h** :rtype: array size `nlayers, ntimes, ny, nx` .. seealso:: :func:`~ttim.model.Model.headgrid2` .. !! processed by numpydoc !! .. py:method:: headgrid2(x1, x2, nx, y1, y2, ny, t, layers=None, printrow=False) Grid of heads. :param xg: x values are generated as linspace(x1, x2, nx) :type xg: array :param yg: y values are generated as linspace(y1, y2, ny) :type yg: array :param t: times for which grid is returned :type t: list or array :param layers: layers for which grid is returned :type layers: integer, list or array, optional :param printrow: prints dot to screen for each row of grid if set to `True` :type printrow: boolean, optional :returns: **h** :rtype: array size `nlayers, ntimes, ny, nx` .. seealso:: :func:`~ttim.model.Model.headgrid` .. !! processed by numpydoc !! .. py:method:: inverseLapTran(pot, t) Returns array of potentials of len(t) t must be ordered and tmin<=t<=tmax. .. !! processed by numpydoc !! .. py:method:: solve(printmat=0, sendback=0, silent=False) Compute solution. .. !! processed by numpydoc !! .. py:method:: storeinput(frame) .. py:method:: write() .. py:method:: writemodel(fname) .. py:method:: aquifer_summary() Return DataFrame with summary of aquifer(s) parameters in model. :returns: dataframe with summary of aquifer(s) parameters :rtype: pandas.DataFrame .. !! processed by numpydoc !! .. py:class:: ModelMaq(kaq=[1], z=[1, 0], c=[], Saq=[0.001], Sll=[0], poraq=[0.3], porll=[0.3], topboundary='conf', phreatictop=False, tmin=1, tmax=10, tstart=0, M=10, timmlmodel=None) Bases: :py:obj:`TimModel` Create model specifying a multi-aquifer sequence of aquifer-leakylayer-etc. :param kaq: hydraulic conductivity of each aquifer from the top down if float, hydraulic conductivity is the same in all aquifers :type kaq: float, array or list :param z: elevation tops and bottoms of the aquifers from the top down leaky layers may have zero thickness if top='conf': length is 2 * number of aquifers if top='semi': length is 2 * number of aquifers + 1 as top of leaky layer on top of systems needs to be specified :type z: array or list :param c: resistance of leaky layers from the top down if float, resistance is the same for all leaky layers if top='conf': length is number of aquifers - 1 if top='semi': length is number of aquifers :type c: float, array or list :param Saq: specific storage of all aquifers if float, sepcific storage is same in all aquifers if phreatictop is True and topboundary is 'conf', Saq of top aquifer is phreatic storage coefficient (and not multiplied with the layer thickness) :type Saq: float, array or list :param Sll: specific storage of all leaky layers if float, sepcific storage is same in all leaky layers if phreatictop is True and topboundary is 'semi', Sll of top leaky layer is phreatic storage coefficient (and not multiplied with the layer thickness) :type Sll: float, array or list :param topboundary: indicating whether the top is confined ('conf') or semi-confined ('semi') :type topboundary: string, 'conf' or 'semi' (default is 'conf') :param phreatictop: the storage coefficient of the top model layer is treated as phreatic storage (and not multiplied with the aquifer thickness) :type phreatictop: boolean :param tmin: the minimum time for which heads can be computed after any change in boundary condition. :type tmin: scalar :param tmax: the maximum time for which heads can be computed :type tmax: scalar :param tstart: time at start of simulation (default 0) :type tstart: scalar :param M: 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. :type M: integer :param timmlmodel: a timml model may be included to add steady-state flow :type timmlmodel: optional instance of a solved TimML model .. !! processed by numpydoc !! .. py:attribute:: name :value: 'ModelMaq' .. py:class:: 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, timmlmodel=None) Bases: :py:obj:`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. :param kaq: hydraulic conductivity of each layer from the top down if float, hydraulic conductivity is the same in all aquifers :type kaq: float, array or list :param z: 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 :type z: array or list :param Saq: 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) :type Saq: float, array or list :param kzoverkh: vertical anisotropy ratio vertical k divided by horizontal k if float, value is the same for all layers length is number of layers :type kzoverkh: float :param topboundary: indicating whether the top is confined ('conf') or semi-confined ('semi'). currently only implemented for 'conf' :type topboundary: string, 'conf' or 'semi' (default is 'conf') :param topres: resistance of top semi-confining layer, only read if topboundary='semi' :type topres: float :param topthick: thickness of top semi-confining layer, only read if topboundary='semi' :type topthick: float :param phreatictop: the storage coefficient of the top aquifer layer is treated as phreatic storage (and not multiplied with the aquifer thickness) :type phreatictop: boolean :param tmin: the minimum time for which heads can be computed after any change in boundary condition. :type tmin: scalar :param tmax: the maximum time for which heads can be computed. :type tmax: scalar :param tstart: time at start of simulation (default 0) :type tstart: scalar :param M: 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. :type M: integer (default 10) :param timmlmodel: a timml model may be included to add steady-state flow :type timmlmodel: optional instance of a solved TimML model .. !! processed by numpydoc !! .. py:attribute:: name :value: 'Model3D' .. py:class:: ModelXsection(naq=1, tmin=1, tmax=10, tstart=0, M=10, timmlmodel=None) Bases: :py:obj:`TimModel` Model class for cross-section models. :param naq: number of aquifers :type naq: integer :param tmin: the minimum time for which heads can be computed after any change in boundary condition. :type tmin: float :param tmax: the maximum time for which heads can be computed. :type tmax: float :param tstart: time at start of simulation (default 0) :type tstart: float, optional :param M: the number of terms to be used in the numerical inversion algorithm. 10 is usually sufficient. :type M: integer, optional :param timmlmodel: a timml model may be included to add a steady-state flow result to the computed solution. :type timmlmodel: timml.Model .. !! processed by numpydoc !! .. py:attribute:: elementlist :value: [] .. py:attribute:: elementdict .. py:attribute:: vbclist :value: [] .. py:attribute:: zbclist :value: [] .. py:attribute:: gbclist :value: [] .. py:attribute:: tmin :value: 1 .. py:attribute:: tmax :value: 10 .. py:attribute:: tstart :value: 0 .. py:attribute:: M :value: 10 .. py:attribute:: aq .. py:attribute:: name :value: 'TimModel' .. py:attribute:: modelname :value: 'ml' .. py:attribute:: timmlmodel :value: None .. py:attribute:: plots .. py:attribute:: plot .. py:method:: check_inhoms() Check if number of aquifers in inhoms matches number of aquifers in model. .. !! processed by numpydoc !! .. py:method:: initialize()