Source code for hydpy.models.rconc.rconc_derived

# -*- coding: utf-8 -*-
# pylint: disable=missing-module-docstring

# import...
# ...from site-packages
import numpy

# ...from HydPy
from hydpy.core import parametertools

# ...from evap
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, TYPE, TIME, SPAN = 0, float, True, (0.0, None) CONTROLPARAMETERS = (rconc_control.RetentionTime, rconc_control.NmbStorages)
[docs] def update(self): """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, TYPE, TIME, SPAN = 0, float, None, (0.0, 1.0) CONTROLPARAMETERS = (rconc_control.NmbSteps,)
[docs] def update(self): """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)