예제 #1
0
class SM(hland_sequences.State1DSequence):
    """Soil moisture [mm].

    Note that PREVAH uses the abbreviation `SSM`, and COSERO uses the abbreviation
    `BW0ZON` instead of the HBV96 abbreviation `SM`.
    """

    SPAN = (0.0, None)
    mask = hland_masks.Soil()

    CONTROLPARAMETERS = (hland_control.FC, )

    def trim(self, lower=None, upper=None):
        r"""Trim |SM| following :math:`0 \leq SM \leq FC`.

        >>> from hydpy.models.hland import *
        >>> parameterstep("1d")
        >>> nmbzones(5)
        >>> fc(200.0)
        >>> states.sm(-100.0, 0.0, 100.0, 200.0, 300.0)
        >>> states.sm
        sm(0.0, 0.0, 100.0, 200.0, 200.0)
        """
        if upper is None:
            upper = self.subseqs.seqs.model.parameters.control.fc
        super().trim(lower, upper)
예제 #2
0
class R(hland_sequences.Flux1DSequence):
    """Effective soil response [mm/T].

    Note that PREVAH uses the abbreviation `DSUZ` instead of the HBV96 abbreviation `R`.
    """

    mask = hland_masks.Soil()
예제 #3
0
class SM(hland_sequences.State1DSequence):
    """Soil moisture [mm]."""
    NDIM, NUMERIC, SPAN = 1, False, (0., None)
    mask = hland_masks.Soil()

    def trim(self, lower=None, upper=None):
        """Trim values in accordance with :math:`SM \\leq FC`.

        >>> from hydpy.models.hland import *
        >>> parameterstep('1d')
        >>> nmbzones(5)
        >>> fc(200.0)
        >>> states.sm(-100.0, 0.0, 100.0, 200.0, 300.0)
        >>> states.sm
        sm(0.0, 0.0, 100.0, 200.0, 200.0)
        """
        if upper is None:
            upper = self.subseqs.seqs.model.parameters.control.fc
        hland_sequences.State1DSequence.trim(self, lower, upper)
예제 #4
0
class Ic(hland_sequences.State1DSequence):
    """Interception storage [mm]."""
    NDIM, NUMERIC, SPAN = 1, False, (0., None)
    mask = hland_masks.Soil()

    def trim(self, lower=None, upper=None):
        """Trim upper values in accordance with :math:`IC \\leq ICMAX`.

        >>> from hydpy.models.hland import *
        >>> parameterstep('1d')
        >>> nmbzones(5)
        >>> icmax(2.0)
        >>> states.ic(-1.0, 0.0, 1.0, 2.0, 3.0)
        >>> states.ic
        ic(0.0, 0.0, 1.0, 2.0, 2.0)
        """
        if upper is None:
            control = self.subseqs.seqs.model.parameters.control
            upper = control.icmax
        hland_sequences.State1DSequence.trim(self, lower, upper)
예제 #5
0
class ParameterSoil(ParameterComplete):
    """Base class for 1-dimensional parameters relevant for |FIELD|
    and |FOREST| zones.

    |ParameterSoil| works similar to |ParameterComplete|. Some examples
    based on parameter |IcMax|:

    >>> from hydpy.models.hland import *
    >>> parameterstep('1d')
    >>> nmbzones(5)
    >>> zonetype(FIELD, FOREST, GLACIER, ILAKE, FIELD)
    >>> icmax(field=2.0, forest=1.0, glacier=4.0, ilake=3.0)
    >>> icmax
    icmax(field=2.0, forest=1.0)
    >>> icmax(field=2.0, default=9.0)
    >>> icmax
    icmax(field=2.0, forest=9.0)
    >>> zonearea(0.0, 1.0, nan, nan, 3.0)
    >>> from hydpy import round_
    >>> round_(icmax.average_values())
    3.75
    """
    mask = hland_masks.Soil()
예제 #6
0
class CF(hland_sequences.Flux1DSequence):
    """Actual capillary flow [mm/T]."""

    mask = hland_masks.Soil()
예제 #7
0
class CFPot(hland_sequences.Flux1DSequence):
    """Potential capillary flow [mm/T]."""

    mask = hland_masks.Soil()
예제 #8
0
class EA(hland_sequences.Flux1DSequence):
    """Actual soil evaporation [mm/T]."""

    mask = hland_masks.Soil()