Source code for smash.solver._mwd_states

"""
Module mwd_states


Defined at smash/solver/derived_type/mwd_states.f90 lines 40-116

This module `mwd_states` encapsulates all SMASH states.
This module is wrapped and differentiated.

StatesDT type:

</> Public
======================== =======================================
`Variables`              Description
======================== =======================================
``hi`` Interception state [-] (default: 0.01) ]0, 1[
``hp`` Production state [-] (default: 0.01) ]0, 1[
``hft`` Fast transfer state [-] (default: 0.01) ]0, 1[
``hst`` Slow transfer state [-] (default: 0.01) ]0, 1[

``husl1`` Upper soil layer 1 state [-] (default: 0.01) ]0, 1[
``husl2`` Upper soil layer 2 state [-] (default: 0.01) ]0, 1[
``hlsl`` Lower soil layer state [-] (default: 0.01) ]0, 1[

``hlr`` Linear routing state [mm] (default: 1e-6) ]0, +Inf[
======================== =======================================

Hyper_StatesDT type:

It contains same States variables(see above)

contains

[1] StatesDT_initialise
[2] Hyper_StatesDT_initialise
[3] states_to_matrix
[4] matrix_to_states
[5] vector_to_states
[6] set0_states
[7] set1_states
[8]  hyper_states_to_matrix
[10] matrix_to_hyper_states
[11] set0_hyper_states
[12] set1_hyper_states
[13] hyper_states_to_states
"""
from __future__ import print_function, absolute_import, division
from smash.solver._mw_derived_type_copy import copy_states
from smash.solver._f90wrap_decorator import char_array_getter_handler, char_array_setter_handler
from smash.solver._f90wrap_decorator import char_getter_handler
from smash.solver._f90wrap_decorator import getter_index_handler, setter_index_handler
from smash.solver import _solver
import f90wrap.runtime
import logging
import numpy

_arrays = {}
_objs = {}

[docs]@f90wrap.runtime.register_class("solver.StatesDT") class StatesDT(f90wrap.runtime.FortranDerivedType): """ Type(name=statesdt) Defined at smash/solver/derived_type/mwd_states.f90 lines 45-59 Notes ----- StatesDT Derived Type. """ def __init__(self, mesh, handle=None): """ self = Statesdt(mesh) Defined at smash/solver/derived_type/mwd_states.f90 lines 78-100 Parameters ---------- mesh : Meshdt Returns ------- this : Statesdt Notes ----- StatesDT initialisation subroutine. only: sp, ns only: MeshDT only: Input_DataDT """ f90wrap.runtime.FortranDerivedType.__init__(self) result = _solver.f90wrap_statesdt_initialise(mesh=mesh._handle) self._handle = result[0] if isinstance(result, tuple) else result def __del__(self): """ Destructor for class Statesdt Defined at smash/solver/derived_type/mwd_states.f90 lines 45-59 Parameters ---------- this : Statesdt Object to be destructed Automatically generated destructor for statesdt """ if self._alloc: try: _solver.f90wrap_statesdt_finalise(this=self._handle) except: pass def copy(self): return copy_states(self) @property def hi(self): """ Element hi ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 50 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__hi(self._handle) if array_handle in self._arrays: hi = self._arrays[array_handle] else: hi = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__hi) self._arrays[array_handle] = hi return hi @hi.setter def hi(self, hi): self.hi[...] = hi @property def hp(self): """ Element hp ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 51 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__hp(self._handle) if array_handle in self._arrays: hp = self._arrays[array_handle] else: hp = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__hp) self._arrays[array_handle] = hp return hp @hp.setter def hp(self, hp): self.hp[...] = hp @property def hft(self): """ Element hft ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 52 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__hft(self._handle) if array_handle in self._arrays: hft = self._arrays[array_handle] else: hft = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__hft) self._arrays[array_handle] = hft return hft @hft.setter def hft(self, hft): self.hft[...] = hft @property def hst(self): """ Element hst ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 53 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__hst(self._handle) if array_handle in self._arrays: hst = self._arrays[array_handle] else: hst = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__hst) self._arrays[array_handle] = hst return hst @hst.setter def hst(self, hst): self.hst[...] = hst @property def husl1(self): """ Element husl1 ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 55 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__husl1(self._handle) if array_handle in self._arrays: husl1 = self._arrays[array_handle] else: husl1 = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__husl1) self._arrays[array_handle] = husl1 return husl1 @husl1.setter def husl1(self, husl1): self.husl1[...] = husl1 @property def husl2(self): """ Element husl2 ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 56 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__husl2(self._handle) if array_handle in self._arrays: husl2 = self._arrays[array_handle] else: husl2 = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__husl2) self._arrays[array_handle] = husl2 return husl2 @husl2.setter def husl2(self, husl2): self.husl2[...] = husl2 @property def hlsl(self): """ Element hlsl ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 57 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__hlsl(self._handle) if array_handle in self._arrays: hlsl = self._arrays[array_handle] else: hlsl = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__hlsl) self._arrays[array_handle] = hlsl return hlsl @hlsl.setter def hlsl(self, hlsl): self.hlsl[...] = hlsl @property def hlr(self): """ Element hlr ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 59 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_statesdt__array__hlr(self._handle) if array_handle in self._arrays: hlr = self._arrays[array_handle] else: hlr = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_statesdt__array__hlr) self._arrays[array_handle] = hlr return hlr @hlr.setter def hlr(self, hlr): self.hlr[...] = hlr def __str__(self): ret = ['<statesdt>{\n'] ret.append(' hi : ') ret.append(repr(self.hi)) ret.append(',\n hp : ') ret.append(repr(self.hp)) ret.append(',\n hft : ') ret.append(repr(self.hft)) ret.append(',\n hst : ') ret.append(repr(self.hst)) ret.append(',\n husl1 : ') ret.append(repr(self.husl1)) ret.append(',\n husl2 : ') ret.append(repr(self.husl2)) ret.append(',\n hlsl : ') ret.append(repr(self.hlsl)) ret.append(',\n hlr : ') ret.append(repr(self.hlr)) ret.append('}') return ''.join(ret) _dt_array_initialisers = []
@f90wrap.runtime.register_class("solver.Hyper_StatesDT") class Hyper_StatesDT(f90wrap.runtime.FortranDerivedType): """ Type(name=hyper_statesdt) Defined at smash/solver/derived_type/mwd_states.f90 lines 61-75 Notes ----- Hyper_StatesDT Derived Type. """ def __init__(self, setup, handle=None): """ self = Hyper_Statesdt(setup) Defined at smash/solver/derived_type/mwd_states.f90 lines 102-116 Parameters ---------- setup : Setupdt Returns ------- this : Hyper_Statesdt Notes ----- Hyper_StatesDT initialisation subroutine. """ f90wrap.runtime.FortranDerivedType.__init__(self) result = _solver.f90wrap_hyper_statesdt_initialise(setup=setup._handle) self._handle = result[0] if isinstance(result, tuple) else result def __del__(self): """ Destructor for class Hyper_Statesdt Defined at smash/solver/derived_type/mwd_states.f90 lines 61-75 Parameters ---------- this : Hyper_Statesdt Object to be destructed Automatically generated destructor for hyper_statesdt """ if self._alloc: try: _solver.f90wrap_hyper_statesdt_finalise(this=self._handle) except: pass @property def hi(self): """ Element hi ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 66 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__hi(self._handle) if array_handle in self._arrays: hi = self._arrays[array_handle] else: hi = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__hi) self._arrays[array_handle] = hi return hi @hi.setter def hi(self, hi): self.hi[...] = hi @property def hp(self): """ Element hp ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 67 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__hp(self._handle) if array_handle in self._arrays: hp = self._arrays[array_handle] else: hp = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__hp) self._arrays[array_handle] = hp return hp @hp.setter def hp(self, hp): self.hp[...] = hp @property def hft(self): """ Element hft ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 68 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__hft(self._handle) if array_handle in self._arrays: hft = self._arrays[array_handle] else: hft = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__hft) self._arrays[array_handle] = hft return hft @hft.setter def hft(self, hft): self.hft[...] = hft @property def hst(self): """ Element hst ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 69 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__hst(self._handle) if array_handle in self._arrays: hst = self._arrays[array_handle] else: hst = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__hst) self._arrays[array_handle] = hst return hst @hst.setter def hst(self, hst): self.hst[...] = hst @property def husl1(self): """ Element husl1 ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 71 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__husl1(self._handle) if array_handle in self._arrays: husl1 = self._arrays[array_handle] else: husl1 = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__husl1) self._arrays[array_handle] = husl1 return husl1 @husl1.setter def husl1(self, husl1): self.husl1[...] = husl1 @property def husl2(self): """ Element husl2 ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 72 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__husl2(self._handle) if array_handle in self._arrays: husl2 = self._arrays[array_handle] else: husl2 = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__husl2) self._arrays[array_handle] = husl2 return husl2 @husl2.setter def husl2(self, husl2): self.husl2[...] = husl2 @property def hlsl(self): """ Element hlsl ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 73 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__hlsl(self._handle) if array_handle in self._arrays: hlsl = self._arrays[array_handle] else: hlsl = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__hlsl) self._arrays[array_handle] = hlsl return hlsl @hlsl.setter def hlsl(self, hlsl): self.hlsl[...] = hlsl @property def hlr(self): """ Element hlr ftype=real(sp) pytype=float Defined at smash/solver/derived_type/mwd_states.f90 line 75 """ array_ndim, array_type, array_shape, array_handle = \ _solver.f90wrap_hyper_statesdt__array__hlr(self._handle) if array_handle in self._arrays: hlr = self._arrays[array_handle] else: hlr = f90wrap.runtime.get_array(f90wrap.runtime.sizeof_fortran_t, self._handle, _solver.f90wrap_hyper_statesdt__array__hlr) self._arrays[array_handle] = hlr return hlr @hlr.setter def hlr(self, hlr): self.hlr[...] = hlr def __str__(self): ret = ['<hyper_statesdt>{\n'] ret.append(' hi : ') ret.append(repr(self.hi)) ret.append(',\n hp : ') ret.append(repr(self.hp)) ret.append(',\n hft : ') ret.append(repr(self.hft)) ret.append(',\n hst : ') ret.append(repr(self.hst)) ret.append(',\n husl1 : ') ret.append(repr(self.husl1)) ret.append(',\n husl2 : ') ret.append(repr(self.husl2)) ret.append(',\n hlsl : ') ret.append(repr(self.hlsl)) ret.append(',\n hlr : ') ret.append(repr(self.hlr)) ret.append('}') return ''.join(ret) _dt_array_initialisers = [] _array_initialisers = [] _dt_array_initialisers = [] try: for func in _array_initialisers: func() except ValueError: logging.debug('unallocated array(s) detected on import of module "mwd_states".') for func in _dt_array_initialisers: func()