Source code for hydpy.models.rconc.rconc_derived

# pylint: disable=missing-module-docstring

import numpy

from hydpy.core import parametertools
from hydpy.core.typingtools import *
from hydpy.models.rconc import rconc_control


[docs] class KSC(parametertools.Parameter): """Coefficient of the individual storages of the linear storage cascade [1/T].""" NDIM: Final[Literal[0]] = 0 TYPE: Final = float TIME = True SPAN = (0.0, None) CONTROLPARAMETERS = (rconc_control.RetentionTime, rconc_control.NmbStorages)
[docs] def update(self) -> None: """Update |KSC| based on :math:`KSC = \\frac{2 \\cdot NmbStorages}{RetentionTime}`. >>> from hydpy.models.rconc import * >>> simulationstep('12h') >>> parameterstep('1d') >>> retentiontime(8.0) >>> nmbstorages(2.0) >>> derived.ksc.update() >>> derived.ksc ksc(0.5) >>> retentiontime(0.0) >>> nmbstorages(2.0) >>> derived.ksc.update() >>> derived.ksc ksc(inf) """ control = self.subpars.pars.control if control.retentiontime.value <= 0.0: self.value = numpy.inf else: self.value = 2.0 * control.nmbstorages.value / control.retentiontime.value
[docs] class DT(parametertools.Parameter): """Relative length of each simulation step [-].""" NDIM: Final[Literal[0]] = 0 TYPE: Final = float SPAN = (0.0, 1.0) CONTROLPARAMETERS = (rconc_control.NmbSteps,)
[docs] def update(self) -> None: """Update |DT| based on :math:`DT = \\frac{1}{NmbSteps}`. >>> from hydpy.models.rconc import * >>> parameterstep("1d") >>> simulationstep("12h") >>> nmbsteps(2.0) >>> derived.dt.update() >>> derived.dt dt(1.0) >>> nmbsteps(10.0) >>> derived.dt.update() >>> derived.dt dt(0.2) Note that the value assigned to parameter |NmbSteps| depends on the current parameter step size (one day). Due to the current simulation step size (one hour), the applied |NmbSteps| value is five: >>> nmbsteps.value 5 """ self(1.0 / self.subpars.pars.control.nmbsteps)