diff --git a/hydpy/core/testtools.py b/hydpy/core/testtools.py index 29b8292e52..d34e029f01 100644 --- a/hydpy/core/testtools.py +++ b/hydpy/core/testtools.py @@ -140,6 +140,7 @@ def filenames(self) -> List[str]: 'hland_constants.py', 'hland_control.py', 'hland_derived.py', + 'hland_fixed.py', 'hland_fluxes.py', 'hland_inputs.py', 'hland_logs.py', @@ -170,6 +171,7 @@ def modulenames(self) -> List[str]: ['hland_constants', 'hland_control', 'hland_derived', + 'hland_fixed', 'hland_fluxes', 'hland_inputs', 'hland_logs', @@ -197,7 +199,7 @@ def perform_tests(self) -> None: However, you are free to call it any time when in doubt of the functionality of a particular base or application model. Doing so might change some of the states of your current configuration, but only temporarily (besides - "projectname" we pick the |Timegrids| object of module |pub| as an example, + "projectname") we pick the |Timegrids| object of module |pub| as an example, which is changed multiple times during testing but finally reset to the original value): @@ -214,6 +216,8 @@ def perform_tests(self) -> None: no failures occurred * hland_derived: no failures occurred + * hland_fixed: + no failures occurred * hland_fluxes: no failures occurred * hland_inputs: @@ -245,10 +249,9 @@ def perform_tests(self) -> None: "2001-01-01 00:00:00", "1d") - To show the reporting of possible errors, we change the - string representation of parameter |hland_control.ZoneType| - temporarily. Again, the |Timegrids| object is reset to its - initial state after testing: + To show the reporting of possible errors, we change the string representation + of parameter |hland_control.ZoneType| temporarily. Again, the |Timegrids| + object is reset to its initial state after testing: >>> from unittest import mock >>> with mock.patch( diff --git a/hydpy/docs/bibliography/refs.bib b/hydpy/docs/bibliography/refs.bib index 57386eef7e..88f1e357d2 100644 --- a/hydpy/docs/bibliography/refs.bib +++ b/hydpy/docs/bibliography/refs.bib @@ -131,7 +131,7 @@ @Book{DVWK1996 author = {{GFA} {Gesellschaft} zur {Förderung} der {Abwassertechnik} {e.V}.}, } -@Article{LINDSTROM1997272, +@Article{Lindstrom1997HBV96, author = {Göran Lindström and Barbro Johansson and Magnus Persson and Marie Gardelin and Sten Bergström}, title = {Development and test of the distributed HBV-96 hydrological model}, journal = {Journal of Hydrology}, @@ -221,4 +221,15 @@ @article{Brauer2014 doi={10.5194/hess-18-4007-2014} } +@article{Viviroli2009PREVAH, + title={An introduction to the hydrological modelling system PREVAH and its pre-and post-processing-tools}, + author={Viviroli, Daniel and Zappa, Massimiliano and Gurtz, Joachim and Weingartner, Rolf}, + journal={Environmental Modelling \& Software}, + volume={24}, + number={10}, + pages={1209--1222}, + year={2009}, + publisher={Elsevier} +} + @Comment{jabref-meta: databaseType:bibtex;} diff --git a/hydpy/docs/rst/HydPy-H.rst b/hydpy/docs/rst/HydPy-H.rst index 1aaa872484..0444096476 100644 --- a/hydpy/docs/rst/HydPy-H.rst +++ b/hydpy/docs/rst/HydPy-H.rst @@ -4,17 +4,15 @@ HydPy-H (HBV) ============= -HydPy implements a very close emulation of the central routines of -the famous HBV96 model, introduced by Lindstroem et al -:cite:`ref-LINDSTROM1997272`. -As discussed in :cite:`ref-Tyralla2013`, the results of -version 1 application models of HydPy-H and the IHMS-HBV96 -implementation of the Swedish Meteorological and Hydrological Institute -agree very well for the majority of the tested river basins [#f1]_. -This documentation focusses on technical aspects of HydPy-H and tries -to be as precise as possible regarding the implementation of the -process equations. The background of the scientifical development of -the HBV96 model is more thoroughly covered in Lindstroem et al +*HydPy* implements a very close emulation of the central routines of the famous +HBV96 model, introduced by Lindstroem et al :cite:`ref-Lindstrom1997HBV96`. +As discussed in :cite:`ref-Tyralla2013`, the results of version 1 application +models of HydPy-H and the IHMS-HBV96 implementation of the Swedish +Meteorological and Hydrological Institute agree very well for the majority of +the tested river basins [#f1]_. This documentation focusses on technical +aspects of HydPy-H and tries to be as precise as possible regarding the +implementation of the process equations. The background of the scientifical +development of the HBV96 model is more thoroughly covered in Lindstroem et al. :cite:`ref-LINDSTROM1997272`. HydPy-H is divided into three base models, which can be used to compile @@ -31,13 +29,14 @@ So far the following application models are compiled: .. toctree:: - hland_v1 (HBV96 version of HydPy-H-Land) + hland_v1 (HBV96) hland_v2 (under development) - hstream_v1 (HBV96 version of HydPy-H-Stream) - hbranch_v1 (HBV96 version of HydPy-H-Branch) + hland_v3 (HBV96/PREVAH) + hstream_v1 (HBV96) + hbranch_v1 (HBV96) All these application models are stand-alone models, which can be -combined freely with all other models implemented in HydPy. +combined freely with all other models implemented in *HydPy*. .. rubric:: Footnotes diff --git a/hydpy/models/hland/hland_constants.py b/hydpy/models/hland/hland_constants.py index ae4f0a6ef4..8865f00bec 100644 --- a/hydpy/models/hland/hland_constants.py +++ b/hydpy/models/hland/hland_constants.py @@ -1,29 +1,19 @@ # -*- coding: utf-8 -*- -"""The HydPy-H-Land model (|hland|) allows for the subdivision of subbasins -into zones (hydrological response units). Some processes, e.g. interception, -are calculated separately for each zone. This is why some parameters (e.g. -the interception capacity |IcMax|) and some sequences (e.g. the actual -interception storage |Ic|) are 1-dimensional. Each entry represents the -value of a different zone. - -In contrasts to the original HBV96 model, the HydPy-H-Land model allows for -arbitrary definitions of zones. Nevertheless, the original distinction -in accordance with four different zone types is still supported. The -parameter |ZoneType| defines e.g. which entry of |IcMax| is related to -which zone type via integer values. Note that for zones of type |FIELD| -and |FOREST| the same equations are applied. (Usually, larger |IcMax| -values and smaller |CFMax| are assigned to |FOREST| zones due to their -higher leaf area index and the associated decrease in solar radiation.) -On the contrary, zones of type |GLACIER| and |ILAKE| are partly connected -to different process equations. - -For comprehensibility, this module introduces the relevant integer constants. -Through performing a wildcard import +"""Base model |hland| allows dividing subbasins into zones (hydrological response +units). It applies the equations related to some processes (for example, interception) +separately for each zone. Consequently, parameters as the interception capacity +|IcMax| and sequences as the actual interception storage |Ic| are 1-dimensional. +Each entry represents the value of a different zone. + +In contrast to the original HBV96 model, |hland| allows defining individual parameter +values for each zone, which provides flexibility but might also be a little overwhelming +in many use-cases. Hence, we also support the original HBV96-distinction into the zone +types "field", "forest", "glacier", and "ilake" (internal lake). Parameter "ZoneType" +specifies the type of each response unit via one of the integer constants |FIELD|, +|FOREST|, |GLACIER|, and |ILAKE|. Through performing a wildcard import, these constants +become available in your local namespace: >>> from hydpy.models.hland import * - -these are available in your local namespace: - >>> FIELD, FOREST, GLACIER, ILAKE (1, 2, 3, 4) """ diff --git a/hydpy/models/hland/hland_control.py b/hydpy/models/hland/hland_control.py index 9721efb716..c0f2a126aa 100644 --- a/hydpy/models/hland/hland_control.py +++ b/hydpy/models/hland/hland_control.py @@ -1,18 +1,22 @@ # -*- coding: utf-8 -*- -# pylint: disable=missing-docstring -# pylint: enable=missing-docstring - +""" +.. _`issue 67`: https://github.com/hydpy-dev/hydpy/issues/67 +""" # import... +# from standard library +import warnings + # from site-packages import numpy # ...from HydPy +from hydpy.core import exceptiontools +from hydpy.core import objecttools from hydpy.core import parametertools # ...from hland -from hydpy.core import exceptiontools -from hydpy.core import objecttools from hydpy.models.hland import hland_constants +from hydpy.models.hland import hland_fixed from hydpy.models.hland import hland_parameters @@ -25,22 +29,27 @@ class Area(parametertools.Parameter): class NmbZones(parametertools.Parameter): """Number of zones (hydrological response units) in a subbasin [-]. - Note that |NmbZones| determines the length of most 1-dimensional - HydPy-H-Land parameters and sequences. This required that the value of - the respective |NmbZones| instance is set before any of the values - of these 1-dimensional parameters or sequences are set. Changing the - value of the |NmbZones| instance necessitates setting their values - again. + Note that |NmbZones| determines the length of most 1-dimensional parameters and + sequences. Usually, you should first prepare |NmbZones| and define the values of + all 1-dimensional parameters and sequences afterwards: - Examples: + >>> from hydpy.models.hland import * + >>> parameterstep("1d") + >>> nmbzones(5) + >>> icmax.shape + (5,) + >>> states.ic.shape + (5,) - >>> from hydpy.models.hland import * - >>> parameterstep("1d") - >>> nmbzones(5) - >>> icmax.shape - (5,) - >>> states.ic.shape - (5,) + Changing the value of "N" later reshapes the affected parameters and sequences and + makes it necessary the reset their values: + + >>> icmax(2.0) + >>> icmax + icmax(2.0) + >>> nmbzones(3) + >>> icmax + icmax(?) """ NDIM, TYPE, TIME, SPAN = 0, int, None, (1, None) @@ -63,10 +72,10 @@ def __call__(self, *args, **kwargs): class ZoneType(parametertools.NameParameter): - """Type of each zone. + """Type of each zone [-]. - For increasing legibility, the HydPy-H-Land constants are used for - string representions of |ZoneType| objects: + Parameter |ZoneType| relies on the integer constants defined in module + |hland_constants| for representing zone types: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -123,7 +132,7 @@ class PCorr(hland_parameters.ParameterComplete): class PCAlt(hland_parameters.ParameterComplete): - """Elevation correction factor for precipitation [-1/100m].""" + """Elevation correction factor for precipitation [1/100m].""" NDIM, TYPE, TIME, SPAN = 1, float, None, (None, None) @@ -291,17 +300,17 @@ class K(parametertools.Parameter): In addition to the |Parameter| call method, it is possible to set the value of parameter |K| in accordance to the keyword arguments - `khq`, `hq` and (optionally) `alpha`. If `alpha` is not given, the - value of the respective |Alpha| instance is taken. This requires the - |Alpha| instance to be initialized beforehand. + `khq`, `hq` and (optionally) `alpha`: + + Parameter |K| allows defining its value via the keyword arguments `khq`, `hq` and + (optionally) `alpha`: - Basic Equation: :math:`K = \\frac{HQ}{(HQ/KHQ)^{1+Alpha}}` Examples: - When directly setting the value of parameter k, one only needs to be - aware of its time dependence: + When directly setting the value of parameter |K|, one should be be aware of + its time dependence: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -312,8 +321,7 @@ class K(parametertools.Parameter): >>> k.value 1.0 - Alternatively, one can specify the following three keyword - arguments directly,... + Alternatively, one can specify the mentioned three keyword arguments: >>> k(hq=10.0, khq=2.0, alpha=1.0) >>> k @@ -321,7 +329,8 @@ class K(parametertools.Parameter): >>> k.value 0.2 - ...or define the value of parameter alpha beforehand: + If a value for keyword argument `alpha` is missing, parameter |K| tries to + query it from parameter |Alpha|. >>> alpha(2.0) >>> k(hq=10.0, khq=2.0) @@ -330,30 +339,29 @@ class K(parametertools.Parameter): >>> k.value 0.04 - The following exceptions occur for wrong combinations of - keyword arguments or when |Alpha| has not been prepared - beforehand (still has the value |numpy.nan|): + The following exceptions occur for wrong combinations of keyword arguments or + when |Alpha| is not ready (still has the value |numpy.nan|): >>> k(wrong=1) Traceback (most recent call last): ... - ValueError: For parameter `k` of element `?` a value can be set \ -directly or indirectly by using the keyword arguments `khq` and `hq`. + ValueError: For parameter `k` of element `?` a value can be set directly or \ +indirectly by using the keyword arguments `khq` and `hq`. >>> k(hq=10.0) Traceback (most recent call last): ... - ValueError: For the alternative calculation of parameter `k` of \ -element `?`, at least the keywords arguments `khq` and `hq` must be given. + ValueError: For the alternative calculation of parameter `k` of element `?`, \ +at least the keywords arguments `khq` and `hq` must be given. >>> import numpy >>> alpha(numpy.nan) >>> k(hq=10.0, khq=2.0) Traceback (most recent call last): ... - RuntimeError: For the alternative calculation of parameter `k` of \ -element `?`, either the keyword argument `alpha` must be given or the value \ -of parameter `alpha` must be defined beforehand. + RuntimeError: For the alternative calculation of parameter `k` of element `?`, \ +either the keyword argument `alpha` must be given or the value of parameter `alpha` \ +must be defined beforehand. """ NDIM, TYPE, TIME, SPAN = 0, float, True, (0.0, None) @@ -393,12 +401,188 @@ def __call__(self, *args, **kwargs): self(hq / ((hq / khq) ** (alpha + 1.0))) +class SGR(parametertools.Parameter): + """Threshold content of |SUZ| for the generation of surface runoff [mm].""" + + NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, None) + + +class K0(parametertools.Parameter): + """Storage time for surface runoff [T].""" + + NDIM, TYPE, TIME, SPAN = 1, float, False, (None, None) + + # CONTROLPARAMETERS = (K1,) defined below + + def trim(self, lower=None, upper=None): + r"""Trim |K0| following :math:`K^* \leq K0 \leq K1` with + :math:`K^* = -1/ln \left( 1 - e^{-1 / k1} \right)`. + + The additional restriction :math:`K^*` serves to prevent the storage |SUZ| + from taking on negative values (see `issue 67`_). + + >>> from hydpy.models.hland import * + >>> simulationstep("1d") + >>> parameterstep("1h") + >>> nmbzones(5) + >>> k1(48.0, 48.0, 48.0, 48.0, nan) + >>> k0(24.0, 36.0, 48.0, 72.0, 72.0) + >>> k0 + k0(25.730308, 36.0, 48.0, 48.0, 72.0) + """ + if lower is None: + try: + lower = -1.0 / numpy.log(1.0 - numpy.exp(-1.0 / self.subpars.k1.values)) + except exceptiontools.AttributeNotReady: + lower = 0.0 + if upper is None: + upper = exceptiontools.getattr_(self.subpars.k1, "value", None) + super().trim(lower, upper) + + +class K1(parametertools.Parameter): + """Storage time for interflow [T].""" + + NDIM, TYPE, TIME, SPAN = 1, float, False, (None, None) + + # CONTROLPARAMETERS = (K0, K2,) defined below + FIXEDPARAMETERS = (hland_fixed.K1L,) + + def trim(self, lower=None, upper=None): + r"""Trim |K1| following :math:`max (K0, K^*) \leq K1 \leq K2` with + :math:`K^* = max \left( -1/ln \left( 1 - e^{-1 / k0} \right), K1L \right)`. + + The additional restriction :math:`K^*` serves to prevent the storage |SUZ| + from taking on negative values (see `issue 67`_). + + >>> from hydpy.models.hland import * + >>> simulationstep("1d") + >>> parameterstep("1h") + >>> nmbzones(9) + >>> k1(24.0, 24.0, 72.0, 120.0, 24.0, 24.0, 120.0, nan, nan) + >>> k1 + k1(34.624681, 34.624681, 72.0, 120.0, 34.624681, 34.624681, 120.0, nan, + nan) + >>> k1.values = nan + >>> k0(48.0, 24.0, 24.0, 24.0, nan, 24.0, nan, 24.0, nan) + >>> k2(96.0, 96.0, 96.0, 96.0, nan, nan, 96.0, 96.0, nan) + >>> k1(24.0, 24.0, 72.0, 120.0, 24.0, 24.0, 120.0, nan, nan) + >>> k1 + k1(48.0, 52.324614, 72.0, 96.0, 34.624681, 52.324614, 96.0, nan, nan) + """ + if lower is None: + k1l = self.subpars.pars.fixed.k1l.value + try: + lower = self.subpars.k0.values + except exceptiontools.AttributeNotReady: + lower = k1l + else: + lower = numpy.clip( + lower, + -1.0 / numpy.log(1.0 - numpy.exp(-1.0 / lower)), + numpy.inf, + ) + lower = numpy.clip(lower, k1l, numpy.inf) + lower[numpy.isnan(lower)] = k1l + if upper is None: + upper = exceptiontools.getattr_(self.subpars.k2, "values", None) + super().trim(lower, upper) + + +class SG1Max(parametertools.Parameter): + """Maximum content of the fast response groundwater reservoir |SG1| [mm].""" + + NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, None) + + class K4(parametertools.Parameter): """Recession coefficient of the lower zone layer [1/T].""" NDIM, TYPE, TIME, SPAN = 0, float, True, (0.0, None) +class K2(parametertools.Parameter): + """Storage time for quick response baseflow [T].""" + + NDIM, TYPE, TIME, SPAN = 1, float, False, (None, None) + + # CONTROLPARAMETERS = (K1, K3,) defined below + FIXEDPARAMETERS = (hland_fixed.K1L,) + + def trim(self, lower=None, upper=None): + r"""Trim |K2| following :math:`max(K1, K1L) \leq K2 \leq K3`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1d") + >>> parameterstep("1h") + >>> nmbzones(6) + >>> k2(12.0, 12.0, 12.0, nan, 96.0, 120.0) + >>> k2 + k2(34.624681, 34.624681, 34.624681, nan, 96.0, 120.0) + >>> k2.values = nan + >>> k1(24.0, 72.0, nan, nan, nan, 72.0) + >>> k3(96.0) + >>> k2(12.0, 12.0, 12.0, nan, 96.0, 120.0) + >>> k2 + k2(34.624681, 72.0, 34.624681, nan, 96.0, 96.0) + """ + if lower is None: + k1l = self.subpars.pars.fixed.k1l.value + try: + lower = self.subpars.k1.values + except exceptiontools.AttributeNotReady: + lower = k1l + else: + lower[numpy.isnan(lower)] = k1l + lower = numpy.clip(lower, k1l, numpy.inf) + if upper is None: + upper = exceptiontools.getattr_(self.subpars.k3, "value", None) + super().trim(lower, upper) + + +class K3(parametertools.Parameter): + """Storage time for delayed baseflow [T].""" + + NDIM, TYPE, TIME, SPAN = 0, float, False, (1.0, None) + + CONTROLPARAMETERS = (K2,) + FIXEDPARAMETERS = (hland_fixed.K1L,) + + def trim(self, lower=None, upper=None): + r"""Trim |K3| in accordance with :math:`max(K2, K1L) \leq K3`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1d") + >>> parameterstep("1h") + >>> nmbzones(3) + >>> k3(12.0) + >>> k3 + k3(34.624681) + >>> k3.values = nan + >>> k2(36.0, 36.0, nan) + >>> k2.value[0] /= 3.0 + >>> k3(12.0) + >>> k3 + k3(36.0) + >>> k2.values[1] /= 3.0 + >>> k3(12.0) + >>> k3 + k3(34.624681) + """ + if lower is None: + k1l = self.subpars.pars.fixed.k1l.value + try: + with warnings.catch_warnings(): + warnings.filterwarnings("error") + lower = numpy.nanmax(self.subpars.k2.values) + except (exceptiontools.AttributeNotReady, RuntimeWarning): + lower = k1l + else: + if not k1l < lower: + lower = k1l + super().trim(lower, upper) + + class Gamma(parametertools.Parameter): """Nonlinearity parameter of the lower zone layer [-].""" @@ -435,3 +619,14 @@ class Abstr(parametertools.Parameter): """Abstraction of water from computed outflow [m³/s].""" NDIM, TYPE, TIME, SPAN = 0, float, None, (None, None) + + +K0.CONTROLPARAMETERS = (K1,) +K1.CONTROLPARAMETERS = ( + K0, + K2, +) +K2.CONTROLPARAMETERS = ( + K1, + K3, +) diff --git a/hydpy/models/hland/hland_derived.py b/hydpy/models/hland/hland_derived.py index ff2f50836e..f001286fab 100644 --- a/hydpy/models/hland/hland_derived.py +++ b/hydpy/models/hland/hland_derived.py @@ -3,6 +3,9 @@ # pylint: enable=missing-docstring # import... +# ...from standard library +import warnings + # ...from site-packages import numpy @@ -15,6 +18,8 @@ from hydpy.models.hland import hland_control from hydpy.models.hland.hland_constants import ILAKE, GLACIER +_ZERO_DIVISION_MESSAGE = "divide by zero encountered in true_divide" + class RelSoilArea(parametertools.Parameter): """Relative area of all |FIELD| and |FOREST| zones [-].""" @@ -78,7 +83,8 @@ def update(self): class RelZoneArea( - parametertools.RelSubweightsMixin, hland_parameters.ParameterComplete + parametertools.RelSubweightsMixin, + hland_parameters.ParameterComplete, ): """Relative zone area of all zone types [-]. @@ -102,7 +108,8 @@ class RelZoneArea( class RelSoilZoneArea( - parametertools.RelSubweightsMixin, hland_parameters.ParameterSoil + parametertools.RelSubweightsMixin, + hland_parameters.ParameterSoil, ): """Relative zone area of all |FIELD| and |FOREST| zones [-]. @@ -126,7 +133,8 @@ class RelSoilZoneArea( class RelLandZoneArea( - parametertools.RelSubweightsMixin, hland_parameters.ParameterLand + parametertools.RelSubweightsMixin, + hland_parameters.ParameterLand, ): """Relative zone area of all |FIELD|, |FOREST|, and |GLACIER| zones [-]. @@ -198,9 +206,9 @@ def update(self): >>> derived.dt dt(0.2) - Note that the value assigned to recstep is related to the given - parameter step size of one day. The actually applied recstep of - the last example is: + Note that the value assigned to parameter |RecStep| depends on the current + parameter step size (one day). Due to the current simulation step size (one + hour), the applied |RecStep| value is five: >>> recstep.value 5 @@ -208,8 +216,167 @@ def update(self): self(1 / self.subpars.pars.control.recstep) +class W0(parametertools.Parameter): + """Weight for calculating surface runoff [-].""" + + NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, 1.0) + + CONTROLPARAMETERS = (hland_control.K0,) + + def update(self): + """Update |W0| based on :math:`W0 = e^{-1/K0}`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> nmbzones(5) + >>> k0(0.0, 0.05, 0.5, 5.0, inf) + >>> from hydpy import round_ + >>> round_(k0.values) + 0.0, 1.2, 12.0, 120.0, inf + >>> derived.w0.update() + >>> derived.w0 + w0(0.0, 0.434598, 0.920044, 0.991701, 1.0) + """ + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", _ZERO_DIVISION_MESSAGE) + self.values = numpy.exp(-1.0 / self.subpars.pars.control.k0.values) + + +class W1(parametertools.Parameter): + """Weight for calculating interflow [-].""" + + NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, 1.0) + + CONTROLPARAMETERS = (hland_control.K1,) + + def update(self): + """Update |W1| based on :math:`W1 = e^{-1/K1}`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> nmbzones(4) + >>> k1(0.05, 0.5, 5.0, inf) + >>> from hydpy import round_ + >>> round_(k1.values) + 1.442695, 12.0, 120.0, inf + >>> derived.w1.update() + >>> derived.w1 + w1(0.5, 0.920044, 0.991701, 1.0) + """ + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", _ZERO_DIVISION_MESSAGE) + self.values = numpy.exp(-1.0 / self.subpars.pars.control.k1.values) + + +class W2(parametertools.Parameter): + """Weight for calculating the quick response base flow [-].""" + + NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, 1.0) + + CONTROLPARAMETERS = (hland_control.K2,) + + def update(self): + """Update |W2| based on :math:`W2 = e^{-1/K2}`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> nmbzones(4) + >>> k2(0.05, 0.5, 5.0, inf) + >>> from hydpy import round_ + >>> round_(k2.values) + 1.442695, 12.0, 120.0, inf + >>> derived.w2.update() + >>> derived.w2 + w2(0.5, 0.920044, 0.991701, 1.0) + """ + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", _ZERO_DIVISION_MESSAGE) + self.values = numpy.exp(-1.0 / self.subpars.pars.control.k2.values) + + +class W3(parametertools.Parameter): + """Weight for calculating the response of the first-order groundwater reservoir + [-].""" + + NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, 1.0) + + CONTROLPARAMETERS = (hland_control.K3,) + + def update(self): + """Update |W3| based on :math:`W3 = e^{-1/K3}`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> k3(5.0) + >>> from hydpy import round_ + >>> round_(k3.value) + 120.0 + >>> derived.w3.update() + >>> derived.w3 + w3(0.991701) + """ + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", _ZERO_DIVISION_MESSAGE) + self.values = numpy.exp(-1.0 / self.subpars.pars.control.k3.value) + + +class K4(parametertools.Parameter): + """Storage time for very delayed baseflow [T].""" + + NDIM, TYPE, TIME, SPAN = 0, float, False, (0.0, None) + + def update(self): + """Update |hland_derived.K4| based on :math:`K4 = K3/9`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> k3(1.0) + >>> from hydpy import round_ + >>> round_(k3.value) + 24.0 + >>> derived.k4.update() + >>> derived.k4 + k4(9.0) + >>> round_(derived.k4.value) + 216.0 + """ + self.values = 9.0 * self.subpars.pars.control.k3.value + + +class W4(parametertools.Parameter): + """Weight for calculating the response of the second-order groundwater reservoir + [-].""" + + NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, 1.0) + + DERIVEDPARAMETERS = (K4,) + + def update(self): + """Update |W4| based on :math:`W4 = e^{-1/K4}`. + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> derived.k4(5.0) + >>> from hydpy import round_ + >>> round_(derived.k4.value) + 120.0 + >>> derived.w4.update() + >>> derived.w4 + w4(0.991701) + """ + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", _ZERO_DIVISION_MESSAGE) + self.values = numpy.exp(-1.0 / self.subpars.k4.value) + + class UH(parametertools.Parameter): - """Unit hydrograph ordinates based on a isosceles triangle [-].""" + """Unit hydrograph ordinates based on an isosceles triangle [-].""" NDIM, TYPE, TIME, SPAN = 1, float, None, (0.0, 1.0) strict_valuehandling: bool = False @@ -223,9 +390,9 @@ def update(self): This method also updates the shape of log sequence |QUH|. - |MaxBaz| determines the end point of the triangle. A value of - |MaxBaz| being not larger than the simulation step size is - identical with applying no unit hydrograph at all: + |MaxBaz| determines the endpoint of the triangle. A value of |MaxBaz| being + not larger than the simulation step size is identical with applying no unit + hydrograph at all: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -237,9 +404,9 @@ def update(self): >>> derived.uh uh(1.0) - Note that, due to difference of the parameter and the simulation - step size in the given example, the largest assignment resulting - in a `inactive` unit hydrograph is 1/2: + Note that, due to the given difference of the parameter and the simulation step + size, the largest assigned value resulting in an "inactive" unit hydrograph is + 1/2: >>> maxbaz(0.5) >>> derived.uh.update() @@ -248,9 +415,8 @@ def update(self): >>> derived.uh uh(1.0) - When |MaxBaz| is in accordance with two simulation steps, both - unit hydrograph ordinats must be 1/2 due to symmetry of the - triangle: + When the value of |MaxBaz| is twice the simulation step size, both unit + hydrograph ordinates must be 1/2 due to the symmetry of the triangle: >>> maxbaz(1.0) >>> derived.uh.update() @@ -261,8 +427,8 @@ def update(self): >>> derived.uh.values array([ 0.5, 0.5]) - A |MaxBaz| value in accordance with three simulation steps results - in the ordinate values 2/9, 5/9, and 2/9: + A |MaxBaz| value three times the simulation step size results in the ordinate + values 2/9, 5/9, and 2/9: >>> maxbaz(1.5) >>> derived.uh.update() @@ -271,9 +437,8 @@ def update(self): >>> derived.uh uh(0.222222, 0.555556, 0.222222) - And a final example, where the end of the triangle lies within - a simulation step, resulting in the fractions 8/49, 23/49, 16/49, - and 2/49: + When the end of the triangle lies in the middle of the fourth interval, the + resulting fractions are: >>> maxbaz(1.75) >>> derived.uh.update() @@ -330,8 +495,7 @@ def update(self): class KSC(parametertools.Parameter): - """Coefficient of the individual storages of the linear storage cascade - [1/T].""" + """Coefficient of the individual storages of the linear storage cascade [1/T].""" NDIM, TYPE, TIME, SPAN = 0, float, True, (0.0, None) @@ -341,8 +505,7 @@ class KSC(parametertools.Parameter): ) def update(self): - """Update |KSC| based on - :math:`KSC = \\frac{2 \\cdot NmbStorages}{MaxBaz}`. + """Update |KSC| based on :math:`KSC = \\frac{2 \\cdot NmbStorages}{MaxBaz}`. >>> from hydpy.models.hland import * >>> simulationstep('12h') @@ -374,8 +537,7 @@ class QFactor(parametertools.Parameter): CONTROLPARAMETERS = (hland_control.Area,) def update(self): - """Update |QFactor| based on |Area| and the current simulation - step size. + """Update |QFactor| based on |Area| and the current simulation step size. >>> from hydpy.models.hland import * >>> parameterstep("1d") diff --git a/hydpy/models/hland/hland_fixed.py b/hydpy/models/hland/hland_fixed.py new file mode 100644 index 0000000000..6dd6e1f427 --- /dev/null +++ b/hydpy/models/hland/hland_fixed.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# pylint: disable=missing-docstring +# pylint: enable=missing-docstring + +# import... +# ...from HydPy +from hydpy.core import parametertools + + +class FSG(parametertools.FixedParameter): + """Fraction between the spatial extents of the first-order and the second-order + slow response groundwater reservoir [-].""" + + NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None) + INIT = 8.0 / 9.0 + + +class K1L(parametertools.FixedParameter): + r"""Lowest possible lower boundary value for the parameters |K1|, |K2|, and |K3| + [-]. + + To prevent |SUZ| from taking on negative values, we need to make sure that + :math:`\left( 1 - e^{-1/K0} \right) + \left( 1 - e^{-1/K1} \right) < 1` holds. + Also, we need to follow the restriction :math:`K0 \leq K1 \leq K2 \leq K3`. + |K1L| defines the lowest value meeting both constraints: + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> from numpy import exp + >>> 2.0 * (1.0 - exp(-1.0/fixed.k1l)) + 1.0 + """ + + NDIM, TYPE, TIME, SPAN = 0, float, None, (0.0, None) + INIT = 1.4426950408889632 diff --git a/hydpy/models/hland/hland_fluxes.py b/hydpy/models/hland/hland_fluxes.py index 9b95fba3f3..c0097c9471 100644 --- a/hydpy/models/hland/hland_fluxes.py +++ b/hydpy/models/hland/hland_fluxes.py @@ -95,7 +95,10 @@ class In_(hland_sequences.Flux1DSequence): class R(hland_sequences.Flux1DSequence): - """Effective soil response [mm].""" + """Effective soil response [mm]. + + Note that PREVAH uses the abbreviation `DSUZ` instead of the HBV96 abbreviation `R`. + """ NDIM, NUMERIC = 1, False @@ -119,7 +122,7 @@ class CF(hland_sequences.Flux1DSequence): class ContriArea(sequencetools.FluxSequence): - """Fraction of the `soil area` contributing to runoff generation [-].""" + """Fraction of the "soil area" contributing to runoff generation [-].""" NDIM, NUMERIC = 0, False @@ -136,6 +139,17 @@ class Perc(sequencetools.FluxSequence): NDIM, NUMERIC = 0, False +class DP(sequencetools.FluxSequence): + """Deep percolation rate [mm]. + + Note that PREVAH uses the abbreviation `Perc`, which is also the abbreviation used + by HBV96. However, |Perc| is 0-dimensional while |DP| is 1-dimensional, which is + why we need to define separate sequence classes with different names. + """ + + NDIM, NUMERIC = 1, False + + class Q0(sequencetools.FluxSequence): """Outflow from the upper zone layer [mm].""" @@ -154,6 +168,54 @@ class Q1(sequencetools.FluxSequence): NDIM, NUMERIC = 0, False +class RS(sequencetools.FluxSequence): + """Surface runoff [mm].""" + + NDIM, NUMERIC = 1, False + + +class RI(sequencetools.FluxSequence): + """Interflow [mm].""" + + NDIM, NUMERIC = 1, False + + +class GR1(sequencetools.FluxSequence): + """Recharge into the fast response groundwater reservoir [mm].""" + + NDIM, NUMERIC = 1, False + + +class RG1(sequencetools.FluxSequence): + """Discharge from the fast response groundwater reservoir [mm].""" + + NDIM, NUMERIC = 1, False + + +class GR2(sequencetools.FluxSequence): + """Recharge into the first-order slow response groundwater reservoir [mm].""" + + NDIM, NUMERIC = 0, False + + +class RG2(sequencetools.FluxSequence): + """Discharge from the first-order slow response groundwater reservoir [mm].""" + + NDIM, NUMERIC = 0, False + + +class GR3(sequencetools.FluxSequence): + """Recharge into the second-order slow response groundwater reservoir [mm].""" + + NDIM, NUMERIC = 0, False + + +class RG3(sequencetools.FluxSequence): + """Discharge from the second-order slow response groundwater reservoir [mm].""" + + NDIM, NUMERIC = 0, False + + class InUH(sequencetools.FluxSequence): """Input of the triangle unit hydrograph [mm].""" @@ -166,6 +228,24 @@ class OutUH(sequencetools.FluxSequence): NDIM, NUMERIC = 0, False +class RO(sequencetools.FluxSequence): + """Sum of all flow components [mm].""" + + NDIM, NUMERIC = 0, False + + +class RA(sequencetools.FluxSequence): + """Actual abstraction from runoff [mm].""" + + NDIM, NUMERIC = 0, False + + +class RT(sequencetools.FluxSequence): + """Total model outflow [mm].""" + + NDIM, NUMERIC = 0, False + + class QT(sequencetools.FluxSequence): """Total model outflow [m³/s].""" diff --git a/hydpy/models/hland/hland_logs.py b/hydpy/models/hland/hland_logs.py index d0d177ac1d..8cf6bef49b 100644 --- a/hydpy/models/hland/hland_logs.py +++ b/hydpy/models/hland/hland_logs.py @@ -14,7 +14,7 @@ class QUH(sequencetools.LogSequence): - """Whole outflow delayed by means of the unit hydrograph [mm]. + """All temporary outflow values of the unit hydrograph [mm]. The last value is always set to zero to avoid biased results: @@ -27,19 +27,18 @@ class QUH(sequencetools.LogSequence): >>> logs.quh quh(1.0, 2.0, 0.0) - When a wrong number of input values is given, |QUH| distributes - their sum equally and emits the following warning: + For a wrong number of input values, |QUH| distributes their sum equally and emits + the following warning: >>> logs.quh(1.0, 2.0, 3.0, 0.0) # doctest: +ELLIPSIS Traceback (most recent call last): ... - UserWarning: Due to the following problem, log sequence `quh` of \ -element `?` handling model `hland` could be initialised with a averaged \ -value only: While trying to set the value(s) of variable `quh`, the \ -following error occurred: While trying to convert the value(s) \ -`(1.0, 2.0, 3.0, 0.0)` to a numpy ndarray with shape `(3...)` and type \ -`float`, the following error occurred: could not broadcast input array \ -from shape (4...) into shape (3...) + UserWarning: Due to the following problem, log sequence `quh` of element `?` \ +handling model `hland` could be initialised with a averaged value only: While trying \ +to set the value(s) of variable `quh`, the following error occurred: While trying to \ +convert the value(s) `(1.0, 2.0, 3.0, 0.0)` to a numpy ndarray with shape `(3...)` and \ +type `float`, the following error occurred: could not broadcast input array from shape \ +(4...) into shape (3...) >>> logs.quh quh(3.0, 3.0, 0.0) diff --git a/hydpy/models/hland/hland_model.py b/hydpy/models/hland/hland_model.py index baeab9fba4..3ef834faae 100644 --- a/hydpy/models/hland/hland_model.py +++ b/hydpy/models/hland/hland_model.py @@ -14,6 +14,7 @@ from hydpy.models.hland.hland_constants import FIELD, FOREST, GLACIER, ILAKE from hydpy.models.hland import hland_control from hydpy.models.hland import hland_derived +from hydpy.models.hland import hland_fixed from hydpy.models.hland import hland_inputs from hydpy.models.hland import hland_fluxes from hydpy.models.hland import hland_states @@ -22,16 +23,15 @@ class Calc_TC_V1(modeltools.Method): - """Adjust the measured air temperature to the altitude of the - individual zones. + r"""Adjust the measured air temperature to the altitude of the individual zones. Basic equation: - :math:`TC = T - TCAlt \\cdot (ZoneZ-ZRelT)` + :math:`TC = T - TCAlt \cdot (ZoneZ - ZRelT)` Examples: - Prepare two zones, the first one lying at the reference - height and the second one 200 meters above: + Prepare two zones, the first one lying at the reference height and the second + one 200 meters above: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -39,9 +39,8 @@ class Calc_TC_V1(modeltools.Method): >>> zrelt(2.0) >>> zonez(2.0, 4.0) - Applying the usual temperature lapse rate of 0.6°C/100m does - not affect the temperature of the first zone but reduces the - temperature of the second zone by 1.2°C: + Applying the usual temperature lapse rate of 0.6°C/100m does not affect the + first zone but reduces the temperature of the second zone by 1.2°C: >>> tcalt(0.6) >>> inputs.t = 5.0 @@ -69,11 +68,11 @@ def __call__(model: modeltools.Model) -> None: class Calc_TMean_V1(modeltools.Method): - """Calculate the areal mean temperature of the subbasin. + r"""Calculate the areal mean temperature of the subbasin. Examples: - Prepare two zones, the first one being twice as large + The following example deals with two zones, the first one being twice as large as the second one: >>> from hydpy.models.hland import * @@ -81,8 +80,8 @@ class Calc_TMean_V1(modeltools.Method): >>> nmbzones(2) >>> derived.relzonearea(2.0/3.0, 1.0/3.0) - With temperature values of 5°C and 8°C of the respective zones, - the mean temperature is 6°C: + With temperature values of 5°C and 8°C for the respective zones, the mean + temperature is 6°C: >>> fluxes.tc = 5.0, 8.0 >>> model.calc_tmean_v1() @@ -106,18 +105,18 @@ def __call__(model: modeltools.Model) -> None: class Calc_FracRain_V1(modeltools.Method): - """Determine the temperature-dependent fraction of (liquid) rainfall + r"""Determine the temperature-dependent fraction of (liquid) rainfall and (total) precipitation. Basic equation: - :math:`FracRain = \\frac{TC-(TT-\\frac{TTInt}{2})}{TTInt}` + :math:`FracRain = \frac{TC-(TT-\frac{TTInt}{2})}{TTInt}` Restriction: - :math:`0 \\leq FracRain \\leq 1` + :math:`0 \leq FracRain \leq 1` Examples: - The threshold temperature of seven zones is 0°C and the corresponding + The threshold temperature of seven zones is 0°C, and the corresponding temperature interval of mixed precipitation 2°C: >>> from hydpy.models.hland import * @@ -126,17 +125,17 @@ class Calc_FracRain_V1(modeltools.Method): >>> tt(0.0) >>> ttint(2.0) - The fraction of rainfall is zero below -1°C, is one above 1°C and - increases linearly in between: + The fraction of rainfall is zero below -1°C, is one above 1°C, and increases + linearly in between: >>> fluxes.tc = -10.0, -1.0, -0.5, 0.0, 0.5, 1.0, 10.0 >>> model.calc_fracrain_v1() >>> fluxes.fracrain fracrain(0.0, 0.0, 0.25, 0.5, 0.75, 1.0, 1.0) - Note the special case of a zero temperature interval. With a - actual temperature being equal to the threshold temperature, the - rainfall fraction is one: + Note the particular case of a zero temperature interval. With an actual + temperature being equal to the threshold temperature, the rainfall fraction + is one: >>> ttint(0.0) >>> model.calc_fracrain_v1() @@ -168,27 +167,27 @@ def __call__(model: modeltools.Model) -> None: class Calc_RFC_SFC_V1(modeltools.Method): - """Calculate the corrected fractions rainfall/snowfall and total - precipitation. + r"""Calculate the corrected fractions of rainfall/snowfall and total precipitation. Basic equations: - :math:`RfC = RfCF \\cdot FracRain` \n - :math:`SfC = SfCF \\cdot (1 - FracRain)` + :math:`RfC = RfCF \cdot FracRain` + + :math:`SfC = SfCF \cdot (1 - FracRain)` Examples: - Assume five zones with different temperatures and hence - different fractions of rainfall and total precipitation: + Assume five zones with different temperatures and hence different fractions of + rainfall and total precipitation: >>> from hydpy.models.hland import * >>> parameterstep("1d") >>> nmbzones(5) >>> fluxes.fracrain = 0.0, 0.25, 0.5, 0.75, 1.0 - With no rainfall and no snowfall correction (implied by the - respective factors being one), the corrected fraction related - to rainfall is identical with the original fraction and the - corrected fraction related to snowfall behaves opposite: + With no rainfall and no snowfall correction (due to the respective factors + being one), the corrected fraction related to rain is identical with the + original fraction, while the corrected fraction related to snow behaves + oppositely: >>> rfcf(1.0) >>> sfcf(1.0) @@ -198,8 +197,8 @@ class Calc_RFC_SFC_V1(modeltools.Method): >>> fluxes.sfc sfc(1.0, 0.75, 0.5, 0.25, 0.0) - With a negative rainfall correction of 20% and a positive - snowfall correction of 20 % the corrected fractions are: + With a rainfall reduction of 20% and a snowfall increase of 20 %, the corrected + fractions are as follows: >>> rfcf(0.8) >>> sfcf(1.2) @@ -231,18 +230,16 @@ def __call__(model: modeltools.Model) -> None: class Calc_PC_V1(modeltools.Method): - """Apply the precipitation correction factors and adjust precipitation - to the altitude of the individual zones. + r"""Apply the precipitation correction factors and adjust precipitation to the + altitude of the individual zones. Basic equation: - :math:`PC = P \\cdot PCorr - \\cdot (1+PCAlt \\cdot (ZoneZ-ZRelP)) - \\cdot (RfC + SfC)` + :math:`PC = P \cdot PCorr \cdot (1+PCAlt \cdot (ZoneZ-ZRelP)) \cdot (RfC + SfC)` Examples: - Five zones are at an elevation of 200 m. A precipitation value - of 5 mm has been measured at a gauge at an elevation of 300 m: + Five zones are at an elevation of 200 m. A precipitation value of 5 mm has + been measured at a gauge at an elevation of 300 m: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -251,11 +248,9 @@ class Calc_PC_V1(modeltools.Method): >>> zonez(3.0) >>> inputs.p = 5.0 - The first four zones illustrate the individual precipitation - corrections due to the general precipitation correction factor - (|PCorr|, first zone), the altitude correction factor (|PCAlt|, - second zone), the rainfall related correction (|RfC|, third zone), - and the snowfall related correction factor (|SfC|, fourth zone). + The first four zones illustrate the individual precipitation corrections due to + the general (|PCorr|, first zone), the altitude (|PCAlt|, second zone), the + rainfall (|RfC|, third zone), and the snowfall adjustment (|SfC|, fourth zone). The fifth zone illustrates the interaction between all corrections: >>> pcorr(1.3, 1.0, 1.0, 1.0, 1.3) @@ -266,17 +261,16 @@ class Calc_PC_V1(modeltools.Method): >>> fluxes.pc pc(6.5, 5.5, 4.5, 6.0, 7.865) - Usually, one would set zero or positive values for parameter |PCAlt|. - But it is also allowed to set negative values, in order to reflect - possible negative relationships between precipitation and altitude. - To prevent from calculating negative precipitation when too large - negative values are applied, a truncation is performed: + Usually, one would set zero or positive values for parameter |PCAlt|. But it + is also allowed to assign negative values to reflect possible negative + relationships between precipitation and altitude. Method |Calc_PC_V1| performs + the required truncations to prevent negative precipitation values: + >>> pcalt(-1.0) >>> model.calc_pc_v1() >>> fluxes.pc pc(0.0, 0.0, 0.0, 0.0, 0.0) - """ CONTROLPARAMETERS = ( @@ -307,20 +301,19 @@ def __call__(model: modeltools.Model) -> None: class Calc_EP_V1(modeltools.Method): - """Adjust potential norm evaporation to the actual temperature. + r"""Adjust the potential norm evaporation to the actual temperature. Basic equation: - :math:`EP = EPN \\cdot (1 + ETF \\cdot (TMean - TN))` + :math:`EP = EPN \cdot (1 + ETF \cdot (TMean - TN))` Restriction: - :math:`0 \\leq EP \\leq 2 \\cdot EPN` + :math:`0 \leq EP \leq 2 \cdot EPN` Examples: - Assume four zones with different values of the temperature - related factor for the adjustment of evaporation (the - negative value of the first zone is not meaningful, but used - for illustration purporses): + Assume four zones with different values of the temperature-related factor for + adjusting evaporation (the negative value of the first zone is not meaningful + but applied for illustration): >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -329,20 +322,18 @@ class Calc_EP_V1(modeltools.Method): >>> inputs.tn = 20.0 >>> inputs.epn = 2.0 - With mean temperature equal to norm temperature, actual - (uncorrected) evaporation is equal to norm evaporation: + With mean temperature equal to norm temperature, actual (uncorrected) + evaporation is equal to norm evaporation: >>> fluxes.tmean = 20.0 >>> model.calc_ep_v1() >>> fluxes.ep ep(2.0, 2.0, 2.0, 2.0) - With mean temperature 5°C higher than norm temperature, potential - evaporation is increased by 1 mm for the third zone, which - possesses a very common adjustment factor. For the first zone, - potential evaporation is 0 mm (which is the smallest value - allowed), and for the fourth zone it is the double value of the - norm evaporation (which is the largest value allowed): + With a mean temperature 5°C higher than normal temperature, potential + evaporation is increased by 1 mm for the third zone. For the first zone, + potential evaporation is 0 mm (the smallest value allowed), and for the fourth + zone, it is the double value of the norm evaporation (largest value allowed): >>> fluxes.tmean = 25.0 >>> model.calc_ep_v1() @@ -372,25 +363,19 @@ def __call__(model: modeltools.Model) -> None: class Calc_EPC_V1(modeltools.Method): - """Apply the evaporation correction factors and adjust evaporation + r"""Apply the evaporation correction factors and adjust evaporation to the altitude of the individual zones. - Calculate the areal mean of (uncorrected) potential evaporation - for the subbasin, adjust it to the individual zones in accordance - with their heights and perform some corrections, among which one - depends on the actual precipitation. - Basic equation: - :math:`EPC = EP \\cdot ECorr - \\cdot (1+ECAlt \\cdot (ZoneZ-ZRelE)) - \\cdot exp(-EPF \\cdot PC)` + :math:`EPC = + EP \cdot ECorr \cdot (1 + ECAlt \cdot (ZoneZ - ZRelE)) \cdot exp(-EPF \cdot PC)` Examples: - Four zones are at an elevation of 200 m. A (uncorrected) - potential evaporation value of 2 mm and a (corrected) precipitation - value of 5 mm have been determined for each zone beforehand: + Four zones are at an elevation of 200 m. An (uncorrected) potential + evaporation value of 2 mm and a (corrected) precipitationvalue of 5 mm are + available at each zone: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -401,12 +386,10 @@ class Calc_EPC_V1(modeltools.Method): >>> fluxes.ep = 2.0 >>> fluxes.pc = 5.0 - The first three zones illustrate the individual evaporation - corrections due to the general evaporation correction factor - (|ECorr|, first zone), the altitude correction factor (|ECAlt|, - second zone), the precipitation related correction factor - (|EPF|, third zone). The fourth zone illustrates the interaction - between all corrections: + The first three zones illustrate the individual evaporation corrections due to + the general (|ECorr|, first zone), the altitude (|ECAlt|, second zone), and the + precipitation related adjustment (|EPF|, third zone). The fourth zone + illustrates the interaction between all corrections: >>> ecorr(1.3, 1.0, 1.0, 1.3) >>> ecalt(0.0, 0.1, 0.0, 0.1) @@ -415,8 +398,8 @@ class Calc_EPC_V1(modeltools.Method): >>> fluxes.epc epc(2.6, 1.8, 1.4, 1.638) - To prevent from calculating negative evaporation values when too - large values for parameter |ECAlt| are set, a truncation is performed: + Method |Calc_EPC_V1| performs truncations required to prevent negative + evaporation values: >>> ecalt(2.0) >>> model.calc_epc_v1() @@ -456,22 +439,20 @@ def __call__(model: modeltools.Model) -> None: class Calc_TF_Ic_V1(modeltools.Method): - """Calculate throughfall and update the interception storage - accordingly. + r"""Calculate throughfall and update the interception storage accordingly. Basic equation: - :math:`TF = \\Bigl \\lbrace + :math:`TF = \Bigl \lbrace { - {PC \\ | \\ Ic = IcMax} - \\atop - {0 \\ | \\ Ic < IcMax} + {PC \ | \ Ic = IcMax} + \atop + {0 \ | \ Ic < IcMax} }` Examples: - Initialize six zones of different types. Assume a - generall maximum interception capacity of 2 mm. All zones receive - a 0.5 mm input of precipitation: + Initialise six zones of different types. Assume a general interception + capacity of 2 mm. All zones receive a precipitation input of 0.5 mm: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -482,16 +463,13 @@ class Calc_TF_Ic_V1(modeltools.Method): >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_tf_ic_v1() - For glaciers (first zone) and internal lakes (second zone) the - interception routine does not apply. Hence, all precipitation is - routed as throughfall. For fields and forests, the interception - routine is identical (usually, only larger capacities for forests - are assumed, due to their higher leaf area index). Hence, the - results of the third and the second zone are equal. The last - three zones demonstrate, that all precipitation is stored until - the interception capacity is reached; afterwards, all precepitation - is routed as throughfall. Initial storage reduces the effective - capacity of the respective simulation step: + The interception routine does not apply to glaciers (first zone) and internal + lakes (second zone). Hence, all precipitation becomes throughfall. For fields + and forests, the interception routine works identical, so the results of the + third and the second zone are equal. The last three zones demonstrate that all + precipitation is stored until the intercepted water reached the available + capacity; afterwards, all precipitation becomes throughfall. Initial storage + reduces the effective capacity of the respective simulation step: >>> states.ic ic(0.0, 0.0, 0.5, 0.5, 1.5, 2.0) @@ -543,21 +521,21 @@ def __call__(model: modeltools.Model) -> None: class Calc_EI_Ic_V1(modeltools.Method): - """Calculate interception evaporation and update the interception + r"""Calculate interception evaporation and update the interception storage accordingly. Basic equation: - :math:`EI = \\Bigl \\lbrace + :math:`EI = \Bigl \lbrace { - {EPC \\ | \\ Ic > 0} - \\atop - {0 \\ | \\ Ic = 0} + {EPC \ | \ Ic > 0} + \atop + {0 \ | \ Ic = 0} }` Examples: - Initialize six zones of different types. For all zones - a (corrected) potential evaporation of 0.5 mm is given: + Initialise six zones of different types. For all zones, we define a + (corrected) potential evaporation of 0.5 mm: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -567,15 +545,12 @@ class Calc_EI_Ic_V1(modeltools.Method): >>> states.ic = 0.0, 0.0, 0.0, 0.0, 1.0, 2.0 >>> model.calc_ei_ic_v1() - For glaciers (first zone) and internal lakes (second zone) the - interception routine does not apply. Hence, no interception - evaporation can occur. For fields and forests, the interception - routine is identical (usually, only larger capacities for forests - are assumed, due to their higher leaf area index). Hence, the - results of the third and the second zone are equal. The last - three zones demonstrate, that all interception evaporation is equal - to potential evaporation until the interception storage is empty; - afterwards, interception evaporation is zero: + The interception routine does not apply to glaciers (first zone) and internal + lakes (second zone). Hence, no interception evaporation can occurs. For + fields and forests, the interception routine works identical, so the results + of the third and the second zone are equal. The last three zones demonstrate + that interception evaporation equals potential evaporation until the + interception storage is empty; afterwards, interception evaporation is zero: >>> states.ic ic(0.0, 0.0, 0.0, 0.0, 0.5, 1.5) @@ -626,16 +601,17 @@ def __call__(model: modeltools.Model) -> None: class Calc_SP_WC_V1(modeltools.Method): - """Add throughfall to the snow layer. + r"""Add throughfall to the snow layer. Basic equations: - :math:`\\frac{dSP}{dt} = TF \\cdot \\frac{SfC}{SfC+RfC}` \n - :math:`\\frac{dWC}{dt} = TF \\cdot \\frac{RfC}{SfC+RfC}` + :math:`\frac{dSP}{dt} = TF \cdot \frac{SfC}{SfC + RfC}` + + :math:`\frac{dWC}{dt} = TF \cdot \frac{RfC}{SfC + RfC}` - Exemples: + Examples: - Consider the following setting, in which eight zones of - different type receive a throughfall of 10mm: + Consider the following setting, in which eight zones of different type receive + a throughfall of 10mm: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -652,18 +628,16 @@ class Calc_SP_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 5.0, 5.0, 5.0, 8.0, 2.0, 8.0, 2.0) - The snow routine does not apply for internal lakes, which is why - both the ice storage and the water storage of the first zone - remain unchanged. The snow routine is identical for glaciers, - fields and forests in the current context, which is why the - results of the second, third, and fourth zone are equal. The - last four zones illustrate that the corrected snowfall fraction - as well as the corrected rainfall fraction are applied in a - relative manner, as the total amount of water yield has been - corrected in the interception module already. + The snow routine does not apply to internal lakes, which is why both the ice + storage and the water storage of the first zone remain unchanged. The snow + routine is identical for glaciers, fields, and forests (besides the additional + glacier melt), which is why the results of the second, third, and fourth zone + are equal. The last four zones illustrate that method |Calc_SP_WC_V1| applies + the corrected snowfall and rainfall fractions "relatively", considering that + the throughfall is already corrected. - When both factors are zero, the neither the water nor the ice - content of the snow layer changes: + When both factors are zero, neither the water nor the ice content of the snow + layer changes: >>> fluxes.sfc = 0.0 >>> fluxes.rfc = 0.0 @@ -706,19 +680,20 @@ def __call__(model: modeltools.Model) -> None: class Calc_Melt_SP_WC_V1(modeltools.Method): - """Calculate melting of the ice content within the snow layer and - update both the snow layers ice and the water content. + r"""Calculate the melting of the ice content within the snow layer and update both + the snow layers' ice and the water content. Basic equations: - :math:`\\frac{dSP}{dt} = - Melt` \n - :math:`\\frac{dWC}{dt} = + Melt` \n - :math:`Melt = min(cfmax \\cdot (TC-TTM), SP)` \n + :math:`\frac{dSP}{dt} = - Melt` + + :math:`\frac{dWC}{dt} = + Melt` + + :math:`Melt = min(cfmax \cdot (TC - TTM), SP)` Examples: - Six zones are initialized with the same threshold - temperature and degree day factor, but with different zone types - and initial ice contents: + We initialise six zones with the same threshold temperature and degree-day + factor but with different zone types and initial ice contents: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -730,18 +705,16 @@ class Calc_Melt_SP_WC_V1(modeltools.Method): >>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0 >>> states.wc = 2.0 - Note that the assumed length of the simulation step is only a - half day. Hence the effective value of the degree day factor - is not 4 but 2: + Note that the assumed length of the simulation step is a half day. Hence, + the effective value of the degree-day factor is not 4 but 2: >>> cfmax cfmax(4.0) >>> cfmax.values array([ 2., 2., 2., 2., 2., 2.]) - When the actual temperature is equal to the threshold - temperature for melting and refreezing, no melting occurs - and the states remain unchanged: + When the actual temperature is equal to the threshold temperature for melting + and refreezing, no melting occurs, and the states remain unchanged: >>> fluxes.tc = 2.0 >>> model.calc_melt_sp_wc_v1() @@ -752,8 +725,7 @@ class Calc_Melt_SP_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 2.0, 2.0, 2.0, 2.0, 2.0) - The same holds true for an actual temperature lower than the - threshold temperature: + The same holds for an actual temperature lower than the threshold temperature: >>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0 >>> states.wc = 2.0 @@ -766,11 +738,10 @@ class Calc_Melt_SP_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 2.0, 2.0, 2.0, 2.0, 2.0) - With an actual temperature 3°C above the threshold temperature, - melting can occur. Actual melting is consistent with potential - melting, except for the first zone, which is an internal lake, - and the last two zones, for which potential melting exceeds the - available frozen water content of the snow layer: + With an actual temperature of 3°C above the threshold temperature, melting can + occur. The actual melting is consistent with potential melting, except for the + first zone, being an internal lake, and the last two zones, for which + potential melting exceeds the available frozen water content of the snow layer: >>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0 >>> states.wc = 2.0 @@ -820,19 +791,20 @@ def __call__(model: modeltools.Model) -> None: class Calc_Refr_SP_WC_V1(modeltools.Method): - """Calculate refreezing of the water content within the snow layer and - update both the snow layers ice and the water content. + r"""Calculate refreezing of the water content within the snow layer and + update both the snow layers' ice and the water content. Basic equations: - :math:`\\frac{dSP}{dt} = + Refr` \n - :math:`\\frac{dWC}{dt} = - Refr` \n - :math:`Refr = min(cfr \\cdot cfmax \\cdot (TTM-TC), WC)` + :math:`\frac{dSP}{dt} = + Refr` + + :math:`\frac{dWC}{dt} = - Refr` + + :math:`Refr = min(cfr \cdot cfmax \cdot (TTM - TC), WC)` Examples: - Six zones are initialized with the same threshold - temperature, degree day factor and refreezing coefficient, but - with different zone types and initial states: + We initialise six zones with the same threshold temperature, degree-day factor + and refreezing coefficient but with different zone types and initial states: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -845,18 +817,16 @@ class Calc_Refr_SP_WC_V1(modeltools.Method): >>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0 - Note that the assumed length of the simulation step is only - a half day. Hence the effective value of the degree day - factor is not 4 but 2: + Note that the assumed length of the simulation step is half a day. Hence the + effective value of the degree-day factor is not 4 but 2: >>> cfmax cfmax(4.0) >>> cfmax.values array([ 2., 2., 2., 2., 2., 2.]) - When the actual temperature is equal to the threshold - temperature for melting and refreezing, neither no refreezing - occurs and the states remain unchanged: + When the actual temperature is equal to the threshold temperature for melting + and refreezing, neither no refreezing occurs, and the states remain unchanged: >>> fluxes.tc = 2.0 >>> model.calc_refr_sp_wc_v1() @@ -867,8 +837,7 @@ class Calc_Refr_SP_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 1.0, 1.0, 1.0, 0.5, 0.0) - The same holds true for an actual temperature higher than the - threshold temperature: + The same holds for an actual temperature higher than the threshold temperature: >>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0 @@ -881,12 +850,8 @@ class Calc_Refr_SP_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 1.0, 1.0, 1.0, 0.5, 0.0) - With an actual temperature 3°C above the threshold temperature, - only melting can occur. Actual melting is consistent with - potential melting, except for the first zone, which is an - internal lake, and the last two zones, for which potential - melting exceeds the available frozen water content of the - snow layer: + With an actual temperature of 3°C above the threshold temperature, there is no + refreezing: >>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0 @@ -899,12 +864,11 @@ class Calc_Refr_SP_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 1.0, 1.0, 1.0, 0.5, 0.0) - With an actual temperature 3°C below the threshold temperature, - refreezing can occur. Actual refreezing is consistent with - potential refreezing, except for the first zone, which is an - internal lake, and the last two zones, for which potential - refreezing exceeds the available liquid water content of the - snow layer: + With an actual temperature of 3°C below the threshold temperature, refreezing + can occur. Actual refreezing is consistent with potential refreezing, except + for the first zone, being an internal lake, and the last two zones, for which + potential refreezing exceeds the available liquid water content of the snow + layer: >>> states.sp = 2.0 >>> states.wc = 0.0, 1.0, 1.0, 1.0, 0.5, 0.0 @@ -955,18 +919,18 @@ def __call__(model: modeltools.Model) -> None: class Calc_In_WC_V1(modeltools.Method): - """Calculate the actual water release from the snow layer due to the + r"""Calculate the actual water release from the snow layer due to the exceedance of the snow layers capacity for (liquid) water. Basic equations: - :math:`\\frac{dWC}{dt} = -In` \n - :math:`-In = max(WC - WHC \\cdot SP, 0)` + :math:`\frac{dWC}{dt} = -In` + + :math:`-In = max(WC - WHC \cdot SP, 0)` Examples: - Initialize six zones of different types and frozen water - contents of the snow layer and set the relative water holding - capacity to 20% of the respective frozen water content: + We initialise six zones of different types with different frozen water contents + of the snow layer and set the relative water holding capacity to 20% : >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -975,12 +939,12 @@ class Calc_In_WC_V1(modeltools.Method): >>> whc(0.2) >>> states.sp = 0.0, 10.0, 10.0, 10.0, 5.0, 0.0 - Also set the actual value of stand precipitation to 5 mm/d: + Also, we set the actual value of stand precipitation to 5 mm/d: >>> fluxes.tf = 5.0 - When there is no (liquid) water content in the snow layer, no water - can be released: + When there is no (liquid) water content in the snow layer, no water can be + released: >>> states.wc = 0.0 >>> model.calc_in_wc_v1() @@ -989,11 +953,10 @@ class Calc_In_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) - When there is a (liquid) water content in the snow layer, the water - release depends on the frozen water content. Note the special - cases of the first zone being an internal lake, for which the snow - routine does not apply, and of the last zone, which has no ice - content and thus effectively not really a snow layer: + When there is a (liquid) water content in the snow layer, the water release + depends on the frozen water content. Note the special cases of the first zone + being an internal lake, for which the snow routine does not apply, and of the + last zone, which has no ice content and thus effectively not a snow layer: >>> states.wc = 5.0 >>> model.calc_in_wc_v1() @@ -1002,8 +965,8 @@ class Calc_In_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 2.0, 2.0, 2.0, 1.0, 0.0) - When the relative water holding capacity is assumed to be zero, - all liquid water is released: + For a relative water holding capacity of zero, the snow layer releases all + liquid water immediately: >>> whc(0.0) >>> states.wc = 5.0 @@ -1013,8 +976,8 @@ class Calc_In_WC_V1(modeltools.Method): >>> states.wc wc(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) - Note that for the single lake zone, stand precipitation is - directly passed to `in_` in all three examples. + Note that, for the single lake zone, method |Calc_In_WC_V1| passed the stand + precipitation directly to |In_| in all three examples. """ CONTROLPARAMETERS = ( @@ -1044,24 +1007,24 @@ def __call__(model: modeltools.Model) -> None: class Calc_GlMelt_In_V1(modeltools.Method): - """Calculate melting from glaciers which are actually not covered by - a snow layer and add it to the water release of the snow module. + r"""Calculate the melting of non-snow-covered glaciers and add it to the water + release of the snow module. Basic equation: - :math:`GlMelt = \\Bigl \\lbrace + :math:`GlMelt = \Bigl \lbrace { - {max(GMelt \\cdot (TC-TTM), 0) \\ | \\ SP = 0} - \\atop - {0 \\ | \\ SP > 0} + {max(GMelt \cdot (TC - TTM), 0) \ | \ SP = 0} + \atop + {0 \ | \ SP > 0} }` Examples: - Seven zones are prepared, but glacier melting occurs only - in the fourth one, as the first three zones are no glaciers, the - fifth zone is covered by a snow layer and the actual temperature - of the last two zones is not above the threshold temperature: + We prepare seven zones. The first three zones are no glaciers, a snow layer + covers the fifth zone, and the last two zones actual temperature is not above + the threshold temperature. Hence, glacier melting occurs only in the fourth + zone: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1079,9 +1042,8 @@ class Calc_GlMelt_In_V1(modeltools.Method): >>> fluxes.in_ in_(3.0, 3.0, 3.0, 5.0, 3.0, 3.0, 3.0) - Note that the assumed length of the simulation step is only - a half day. Hence the effective value of the degree day factor - is not 4 but 2: + Note that the assumed length of the simulation step is half a day. Hence the + effective value of the degree-day factor is not 4 but 2: >>> gmelt gmelt(4.0) @@ -1121,18 +1083,18 @@ def __call__(model: modeltools.Model) -> None: class Calc_R_SM_V1(modeltools.Method): - """Calculate effective precipitation and update soil moisture. + r"""Calculate effective precipitation and update the soil moisture. Basic equations: - :math:`\\frac{dSM}{dt} = IN - R` \n - :math:`R = IN \\cdot \\left(\\frac{SM}{FC}\\right)^{Beta}` + :math:`\frac{dSM}{dt} = IN - R` + + :math:`R = IN \cdot \left( \frac{SM}{FC} \right)^{Beta}` Examples: - Initialize six zones of different types. The field - capacity of all fields and forests is set to 200mm, the input - of each zone is 10mm: + We initialise six zones of different types. The field capacity of all fields + and forests is 200 mm, the input of each zone is 10 mm: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1141,13 +1103,11 @@ class Calc_R_SM_V1(modeltools.Method): >>> fc(200.0) >>> fluxes.in_ = 10.0 - With a common nonlinearity parameter value of 2, a relative - soil moisture of 50% (zones three and four) results in a - discharge coefficient of 25%. For a soil completely dried - (zone five) or completely saturated (one six) the discharge - coefficient does not depend on the nonlinearity parameter and - is 0% and 100% respectively. Glaciers and internal lakes also - always route 100% of their input as effective precipitation: + With the typical nonlinearity parameter value of 2, relative soil moisture of + 50 % (zones three and four) results in a discharge coefficient of 25 %. For + a completely dried (zone five) or saturated soil (zone six), the discharge + coefficient is generally 0 % and 100 %, respectively. Glaciers and internal + lakes always route 100% of their input as effective precipitation: >>> beta(2.0) >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 @@ -1157,9 +1117,9 @@ class Calc_R_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 107.5, 107.5, 10.0, 200.0) - Through decreasing the nonlinearity parameter, the discharge - coefficient increases. A parameter value of zero leads to a - discharge coefficient of 100% for any soil moisture: + Through decreasing the nonlinearity parameter, the discharge coefficient + increases. A parameter value of zero leads to a discharge coefficient of + 100 % for any soil moisture: >>> beta(0.0) >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 @@ -1169,8 +1129,8 @@ class Calc_R_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 100.0, 100.0, 0.0, 200.0) - With zero field capacity, the discharge coefficient also always - equates to 100%: + Also, with a field capacity of zero, the discharge coefficient always equates + to 100 %: >>> fc(0.0) >>> beta(2.0) @@ -1211,17 +1171,17 @@ def __call__(model: modeltools.Model) -> None: class Calc_CF_SM_V1(modeltools.Method): - """Calculate capillary flow and update soil moisture. + r"""Calculate capillary flow and update the soil moisture. Basic equations: - :math:`\\frac{dSM}{dt} = CF` \n - :math:`CF = CFLUX \\cdot (1 - \\frac{SM}{FC})` + :math:`\frac{dSM}{dt} = CF` + + :math:`CF = CFLUX \cdot (1 - \frac{SM}{FC})` Examples: - Initialize six zones of different types. The field - capacity of als fields and forests is set to 200mm, the maximum - capillary flow rate is 4mm/d: + We initialise six zones of different types. For all fields and forests, the + field capacity is 200 mm and the maximum capillary flow rate is 4 mm/d: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1231,18 +1191,17 @@ class Calc_CF_SM_V1(modeltools.Method): >>> fc(200.0) >>> cflux(4.0) - Note that the assumed length of the simulation step is only - a half day. Hence the maximum capillary flow per simulation - step is 2 instead of 4: + Note that the assumed length of the simulation step is only half a day. Hence + the maximum capillary flow per simulation step is 2 instead of 4: >>> cflux cflux(4.0) >>> cflux.values array([ 2., 2., 2., 2., 2., 2.]) - For fields and forests, the actual capillary return flow depends - on the relative soil moisture deficite, if either the upper zone - layer provides enough water... + For fields and forests, the actual capillary return flow depends only on the + relative soil moisture deficit, provides that either the upper zone layer stores + enough water or that enough "reroutable" effective precipitation is available: >>> fluxes.r = 0.0 >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 @@ -1253,9 +1212,6 @@ class Calc_CF_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 101.0, 101.0, 2.0, 200.0) - ...our enough effective precipitation is generated, which can be - rerouted directly: - >>> cflux(4.0) >>> fluxes.r = 10.0 >>> states.sm = 0.0, 0.0, 100.0, 100.0, 0.0, 200.0 @@ -1266,8 +1222,8 @@ class Calc_CF_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 101.0, 101.0, 2.0, 200.0) - If the upper zone layer is empty and no effective precipitation is - generated, capillary flow is zero: + If the upper zone layer is empty and no effective precipitation is available, + capillary flow is zero: >>> cflux(4.0) >>> fluxes.r = 0.0 @@ -1279,9 +1235,9 @@ class Calc_CF_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 100.0, 100.0, 0.0, 200.0) - Here an example, where both the upper zone layer and effective - precipitation provide water for the capillary flow, but less then - the maximum flow rate times the relative soil moisture: + In the following example, both the upper zone layer and effective precipitation + provide water for the capillary flow, but less than the maximum flow rate times + the relative soil moisture: >>> cflux(4.0) >>> fluxes.r = 0.1 @@ -1293,8 +1249,8 @@ class Calc_CF_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 100.3, 100.3, 0.3, 200.0) - Even unrealistic high maximum capillary flow rates do not result - in overfilled soils: + Even unrealistic high maximum capillary flow rates do not result in overfilled + soils: >>> cflux(1000.0) >>> fluxes.r = 200.0 @@ -1306,8 +1262,8 @@ class Calc_CF_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 200.0, 200.0, 200.0, 200.0) - For (unrealistic) soils with zero field capacity, capillary flow - is always zero: + For soils with zero field capacity ("sealed areas"), capillary flow is always + zero: >>> fc(0.0) >>> states.sm = 0.0 @@ -1351,24 +1307,26 @@ def __call__(model: modeltools.Model) -> None: class Calc_EA_SM_V1(modeltools.Method): - """Calculate soil evaporation and update soil moisture. + r"""Calculate soil evaporation and update the soil moisture. Basic equations: - :math:`\\frac{dSM}{dt} = - EA` \n - :math:`EA_{temp} = \\biggl \\lbrace + :math:`\frac{dSM}{dt} = - EA` + + :math:`EA_{temp} = \biggl \lbrace { - {EPC \\cdot min\\left(\\frac{SM}{LP \\cdot FC}, 1\\right) - \\ | \\ SP = 0} - \\atop - {0 \\ | \\ SP > 0} - }` \n - :math:`EA = EA_{temp} - max(ERED \\cdot (EA_{temp} + EI - EPC), 0)` + {EPC \cdot min\left(\frac{SM}{LP \cdot FC}, 1\right) + \ | \ SP = 0} + \atop + {0 \ | \ SP > 0} + }` + + :math:`EA = EA_{temp} - max(ERed \cdot (EA_{temp} + EI - EPC), 0)` Examples: - Initialize seven zones of different types. The field capacity - of all fields and forests is set to 200mm, potential evaporation - and interception evaporation are 2mm and 1mm respectively: + We initialise seven zones of different types. For all fields and forests, the + field capacity is 200 mm. Potential evaporation and interception evaporation + are 2 mm and 1 mm, respectively: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1381,12 +1339,11 @@ class Calc_EA_SM_V1(modeltools.Method): >>> fluxes.ei = 1.0 >>> states.sp = 0.0 - Only fields and forests include soils; for glaciers and zones (the - first two zones) no soil evaporation is performed. For fields and - forests, the underlying calculations are the same. In the following - example, the relative soil moisture is 50% in all field and forest - zones. Hence, differences in soil evaporation are related to the - different soil evaporation parameter values only: + Only fields and forests include soils. Hence, there is no soil evaporation + for internal lakes and glaciers. In the following example, the relative soil + moisture is 50 % for all field and forest zones. Differences in soil + evaporation are related to the different soil evaporation parameter values + only (the underlying equations are the same): >>> states.sm = 100.0 >>> model.calc_ea_sm_v1() @@ -1395,10 +1352,10 @@ class Calc_EA_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 98.0, 98.0, 98.0, 98.75, 99.0) - In the last example, evaporation values of 2mm have been calculated - for some zones despite the fact, that these 2mm added to the actual - interception evaporation of 1mm exceed potential evaporation. This - behaviour can be reduced... + The above calculations resulted in evaporation values of 2 mm for some zones, + although interception evaporation is 1 mm and the (total) potential evaporation + is only 2 mm. Use parameter |ERed| to reduce or completely exclude such an + exceedance of the potential evaporation: >>> states.sm = 100.0 >>> ered(0.5) @@ -1408,8 +1365,6 @@ class Calc_EA_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 98.5, 98.5, 98.5, 98.875, 99.0) - ...or be completely excluded: - >>> states.sm = 100.0 >>> ered(1.0) >>> model.calc_ea_sm_v1() @@ -1418,8 +1373,7 @@ class Calc_EA_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 99.0, 99.0, 99.0, 99.0, 99.0) - Any occurrence of a snow layer suppresses soil evaporation - completely: + Any occurrence of snow suppresses soil evaporation completely: >>> states.sp = 0.01 >>> states.sm = 100.0 @@ -1429,8 +1383,8 @@ class Calc_EA_SM_V1(modeltools.Method): >>> states.sm sm(0.0, 0.0, 100.0, 100.0, 100.0, 100.0, 100.0) - For (unrealistic) soils with zero field capacity, soil evaporation - is always zero: + For soils with zero field capacity ("sealed areas"), soil evaporation is always + zero: >>> fc(0.0) >>> states.sm = 0.0 @@ -1482,15 +1436,15 @@ def __call__(model: modeltools.Model) -> None: class Calc_InUZ_V1(modeltools.Method): - """Accumulate the total inflow into the upper zone layer. + r"""Accumulate the total inflow into the upper zone layer. Basic equation: :math:`InUZ = R - CF` Examples: - Initialize three zones of different relative `land sizes` - (area related to the total size of the subbasin except lake areas): + We initialise three zones of different relative `land sizes` (area related to + the total size of the subbasin except for lake areas): >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1503,9 +1457,8 @@ class Calc_InUZ_V1(modeltools.Method): >>> fluxes.inuz inuz(3.0) - Internal lakes do not contribute to the upper zone layer. Hence - for a subbasin consisting only of interal lakes a zero input - value would be calculated: + Internal lakes do not contribute to the upper zone layer. Hence, for a + subbasin consisting only of such lakes, |InUZ| is zero: >>> zonetype(ILAKE, ILAKE, ILAKE) >>> model.calc_inuz_v1() @@ -1536,19 +1489,58 @@ def __call__(model: modeltools.Model) -> None: flu.inuz += der.rellandzonearea[k] * (flu.r[k] - flu.cf[k]) +class Calc_SUZ_V1(modeltools.Method): + r"""Add the effective precipitation to the upper storage reservoir. + + Basic equation: + :math:`\frac{SUZ}{dt} = R` + + Example: + + For internal lakes, method |Calc_SUZ_V1| always sets the value of |SUZ| to + zero: + + >>> from hydpy.models.hland import * + >>> parameterstep() + >>> nmbzones(3) + >>> zonetype(FIELD, ILAKE, GLACIER) + >>> states.suz = 1.0, 0.0, 2.0 + >>> fluxes.r = 2.0 + >>> model.calc_suz_v1() + >>> states.suz + suz(3.0, 0.0, 4.0) + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + ) + REQUIREDSEQUENCES = (hland_fluxes.R,) + UPDATEDSEQUENCES = (hland_states.SUZ,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + for k in range(con.nmbzones): + if con.zonetype[k] == ILAKE: + sta.suz[k] = 0.0 + else: + sta.suz[k] += flu.r[k] + + class Calc_ContriArea_V1(modeltools.Method): - """Determine the relative size of the contributing area of the whole - subbasin. + r"""Determine the relative size of the contributing area of the whole subbasin. Basic equation: - :math:`ContriArea = \\left( \\frac{SM}{FC} \\right)^{Beta}` + :math:`ContriArea = \left( \frac{SM}{FC} \right)^{Beta}` Examples: - Four zones are initialized, but only the first two zones - of type field and forest are taken into account in the calculation - of the relative contributing area of the catchment (even, if also - glaciers contribute to the inflow of the upper zone layer): + We initialise four zones. Method |Calc_ContriArea_V1| takes only the first two + zones of type field and forest into account (even though glaciers also + contribute to the inflow of the upper zone layer): >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1560,56 +1552,50 @@ class Calc_ContriArea_V1(modeltools.Method): >>> derived.relsoilarea(0.5) >>> derived.relsoilzonearea(1.0/3.0, 2.0/3.0, 0.0, 0.0) - With a relative soil moisture of 100 % in the whole subbasin, the - contributing area is also estimated as 100 %,... + With relative soil moisture of 100 % in the whole subbasin, the contributing + area is also 100 %: >>> states.sm = 200.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0) - ...and relative soil moistures of 0% result in an contributing - area of 0 %: + Relative soil moistures of 0 % result in a contributing area of 0 %: >>> states.sm = 0.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(0.0) - With the given value 2 of the nonlinearity parameter Beta, soil - moisture of 50 % results in a contributing area estimate of 25%: + For the given value 2 of the nonlinearity parameter |Beta|, soil moisture of + 50 % corresponds to contributing area of 25 %: >>> states.sm = 100.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(0.25) - Setting the response area option to False,... + Setting the |RespArea| option to |False|, the soil area (total area of all + field and forest zones in the subbasin) to zero, or all field capacities to + zero, results in contributing area values of 100 %: >>> resparea(False) >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0) - ... setting the soil area (total area of all field and forest - zones in the subbasin) to zero..., - >>> resparea(True) >>> derived.relsoilarea(0.0) >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0) - ...or setting all field capacities to zero... - >>> derived.relsoilarea(0.5) >>> fc(0.0) >>> states.sm = 0.0 >>> model.calc_contriarea_v1() >>> fluxes.contriarea contriarea(1.0) - - ...leads to contributing area values of 100 %. """ CONTROLPARAMETERS = ( @@ -1644,27 +1630,28 @@ def __call__(model: modeltools.Model) -> None: class Calc_Q0_Perc_UZ_V1(modeltools.Method): - """Perform the upper zone layer routine which determines percolation - to the lower zone layer and the fast response of the hland model. + r"""Calculate the percolation and direct runoff leaving the upper zone storage + and update it accordingly. + + Basic equations: + :math:`\frac{dUZ}{dt} = InUZ - Perc - Q0` + + :math:`Perc = PercMax \cdot ContriArea` + + :math:`Q0 = K \cdot \left( \frac{UZ}{ContriArea} \right)^{1+Alpha}` Note that the system behaviour of this method depends strongly on the specifications of the options |RespArea| and |RecStep|. - Basic equations: - :math:`\\frac{dUZ}{dt} = InUZ - Perc - Q0` \n - :math:`Perc = PercMax \\cdot ContriArea` \n - :math:`Q0 = K * \\cdot \\left( \\frac{UZ}{ContriArea} \\right)^{1+Alpha}` - Examples: - The upper zone layer routine is an exception compared to - the other routines of the HydPy-H-Land model, regarding its - consideration of numerical accuracy. To increase the accuracy of - the numerical integration of the underlying ordinary differential - equation, each simulation step can be divided into substeps, which - are all solved with first order accuracy. In the first example, - this option is omitted through setting the |RecStep| parameter to - one: + The upper zone layer routine is an exception compared to the other subroutines + of |hland| regarding numerical accuracy. Method |Calc_Q0_Perc_UZ_V1| divides + each simulation step into substeps and solves each substep with the explicit + Euler method. The more substeps involved, the more precise the numerical + integration of the underlying ordinary differential equations. In the first + example, we omit this option by setting the |RecStep| parameter, which defines + the number of substeps, to one: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1685,10 +1672,10 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> states.uz uz(0.0) - Due to the sequential calculation of the upper zone routine, the - upper zone storage is drained completely through percolation and - no water is left for fast discharge response. By dividing the - simulation step in 100 substeps, the results are quite different: + Due to the sequential calculation of the upper zone routine, the upper zone + storage drains completely through percolation, and no water remains for fast + discharge response. By dividing the simulation step into 100 substeps, method + |Calc_Q0_Perc_UZ_V1| also calculates a considerable amount of direct runoff: >>> recstep(200) >>> derived.dt = 1.0/recstep @@ -1701,9 +1688,9 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> states.uz uz(0.0) - Note that the assumed length of the simulation step is only a - half day. Hence the effective values of the maximum percolation - rate and the storage coefficient is not 2 but 1: + Note that the assumed length of the simulation step is half a day. Hence the + effective values of the maximum percolation rate and the storage coefficient + are not 2 but 1: >>> percmax percmax(2.0) @@ -1714,8 +1701,8 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> k.value 1.0 - By decreasing the contributing area one decreases percolation but - increases fast discharge response: + By decreasing the contributing area, one reduces percolation but increases the + fast discharge response: >>> fluxes.contriarea = 0.5 >>> states.uz = 1.0 @@ -1727,8 +1714,8 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> states.uz uz(0.0) - Without any contributing area, the complete amount of water stored in - the upper zone layer is released as direct discharge immediately: + Without any contributing area, the complete amount of water stored in the upper + zone layer is released as direct discharge immediately: >>> fluxes.contriarea = 0.0 >>> states.uz = 1.0 @@ -1740,10 +1727,9 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> states.uz uz(0.0) - Resetting |RecStep| leads to more transparent results. Note that, due - to the large value of the storage coefficient and the low accuracy - of the numerical approximation, direct discharge drains the rest of - the upper zone storage: + Resetting |RecStep| leads to more transparent results. Note that, due to the + large value of the storage coefficient and the low accuracy of the numerical + approximation, direct discharge drains the rest of the upper zone storage: >>> recstep(2) >>> fluxes.contriarea = 0.5 @@ -1757,7 +1743,7 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> states.uz uz(0.0) - Applying a more reasonable storage coefficient results in: + Applying a more reasonable storage coefficient leads to the following results: >>> k(0.5) >>> states.uz = 1.0 @@ -1769,10 +1755,9 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> states.uz uz(0.25) - Adding an input of 0.3 mm results the same percolation value (which, - in the given example, is determined by the maximum percolation rate - only), but in an increases value of the direct response (which - always depends on the actual upper zone storage directly): + Adding an input of 0.3 mm results in the same percolation value (which here is + determined by the maximum percolation rate only) but increases the direct + response (which always depends on the actual upper zone storage): >>> fluxes.inuz = 0.3 >>> states.uz = 1.0 @@ -1784,9 +1769,8 @@ class Calc_Q0_Perc_UZ_V1(modeltools.Method): >>> states.uz uz(0.16) - Due to the same reasons, another increase in numerical accuracy has - no impact on percolation but decreases the direct response in the - given example: + Due to the same reasons, another increase in numerical accuracy has no impact + on percolation but decreases the direct response: >>> recstep(200) >>> derived.dt = 1.0/recstep @@ -1842,22 +1826,160 @@ def __call__(model: modeltools.Model) -> None: flu.q0 += d_q0 +class Calc_DP_SUZ_V1(modeltools.Method): + r"""Calculate the deep percolation and remove it from the upper storage reservoir. + + Basic equation: + :math:`DP = min(PERCMax, SUZ)` + + :math:`\frac{SUZ}{dt} = -DP` + + :math:`\frac{SUZ}{dt} = -RS -RI` + + Example: + + For internal lakes, method |Calc_DP_SUZ_V1| always sets the values of |DP| + and |SUZ| to zero: + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> nmbzones(7) + >>> zonetype(FIELD, FIELD, FIELD, FIELD, FIELD, GLACIER, ILAKE) + >>> percmax(4.8) + >>> states.suz = 0.0, 0.1, 0.2, 0.3, 0.4, 0.4, 0.4 + >>> model.calc_dp_suz_v1() + >>> fluxes.dp + dp(0.0, 0.1, 0.2, 0.2, 0.2, 0.2, 0.0) + >>> states.suz + suz(0.0, 0.0, 0.0, 0.1, 0.2, 0.2, 0.0) + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + hland_control.PercMax, + ) + UPDATEDSEQUENCES = (hland_states.SUZ,) + RESULTSEQUENCES = (hland_fluxes.DP,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + for k in range(con.nmbzones): + if con.zonetype[k] == ILAKE: + sta.suz[k] = 0.0 + flu.dp[k] = 0.0 + else: + flu.dp[k] = min(sta.suz[k], con.percmax) + sta.suz[k] -= flu.dp[k] + + +class Calc_RS_RI_SUZ_V1(modeltools.Method): + r"""Calculate the surface runoff and the interflow and remove them from the upper + storage reservoir. + + Basic equation: + :math:`RS = (SUZ - SGR) \cdot (1 - W0)` + + :math:`RI = SUZ \cdot (1 - W1)` + + :math:`\frac{SUZ}{dt} = -(RS + RI)` + + Examples: + + For internal lakes, method |Calc_RS_RI_SUZ_V1| always sets the values of |RS|, + |RI|, and |SUZ| to zero: + + >>> from hydpy.models.hland import * + >>> parameterstep() + >>> nmbzones(7) + >>> zonetype(FIELD, FIELD, FIELD, FIELD, FIELD, GLACIER, ILAKE) + >>> sgr(10.0) + >>> derived.w0 = 0.4 + >>> derived.w1 = 0.8 + >>> states.suz = 0.0, 5.0, 10.0, 15.0, 20.0, 20.0, 20.0 + >>> model.calc_rs_ri_suz_v1() + >>> fluxes.rs + rs(0.0, 0.0, 0.0, 3.0, 6.0, 6.0, 0.0) + >>> fluxes.ri + ri(0.0, 1.0, 2.0, 3.0, 4.0, 4.0, 0.0) + >>> states.suz + suz(0.0, 4.0, 8.0, 9.0, 10.0, 10.0, 0.0) + + Theoretically, the parallel calculation of |RS| and |RI| can result in negative + values of |SUZ|. The checks implemented for the parameter classes |K0| and + |K1| should prevent this problem. However, to be definitely on the safe side, + method |Calc_RS_RI_SUZ_V1| also checks if the final state of |SUZ| is negative + and, when necessary, resets it to zero and reduces |RS| and |RI| accordingly + (with the same fraction): + + >>> derived.w0 = 0.1 + >>> derived.w1 = 0.2 + >>> states.suz = 0.0, 5.0, 10.0, 15.0, 20.0, 20.0, 20.0 + >>> model.calc_rs_ri_suz_v1() + >>> fluxes.rs + rs(0.0, 0.0, 0.0, 4.909091, 10.8, 10.8, 0.0) + >>> fluxes.ri + ri(0.0, 4.0, 8.0, 13.090909, 19.2, 19.2, 0.0) + >>> states.suz + suz(0.0, 1.0, 2.0, 0.0, 0.0, 0.0, 0.0) + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + hland_control.SGR, + ) + DERIVEDPARAMETERS = ( + hland_derived.W0, + hland_derived.W1, + ) + UPDATEDSEQUENCES = (hland_states.SUZ,) + RESULTSEQUENCES = ( + hland_fluxes.RS, + hland_fluxes.RI, + ) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + der = model.parameters.derived.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + for k in range(con.nmbzones): + if con.zonetype[k] == ILAKE: + sta.suz[k] = 0.0 + flu.rs[k] = 0.0 + flu.ri[k] = 0.0 + else: + if sta.suz[k] > con.sgr[k]: + flu.rs[k] = (sta.suz[k] - con.sgr[k]) * (1.0 - der.w0[k]) + else: + flu.rs[k] = 0.0 + flu.ri[k] = sta.suz[k] * (1.0 - der.w1[k]) + sta.suz[k] -= flu.rs[k] + flu.ri[k] + if sta.suz[k] < 0.0: + d_f = 1.0 - sta.suz[k] / (flu.rs[k] + flu.ri[k]) + flu.rs[k] *= d_f + flu.ri[k] *= d_f + sta.suz[k] = 0.0 + + class Calc_LZ_V1(modeltools.Method): - """Update the lower zone layer in accordance with percolation from - upper groundwater to lower groundwater and/or in accordance with - lake precipitation. + r"""Add the percolation and the lake precipitation to the lower zone storage. Basic equation: - :math:`\\frac{dLZ}{dt} = Perc + Pc` + :math:`\frac{dLZ}{dt} = Perc + Pc` Examples: - At first, a subbasin with two field zones is assumed (the zones - could be of type forest or glacier as well). In such zones, - precipitation does not fall directly into the lower zone layer, - hence the given precipitation of 2mm has no impact. Only - the actual percolation from the upper zone layer (underneath - both field zones) is added to the lower zone storage: + At first, we define a subbasin with one |FIELD| and one |GLACIER| zone. Here, + the precipitation does not fall directly into the lower zone layer and thus has + no impact. Methods |Calc_LZ_V1| adds only the actual percolation from the + upper zone layer to the lower zone storage: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1872,15 +1994,14 @@ class Calc_LZ_V1(modeltools.Method): >>> states.lz lz(12.0) - If the second zone is an internal lake, its precipitation falls - on the lower zone layer directly. Note that only 5/3mm - precipitation are added, due to the relative size of the - internal lake within the subbasin. Percolation from the upper - zone layer increases the lower zone storage only by two thirds - of its original value, due to the larger spatial extend of - the lower zone layer: + If the second zone is an internal lake, its precipitation contributes to the + lower zone storage directly. Note that |Calc_LZ_V1| adds only 5/3 mm + precipitation due to the relative size of the internal lake within the subbasin. + Percolation from the upper zone layer increases the lower zone storage by + two-thirds of its original value due to the difference in the lower and upper + zone layers' spatial extents: - >>> zonetype(FIELD, ILAKE) + >>> zonetype(FOREST, ILAKE) >>> derived.rellandarea = 2.0/3.0 >>> derived.relzonearea = 2.0/3.0, 1.0/3.0 >>> states.lz = 10.0 @@ -1915,26 +2036,476 @@ def __call__(model: modeltools.Model) -> None: sta.lz += der.relzonearea[k] * flu.pc[k] +class Calc_GR1_V1(modeltools.Method): + r"""Calculate the recharge to the fast response groundwater reservoir. + + Basic equation: + :math:`GR1 = min \left(DP, \frac{SG1Max - SG1}{K2} \right)` + + Examples: + + For internal lakes, method |Calc_GR1_V1| always sets the values of |GR1| + and |SG1| to zero: + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> nmbzones(7) + >>> zonetype(FIELD, FIELD, FIELD, FIELD, FIELD, GLACIER, ILAKE) + >>> sg1max(10.0) + >>> k2(10.0/24.0) + >>> from hydpy import round_ + >>> round_(k2.values) + 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 + >>> fluxes.dp = 0.5 + >>> states.sg1 = 0.0, 5.0, 9.0, 9.9, 10.0, 5.0, 5.0 + >>> model.calc_gr1_v1() + >>> fluxes.gr1 + gr1(0.5, 0.5, 0.1, 0.01, 0.0, 0.5, 0.0) + + For unreasonably low values of parameter |K2|, the sum of |SG1| and |GR1| could + theoretically become larger than |SG1Max|. To ensure this does not happen, we + let method |Calc_GR1_V1| reduce |GR1| when necessary: + + >>> k2.values = 0.5 + >>> states.sg1 = 0.0, 5.0, 9.0, 9.9, 10.0, 5.0, 5.0 + >>> model.calc_gr1_v1() + >>> fluxes.gr1 + gr1(0.5, 0.5, 0.5, 0.1, 0.0, 0.5, 0.0) + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + hland_control.SG1Max, + hland_control.K2, + ) + REQUIREDSEQUENCES = (hland_fluxes.DP,) + UPDATEDSEQUENCES = (hland_states.SG1,) + RESULTSEQUENCES = (hland_fluxes.GR1,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + for k in range(con.nmbzones): + if con.zonetype[k] == ILAKE: + sta.sg1[k] = 0.0 + flu.gr1[k] = 0.0 + else: + flu.gr1[k] = min(flu.dp[k], (con.sg1max[k] - sta.sg1[k]) / con.k2[k]) + flu.gr1[k] -= max(sta.sg1[k] + flu.gr1[k] - con.sg1max[k], 0.0) + + +class Calc_RG1_SG1_V1(modeltools.Method): + r"""Calculate the discharge from the fast response groundwater reservoir and + subtract it. + + Basic equation: + :math:`SG1_{new} = W2 \cdot SG1_{old} + (1 - W2) \cdot K2 \cdot GR1` + + :math:`RG1 = SG1_{old} + GR1 - SG1_{new}` + + Example: + + For internal lakes, method |Calc_RG1_SG1_V1| always sets the values of |GR1| + and |SG1| to zero: + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> nmbzones(5) + >>> zonetype(FIELD, FIELD, FIELD, GLACIER, ILAKE) + >>> k2(1.0/24, 10.0/24, 100.0/24, 100.0/24, 100.0/24) + >>> from hydpy import round_ + >>> round_(k2.values) + 1.442695, 10.0, 100.0, 100.0, 100.0 + >>> derived.w2.update() + >>> fluxes.gr1 = 2.0 + >>> states.sg1 = 5.0 + >>> model.calc_rg1_sg1_v1() + >>> fluxes.rg1 + rg1(3.057305, 0.572561, 0.059718, 0.059718, 0.0) + >>> states.sg1 + sg1(3.942695, 6.427439, 6.940282, 6.940282, 0.0) + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + hland_control.K2, + ) + DERIVEDPARAMETERS = (hland_derived.W2,) + REQUIREDSEQUENCES = (hland_fluxes.GR1,) + UPDATEDSEQUENCES = (hland_states.SG1,) + RESULTSEQUENCES = (hland_fluxes.RG1,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + der = model.parameters.derived.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + for k in range(con.nmbzones): + if con.zonetype[k] == ILAKE: + sta.sg1[k] = 0.0 + flu.rg1[k] = 0.0 + else: + d_sg1 = sta.sg1[k] + sta.sg1[k] = ( + der.w2[k] * d_sg1 + (1.0 - der.w2[k]) * con.k2[k] * flu.gr1[k] + ) + flu.rg1[k] = d_sg1 + flu.gr1[k] - sta.sg1[k] + + +class Calc_GR2_GR3_V1(modeltools.Method): + r"""Calculate the recharge of the first-order and the second-order slow response + groundwater reservoir. + + Basic equations for land units: + :math:`GR2 = (DP - GR1) \cdot FSG` + + :math:`GR3 = (DP - GR1) \cdot (1 - FSG)` + + Basic equations for internal lakes: + :math:`GR2 = PC \cdot FSG` + + :math:`GR3 = PC \cdot (1 - FSG)` + + Example: + + Besides applying the given basic equation, method |Calc_GR2_GR3_V1| aggregates + the resulting HRU level values to the subbasin level: + + >>> from hydpy.models.hland import * + >>> parameterstep() + >>> nmbzones(3) + >>> zonetype(FIELD, GLACIER, ILAKE) + >>> derived.relzonearea(0.6, 0.3, 0.1) + >>> fluxes.pc = 18.0 + >>> fluxes.dp = 4.0, 8.0, 0.0 + >>> fluxes.gr1 = 1.0, 2.0, 0.0 + >>> model.calc_gr2_gr3_v1() + >>> fluxes.gr2 + gr2(4.8) + >>> fluxes.gr3 + gr3(0.6) + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + ) + DERIVEDPARAMETERS = (hland_derived.RelZoneArea,) + FIXEDPARAMETERS = (hland_fixed.FSG,) + REQUIREDSEQUENCES = ( + hland_fluxes.PC, + hland_fluxes.DP, + hland_fluxes.GR1, + ) + RESULTSEQUENCES = ( + hland_fluxes.GR2, + hland_fluxes.GR3, + ) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + der = model.parameters.derived.fastaccess + fix = model.parameters.fixed.fastaccess + flu = model.sequences.fluxes.fastaccess + flu.gr2 = 0.0 + flu.gr3 = 0.0 + for k in range(con.nmbzones): + if con.zonetype[k] == ILAKE: + d_total = der.relzonearea[k] * flu.pc[k] + else: + d_total = der.relzonearea[k] * (flu.dp[k] - flu.gr1[k]) + flu.gr2 += fix.fsg * d_total + flu.gr3 += (1.0 - fix.fsg) * d_total + + +class Calc_EL_SG2_SG3_V1(modeltools.Method): + r"""Determine the internal lake evaporation and remove it from the first-order and + the second-order slow response groundwater reservoir. + + Basic equations: + .. math:: + EL = \begin{cases} + EPC &|\ TC > TTIce + \ + 0 &|\ TC \leq TTIce + \end{cases} + + :math:`\frac{dSG2}{dt} = -FSG \cdot EL` + + :math:`\frac{dSG3}{dt} = -(1 - FSG) \cdot EL` + + Example: + + Method |Calc_EL_SG2_SG3_V1| applies the given basic equations for hydrological + response units of type |ILAKE| only and sets |EL| to zero for all other + land-use types: + + >>> from hydpy.models.hland import * + >>> parameterstep() + >>> nmbzones(5) + >>> zonetype(ILAKE, ILAKE, ILAKE, ILAKE, FIELD) + >>> ttice(1.0) + >>> derived.relzonearea(0.1, 0.1, 0.1, 0.6, 0.1) + >>> fluxes.tc = 0.0, 1.0, 2.0, 2.0, 2.0 + >>> fluxes.epc = 1.0, 1.0, 0.9, 1.8, 2.0 + >>> states.sg2 = 1.0 + >>> states.sg3 = 1.0 + >>> model.calc_el_sg2_sg3_v1() + >>> fluxes.el + el(0.0, 0.0, 0.9, 1.8, 0.0) + >>> states.sg2 + sg2(-0.04) + >>> states.sg3 + sg3(0.87) + + Due to the assumption of internal lakes having a fixed size, they never dry and + always evaporate water. The above example shows that this might result in + negative values for |SG2| or |SG3|. + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + hland_control.TTIce, + ) + DERIVEDPARAMETERS = (hland_derived.RelZoneArea,) + FIXEDPARAMETERS = (hland_fixed.FSG,) + REQUIREDSEQUENCES = ( + hland_fluxes.TC, + hland_fluxes.EPC, + ) + UPDATEDSEQUENCES = ( + hland_states.SG2, + hland_states.SG3, + ) + RESULTSEQUENCES = (hland_fluxes.EL,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + der = model.parameters.derived.fastaccess + fix = model.parameters.fixed.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + for k in range(con.nmbzones): + if (con.zonetype[k] == ILAKE) and (flu.tc[k] > con.ttice[k]): + flu.el[k] = flu.epc[k] + sta.sg2 -= fix.fsg * der.relzonearea[k] * flu.el[k] + sta.sg3 -= (1.0 - fix.fsg) * der.relzonearea[k] * flu.el[k] + else: + flu.el[k] = 0.0 + + +class Calc_RG2_SG2_V1(modeltools.Method): + r"""Calculate the discharge from the first-order slow response groundwater + reservoir and subtract it. + + Basic equation: + :math:`SG2_{new} = W3 \cdot SG2_{old} + (1 - W3) \cdot K3 \cdot GR2` + + :math:`RG2 = SG2_{old} + GR2 - SG2_{new}` + + Examples: + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> k3(2.0/24) + >>> from hydpy import round_ + >>> round_(k3.values) + 2.0 + >>> derived.w3.update() + >>> fluxes.gr2 = 2.0 + + For non-negative |SG2| values, method |Calc_RG2_SG2_V1| strictly follows the + given base equation: + + >>> states.sg2 = 5.0 + >>> model.calc_rg2_sg2_v1() + >>> fluxes.rg2 + rg2(2.393469) + >>> states.sg2 + sg2(4.606531) + + For negative |SG2| values, it uses |RG2| to fill the groundwater storage + so that no discharge occurs: + + >>> states.sg2 = -3.0 + >>> model.calc_rg2_sg2_v1() + >>> fluxes.rg2 + rg2(0.0) + >>> states.sg2 + sg2(-1.0) + + >>> states.sg2 = -2.0 + >>> model.calc_rg2_sg2_v1() + >>> fluxes.rg2 + rg2(0.0) + >>> states.sg2 + sg2(0.0) + + If the sum of |SG2| and |RG2| is positive, recharge first fills up the deficit. + In the remaining time, |Calc_RG2_SG2_V1| handles the remaining recharge as + implied by the basic equations (with parameters |K3| and |W3| adapted to the + remaining time interval): + + >>> states.sg2 = -1.0 + >>> model.calc_rg2_sg2_v1() + >>> fluxes.rg2 + rg2(0.115203) + >>> states.sg2 + sg2(0.884797) + """ + + CONTROLPARAMETERS = (hland_control.K3,) + DERIVEDPARAMETERS = (hland_derived.W3,) + REQUIREDSEQUENCES = (hland_fluxes.GR2,) + UPDATEDSEQUENCES = (hland_states.SG2,) + RESULTSEQUENCES = (hland_fluxes.RG2,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + der = model.parameters.derived.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + d_sg2 = sta.sg2 + d_gr2 = flu.gr2 + d_k3 = con.k3 + d_w3 = der.w3 + if d_sg2 < 0.0 < d_gr2: + d_add = min(-sta.sg2, d_gr2) + d_k3 *= d_gr2 / d_add + d_w3 = modelutils.exp(-1.0 / d_k3) + d_sg2 += d_add + d_gr2 -= d_add + if d_sg2 >= 0.0: + sta.sg2 = d_w3 * d_sg2 + (1.0 - d_w3) * d_k3 * d_gr2 + flu.rg2 = d_sg2 + d_gr2 - sta.sg2 + else: + sta.sg2 = d_sg2 + flu.rg2 = 0.0 + + +class Calc_RG3_SG3_V1(modeltools.Method): + r"""Calculate the discharge from the second-order slow response groundwater + reservoir and subtract it. + + Basic equation: + :math:`SG3_{new} = W4 \cdot SG3_{old} + (1 - W4) \cdot K4 \cdot GR3` + + :math:`RG3 = SG3_{old} + GR3 - SG3_{new}` + + Examples: + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep("1d") + >>> derived.k4(1.0/24) + >>> from hydpy import round_ + >>> round_(derived.k4.values) + 1.0 + >>> derived.w4.update() + >>> fluxes.gr3 = 2.0 + + For non-negative |SG3| values, method |Calc_RG3_SG3_V1| strictly follows the + given base equation: + + >>> states.sg3 = 5.0 + >>> model.calc_rg3_sg3_v1() + >>> fluxes.rg3 + rg3(3.896362) + >>> states.sg3 + sg3(3.103638) + + For negative |SG3| values, it uses |RG3| to fill the groundwater storage + so that no discharge occurs: + + >>> states.sg3 = -3.0 + >>> model.calc_rg3_sg3_v1() + >>> fluxes.rg3 + rg3(0.0) + >>> states.sg3 + sg3(-1.0) + + >>> states.sg3 = -2.0 + >>> model.calc_rg3_sg3_v1() + >>> fluxes.rg3 + rg3(0.0) + >>> states.sg3 + sg3(0.0) + + If the sum of |SG3| and |RG3| is positive, recharge first fills up the deficit. + In the remaining time, |Calc_RG3_SG3_V1| handles the remaining recharge as + implied by the basic equations (with parameters |hland_derived.K4| and |W4| + adapted to the remaining time interval): + + >>> states.sg3 = -1.0 + >>> model.calc_rg3_sg3_v1() + >>> fluxes.rg3 + rg3(0.213061) + >>> states.sg3 + sg3(0.786939) + """ + + DERIVEDPARAMETERS = ( + hland_derived.K4, + hland_derived.W4, + ) + REQUIREDSEQUENCES = (hland_fluxes.GR3,) + UPDATEDSEQUENCES = (hland_states.SG3,) + RESULTSEQUENCES = (hland_fluxes.RG3,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + der = model.parameters.derived.fastaccess + flu = model.sequences.fluxes.fastaccess + sta = model.sequences.states.fastaccess + d_sg3 = sta.sg3 + d_gr3 = flu.gr3 + d_k4 = der.k4 + d_w4 = der.w4 + if d_sg3 < 0.0 < d_gr3: + d_add = min(-sta.sg3, d_gr3) + d_k4 *= d_gr3 / d_add + d_w4 = modelutils.exp(-1.0 / d_k4) + d_sg3 += d_add + d_gr3 -= d_add + if d_sg3 >= 0.0: + sta.sg3 = d_w4 * d_sg3 + (1.0 - d_w4) * d_k4 * d_gr3 + flu.rg3 = d_sg3 + d_gr3 - sta.sg3 + else: + sta.sg3 = d_sg3 + flu.rg3 = 0.0 + + class Calc_EL_LZ_V1(modeltools.Method): - """Calculate lake evaporation. + r"""Calculate lake evaporation. Basic equations: - :math:`\\frac{dLZ}{dt} = -EL` \n - :math:`EL = \\Bigl \\lbrace + :math:`\frac{dLZ}{dt} = -EL` \n + :math:`EL = \Bigl \lbrace { - {EPC \\ | \\ TC > TTIce} - \\atop - {0 \\ | \\ TC \\leq TTIce} + {EPC \ | \ TC > TTIce} + \atop + {0 \ | \ TC \leq TTIce} }` Examples: - Six zones of the same size are initialized. The first three - zones are no internal lakes, they can not exhibit any lake - evaporation. Of the last three zones, which are internal lakes, - only the last one evaporates water. For zones five and six, - evaporation is suppressed due to an assumed ice layer, whenever - the associated theshold temperature is not exceeded: + We initialise six zones of the same size. The first three zones are no internal + lakes, so they do not show any lake evaporation. Of the last three zones, which + are internal lakes, only the last one evaporates water. The fifth and the sixth + zone suppress evaporation due to the assumption that an ice layer prevents any + exchange between the water body and the atmosphere: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -1951,9 +2522,8 @@ class Calc_EL_LZ_V1(modeltools.Method): >>> states.lz lz(9.9) - Note that internal lakes always contain water. Hence, the - HydPy-H-Land model allows for negative values of the lower - zone storage: + Note that internal lakes always contain water. Hence, applying |Calc_EL_LZ_V1| + might result in negative values of the lower zone storage: >>> states.lz = 0.05 >>> model.calc_el_lz_v1() @@ -1991,20 +2561,22 @@ def __call__(model: modeltools.Model) -> None: class Calc_Q1_LZ_V1(modeltools.Method): - """Calculate the slow response of the lower zone layer. + r"""Calculate the slow response of the lower zone layer. Basic equations: - :math:`\\frac{dLZ}{dt} = -Q1` \n - :math:`Q1 = \\Bigl \\lbrace + :math:`\frac{dLZ}{dt} = -Q1` + + :math:`Q1 = \Bigl \lbrace { - {K4 \\cdot LZ^{1+Gamma} \\ | \\ LZ > 0} - \\atop - {0 \\ | \\ LZ\\leq 0} + {K4 \cdot LZ^{1 + Gamma} \ | \ LZ > 0} + \atop + {0 \ | \ LZ\leq 0} }` Examples: - As long as the lower zone storage is negative... + As long as the lower zone storage is negative or zero, there is no slow + discharge response: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -2018,8 +2590,6 @@ class Calc_Q1_LZ_V1(modeltools.Method): >>> states.lz lz(-2.0) - ...or zero, no slow discharge response occurs: - >>> states.lz = 0.0 >>> model.calc_q1_lz_v1() >>> fluxes.q1 @@ -2027,7 +2597,8 @@ class Calc_Q1_LZ_V1(modeltools.Method): >>> states.lz lz(0.0) - For storage values above zero the linear... + For storage values above zero the linear or nonlinear storage routing equation + applies: >>> states.lz = 2.0 >>> model.calc_q1_lz_v1() @@ -2036,9 +2607,7 @@ class Calc_Q1_LZ_V1(modeltools.Method): >>> states.lz lz(1.8) - ...or nonlinear storage routing equation applies: - - >>> gamma(1.) + >>> gamma(1.0) >>> states.lz = 2.0 >>> model.calc_q1_lz_v1() >>> fluxes.q1 @@ -2046,9 +2615,8 @@ class Calc_Q1_LZ_V1(modeltools.Method): >>> states.lz lz(1.6) - Note that the assumed length of the simulation step is only a - half day. Hence the effective value of the storage coefficient - is not 0.2 but 0.1: + Note that the assumed length of the simulation step is half a day. Hence the + effective value of the storage coefficient is not 0.2 but 0.1: >>> k4 k4(0.2) @@ -2076,17 +2644,17 @@ def __call__(model: modeltools.Model) -> None: class Calc_InUH_V1(modeltools.Method): - """Calculate the unit hydrograph input. + r"""Calculate the unit hydrograph input. Basic equation: :math:`InUH = Q0 + Q1` Example: - The unit hydrographs receives base flow from the whole subbasin - and direct flow from zones of type field, forest and glacier only. - In the following example, these occupy only one half of the - subbasin, which is why the partial input of q0 is halved: + The unit hydrograph receives base flow (|Q1|) from the whole subbasin and direct + flow (|Q0|) only from field zones, forest zones, and glacier zones. In the + following example, these occupy only one half of the subbasin, so |Calc_InUH_V1| + adds only the half value of |Q0| to |InUH|: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -2096,7 +2664,6 @@ class Calc_InUH_V1(modeltools.Method): >>> model.calc_inuh_v1() >>> fluxes.inuh inuh(3.0) - """ DERIVEDPARAMETERS = (hland_derived.RelLandArea,) @@ -2114,13 +2681,12 @@ def __call__(model: modeltools.Model) -> None: class Calc_OutUH_QUH_V1(modeltools.Method): - """Calculate the unit hydrograph output (convolution). + r"""Calculate the unit hydrograph output (convolution). Examples: - Prepare a unit hydrograph with only three ordinates --- - representing a fast catchment response compared to the selected - step size: + Prepare a unit hydrograph with only three ordinates representing a fast + catchment response compared to the selected simulation step size: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -2129,9 +2695,8 @@ class Calc_OutUH_QUH_V1(modeltools.Method): >>> logs.quh.shape = 3 >>> logs.quh = 1.0, 3.0, 0.0 - Without new input, the actual output is simply the first value - stored in the logging sequence and the values of the logging - sequence are shifted to the left: + Without new input, the actual output is simply the first value stored in the + logging sequence, and the values of the logging sequence shift to the left: >>> fluxes.inuh = 0.0 >>> model.calc_outuh_quh_v1() @@ -2140,7 +2705,7 @@ class Calc_OutUH_QUH_V1(modeltools.Method): >>> logs.quh quh(3.0, 0.0, 0.0) - With an new input of 4mm, the actual output consists of the first + With a new input of 4 mm, the actual output consists of the first value stored in the logging sequence and the input value multiplied with the first unit hydrograph ordinate. The updated logging sequence values result from the multiplication of the @@ -2153,8 +2718,7 @@ class Calc_OutUH_QUH_V1(modeltools.Method): >>> logs.quh quh(2.0, 0.8, 0.0) - The next example demonstates the updating of non empty logging - sequence: + The following example demonstrates the updating of a non-empty logging sequence: >>> fluxes.inuh = 4.0 >>> model.calc_outuh_quh_v1() @@ -2163,8 +2727,7 @@ class Calc_OutUH_QUH_V1(modeltools.Method): >>> logs.quh quh(2.8, 0.8, 0.0) - A unit hydrograph with only one ordinate results in the direct - routing of the input: + A unit hydrograph consisting of one ordinate routes the received input directly: >>> derived.uh.shape = 1 >>> derived.uh = 1.0 @@ -2200,14 +2763,23 @@ def __call__(model: modeltools.Model) -> None: class Calc_OutUH_SC_V1(modeltools.Method): - """Calculate the linear storage cascade output (state-space approach). + r"""Calculate the linear storage cascade output (state-space approach). - simple explicit Euler method, unstable and inaccurate (or: requires a - high |RecStep| value. But fits to the calculation of |Q0| and |Perc|. - Okay or better implicit or semi-analytical? + Basic equations: + :math:`OutUH = KSC \cdot SC` + + :math:`\frac{dSC}{dt} = InUH - OutUH` + + Note that the given base equations only hold for one single linear storage, while + |Calc_OutUH_SC_V1| supports a cascade of linear storages. Also, the equations do + not reflect the possibility to increase numerical accuracy via decreasing the + internal simulation step size. Examples: + If the number of storages is zero, |Calc_OutUH_SC_V1| routes the received + input directly: + >>> from hydpy.models.hland import * >>> simulationstep('1d') >>> parameterstep('1d') @@ -2217,15 +2789,22 @@ class Calc_OutUH_SC_V1(modeltools.Method): >>> fluxes.outuh outuh(2.0) + We solve the underlying ordinary differential equation via the explicit Euler + method. Nevertheless, defining arbitrarily high storage coefficients does not + pose any stability problems due to truncating too high outflow values: + + >>> control.recstep(1) + >>> derived.dt.update() >>> nmbstorages(5) >>> derived.ksc(inf) >>> model.calc_outuh_sc_v1() >>> fluxes.outuh outuh(2.0) + Increasing the number of internal calculation steps via parameter |RecStep| + results in higher numerical accuracy without violating the water balance: + >>> derived.ksc(2.0) - >>> control.recstep(1) - >>> derived.dt.update() >>> states.sc = 0.0 >>> model.calc_outuh_sc_v1() >>> fluxes.outuh @@ -2241,7 +2820,6 @@ class Calc_OutUH_SC_V1(modeltools.Method): outuh(0.084262) >>> states.sc sc(0.714101, 0.542302, 0.353323, 0.202141, 0.103872) - >>> from hydpy import round_ >>> round_(fluxes.outuh + sum(states.sc)) 2.0 @@ -2256,17 +2834,6 @@ class Calc_OutUH_SC_V1(modeltools.Method): sc(0.850033, 0.590099, 0.327565, 0.149042, 0.057103) >>> round_(fluxes.outuh + sum(states.sc)) 2.0 - - >>> nmbstorages(1) - >>> derived.ksc(2.0/5) - >>> states.sc = 0.0 - >>> model.calc_outuh_sc_v1() - >>> fluxes.outuh - outuh(0.355517) - >>> states.sc - sc(1.644483) - >>> round_(fluxes.outuh + sum(states.sc)) - 2.0 """ CONTROLPARAMETERS = ( @@ -2303,16 +2870,116 @@ def __call__(model: modeltools.Model) -> None: flu.outuh += d_q +class Calc_RO_V1(modeltools.Method): + r"""Calculate the total output of all upper and lower zone storages. + + Basic equation: + :math:`RO = RS + RI + RG1 + RG2 + RG3` + + Example: + + Besides adding all components, method |Calc_RO_V1| needs to aggregate the HRU + level values of |RS|, |RI|, and |RG1| to the subbasin level: + + >>> from hydpy.models.hland import * + >>> parameterstep() + >>> nmbzones(4) + >>> zonetype(FIELD, FOREST, GLACIER, ILAKE) + >>> derived.relzonearea(0.1, 0.2, 0.3, 0.4) + >>> fluxes.rs = 0.1, 0.2, 0.3, 0.4 + >>> fluxes.ri = 0.5, 0.6, 0.7, 0.8 + >>> fluxes.rg1 = 0.9, 1.0, 1.1, 1.2 + >>> fluxes.rg2 = 1.3 + >>> fluxes.rg3 = 1.4 + >>> model.calc_ro_v1() + >>> fluxes.ro + ro(3.84) + """ + + CONTROLPARAMETERS = ( + hland_control.NmbZones, + hland_control.ZoneType, + ) + DERIVEDPARAMETERS = (hland_derived.RelZoneArea,) + REQUIREDSEQUENCES = ( + hland_fluxes.RS, + hland_fluxes.RI, + hland_fluxes.RG1, + hland_fluxes.RG2, + hland_fluxes.RG3, + ) + RESULTSEQUENCES = (hland_fluxes.RO,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + der = model.parameters.derived.fastaccess + flu = model.sequences.fluxes.fastaccess + flu.ro = flu.rg2 + flu.rg3 + for k in range(con.nmbzones): + if con.zonetype[k] != ILAKE: + flu.ro += der.relzonearea[k] * (flu.rs[k] + flu.ri[k] + flu.rg1[k]) + + +class Calc_RA_RT_V2(modeltools.Method): + r"""Calculate the actual abstraction and the total discharge in mm. + + Basic equation: + :math:`RA = Abstr / QFactor` + + :math:`RT = RO - RA` + + Examples: + + >>> from hydpy.models.hland import * + >>> parameterstep() + >>> abstr(1.0) + >>> derived.qfactor(0.5) + >>> fluxes.ro = 3.0 + >>> model.calc_ra_rt_v2() + >>> fluxes.ra + ra(2.0) + >>> fluxes.rt + rt(1.0) + + A requested abstraction larger than the total available discharge does not + result in negative outcomes: + + >>> abstr(2.0) + >>> model.calc_ra_rt_v2() + >>> fluxes.ra + ra(3.0) + >>> fluxes.rt + rt(0.0) + """ + + CONTROLPARAMETERS = (hland_control.Abstr,) + DERIVEDPARAMETERS = (hland_derived.QFactor,) + REQUIREDSEQUENCES = (hland_fluxes.RO,) + RESULTSEQUENCES = ( + hland_fluxes.RA, + hland_fluxes.RT, + ) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + con = model.parameters.control.fastaccess + der = model.parameters.derived.fastaccess + flu = model.sequences.fluxes.fastaccess + flu.ra = min(con.abstr / der.qfactor, flu.ro) + flu.rt = flu.ro - flu.ra + + class Calc_QT_V1(modeltools.Method): - """Calculate the total discharge after possible abstractions. + r"""Calculate the total discharge after possible abstractions. Basic equation: - :math:`QT = max(QFactor \\cdot OutUH - Abstr, 0)` + :math:`QT = max(QFactor \cdot OutUH - Abstr, 0)` Examples: - Trying to abstract less then available, as much as available and - less then available results in: + A requested abstraction larger than the total available discharge does not + result in negative outcomes: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -2354,8 +3021,38 @@ def __call__(model: modeltools.Model) -> None: flu.qt = max(der.qfactor * flu.outuh - con.abstr, 0.0) +class Calc_QT_V2(modeltools.Method): + r"""Calculate the total discharge in m³/s. + + Basic equation: + :math:`QT = QFactor \cdot RT` + + Example: + + >>> from hydpy.models.hland import * + >>> simulationstep("1h") + >>> parameterstep() + >>> abstr(0.2) + >>> derived.qfactor(0.5) + >>> fluxes.rt = 2.0 + >>> model.calc_qt_v2() + >>> fluxes.qt + qt(1.0) + """ + + DERIVEDPARAMETERS = (hland_derived.QFactor,) + REQUIREDSEQUENCES = (hland_fluxes.RT,) + RESULTSEQUENCES = (hland_fluxes.QT,) + + @staticmethod + def __call__(model: modeltools.Model) -> None: + der = model.parameters.derived.fastaccess + flu = model.sequences.fluxes.fastaccess + flu.qt = der.qfactor * flu.rt + + class Pass_Q_v1(modeltools.Method): - """Update the outlet link sequence.""" + r"""Update the outlet link sequence.""" REQUIREDSEQUENCES = (hland_fluxes.QT,) RESULTSEQUENCES = (hland_outlets.Q,) @@ -2368,7 +3065,7 @@ def __call__(model: modeltools.Model) -> None: class Model(modeltools.AdHocModel): - """The HydPy-H-Land base model.""" + r"""The HydPy-H-Land base model.""" INLET_METHODS = () RECEIVER_METHODS = () @@ -2391,15 +3088,27 @@ class Model(modeltools.AdHocModel): Calc_CF_SM_V1, Calc_EA_SM_V1, Calc_InUZ_V1, + Calc_SUZ_V1, Calc_ContriArea_V1, Calc_Q0_Perc_UZ_V1, + Calc_DP_SUZ_V1, + Calc_RS_RI_SUZ_V1, Calc_LZ_V1, + Calc_GR1_V1, + Calc_RG1_SG1_V1, + Calc_GR2_GR3_V1, + Calc_RG2_SG2_V1, + Calc_RG3_SG3_V1, + Calc_EL_SG2_SG3_V1, Calc_EL_LZ_V1, Calc_Q1_LZ_V1, Calc_InUH_V1, Calc_OutUH_QUH_V1, Calc_OutUH_SC_V1, + Calc_RO_V1, + Calc_RA_RT_V2, Calc_QT_V1, + Calc_QT_V2, ) ADD_METHODS = () OUTLET_METHODS = (Pass_Q_v1,) diff --git a/hydpy/models/hland/hland_parameters.py b/hydpy/models/hland/hland_parameters.py index d4f18294b4..82d530367b 100644 --- a/hydpy/models/hland/hland_parameters.py +++ b/hydpy/models/hland/hland_parameters.py @@ -12,18 +12,15 @@ class ParameterComplete(parametertools.ZipParameter): - """Base class for 1-dimensional parameters relevant for all types - of zones. + """Base class for 1-dimensional parameters relevant for all types of zones. - |ParameterComplete| applies the features of class |ZipParameter| - on the land use types `field`, `forest`, `glacier`, and `ilake` - and consideres them all as relevant (e.g. for calculating - weighted averages). + |ParameterComplete| applies the features of class |ZipParameter| on the land use + types |FIELD|, |FOREST|, |GLACIER|, and |ILAKE| and considers them all as relevant + (e.g., for calculating weighted averages). - The following examples are based on parameter |PCorr|, which is - directly derived from |ParameterComplete|. After preparing - the parameter |NmbZones|, parameter |PCorr| allows to set its - values using the relevant land use types as keywords: + We use parameter |PCorr|, in the following examples, which is a subclass of + |ParameterComplete|. After preparing the parameter |ZoneType|, |PCorr| allows + setting its values using the relevant land-use types as keywords: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -35,7 +32,7 @@ class ParameterComplete(parametertools.ZipParameter): >>> pcorr.values array([ 2., 1., 4., 3., 2.]) - Parameter |ZoneArea| is used for calculating the areal means (see + Parameter |ZoneArea| serves for calculating areal means (see the documentation on |property| |ParameterComplete.refweights|): >>> zonearea(0.0, 1.0, 2.0, 3.0, 4.0) @@ -43,8 +40,8 @@ class ParameterComplete(parametertools.ZipParameter): >>> round_(pcorr.average_values()) 2.6 - Alternatively, pass other masks defined in module |hland_masks|, - to take only certain types of zones into account: + Alternatively, pass other masks defined in module |hland_masks| to take only + certain types of zones into account: >>> round_(pcorr.average_values(model.masks.field)) 2.0 @@ -53,9 +50,8 @@ class ParameterComplete(parametertools.ZipParameter): >>> round_(pcorr.average_values(model.masks.field, "forest")) 1.8 - All other masks (e.g. |hland_masks.Soil| used by |ParameterSoil| - subclasses as |hland_control.IcMax|) are subsets of mask - |hland_masks.Complete|: + All other masks (for example, |hland_masks.Soil|, being used by |ParameterSoil| + subclasses as |hland_control.IcMax|) are subsets of mask |hland_masks.Complete|: >>> icmax.mask in pcorr.mask True @@ -68,17 +64,16 @@ class ParameterComplete(parametertools.ZipParameter): @property def refweights(self): - """Reference to the associated instance of |RelZoneArea| for - calculating areal mean values.""" + """Reference to the associated instance of |RelZoneArea| for calculating areal + mean values.""" return self.subpars.pars.control.zonearea class ParameterSoil(ParameterComplete): - """Base class for 1-dimensional parameters relevant for |FIELD| - and |FOREST| zones. + """Base class for 1-dimensional parameters relevant for |FIELD| and |FOREST| zones. - |ParameterSoil| works similar to |ParameterComplete|. Some examples - based on parameter |IcMax|: + |ParameterSoil| works similar to |ParameterComplete|. Some examples based on + parameter |IcMax|: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -100,11 +95,11 @@ class ParameterSoil(ParameterComplete): class ParameterLand(ParameterComplete): - """Base class for 1-dimensional parameters relevant for |FIELD|, - |FOREST|, and |GLACIER| zones. + """Base class for 1-dimensional parameters relevant for |FIELD|, |FOREST|, and + |GLACIER| zones. - |ParameterLand| works similar to |ParameterComplete|. Some examples - based on parameter |WHC|: + |ParameterLand| works similar to |ParameterComplete|. Some examples based on + parameter |WHC|: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -128,8 +123,8 @@ class ParameterLand(ParameterComplete): class ParameterLake(ParameterComplete): """Base class for 1-dimensional parameters relevant for |ILAKE| zones. - |ParameterLake| works similar to |ParameterComplete|. Some examples - based on parameter |TTIce|: + |ParameterLake| works similar to |ParameterComplete|. Some examples based on + parameter |TTIce|: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -153,8 +148,8 @@ class ParameterLake(ParameterComplete): class ParameterGlacier(ParameterComplete): """Base class for 1-dimensional parameters relevant for |GLACIER| zones. - |ParameterLake| works similar to |ParameterComplete|. Some examples - based on parameter |GMelt|: + |ParameterLake| works similar to |ParameterComplete|. Some examples based on + parameter |GMelt|: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -177,11 +172,11 @@ class ParameterGlacier(ParameterComplete): class ParameterNoGlacier(ParameterComplete): - """Base class for 1-dimensional parameters relevant for |FIELD|, - |FOREST|, and |ILAKE| zones. + """Base class for 1-dimensional parameters relevant for |FIELD|, |FOREST|, and + |ILAKE| zones. - |ParameterSoil| works similar to |ParameterComplete|. Some examples - based on parameter |ECorr|: + |ParameterNoGlacier| works similar to |ParameterComplete|. Some examples based on + parameter |ECorr|: >>> from hydpy.models.hland import * >>> parameterstep("1d") diff --git a/hydpy/models/hland/hland_sequences.py b/hydpy/models/hland/hland_sequences.py index 3c35779674..d67686d067 100644 --- a/hydpy/models/hland/hland_sequences.py +++ b/hydpy/models/hland/hland_sequences.py @@ -12,10 +12,9 @@ class Flux1DSequence(sequencetools.FluxSequence): """Base class for 1-dimensional flux subclasses that support aggregation with respect to |ZoneArea|. - All |Flux1DSequence| subclasses should stick to the mask |Complete|. + All |Flux1DSequence| subclasses should select mask |Complete|. - - The following example shows how subclass |PC| works: + The following example shows how the subclass |PC| works: >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -32,20 +31,18 @@ class Flux1DSequence(sequencetools.FluxSequence): @property def refweights(self): - """Alias for the associated instance of |ZoneArea| for calculating - areal values.""" + """Alias for the associated instance of |ZoneArea| for calculating areal + values.""" return self.subseqs.seqs.model.parameters.control.zonearea class State1DSequence(sequencetools.StateSequence): - """Base class for 1-dimensional state subclasses that support - aggregation with respect to |ZoneArea|. + """Base class for 1-dimensional state subclasses that support aggregation with + respect to |ZoneArea|. - All |State1DSequence| subclasses must implement fitting mask objects - individually. + All |State1DSequence| subclasses must implement fitting mask objects individually. - The following example shows how subclass |SM| works, which - implements mask |Soil|: + The following example shows how subclass |SM| works, which implements mask |Soil|: >>> from hydpy.models.hland import * >>> parameterstep("1d") diff --git a/hydpy/models/hland/hland_states.py b/hydpy/models/hland/hland_states.py index 801a55e80a..a82ba384b5 100644 --- a/hydpy/models/hland/hland_states.py +++ b/hydpy/models/hland/hland_states.py @@ -23,7 +23,7 @@ class Ic(hland_sequences.State1DSequence): CONTROLPARAMETERS = (hland_control.IcMax,) def trim(self, lower=None, upper=None): - """Trim upper values in accordance with :math:`IC \\leq ICMAX`. + r"""Trim |Ic| following :math:`0 \leq IC \leq ICMAX`. >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -48,7 +48,7 @@ class SP(hland_sequences.State1DSequence): CONTROLPARAMETERS = (hland_control.WHC,) def trim(self, lower=None, upper=None): - """Trim values in accordance with :math:`WC \\leq WHC \\cdot SP`. + r"""Trim |SP| following :math:`WC \leq WHC \cdot SP`. >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -81,7 +81,7 @@ class WC(hland_sequences.State1DSequence): CONTROLPARAMETERS = (hland_control.WHC,) def trim(self, lower=None, upper=None): - """Trim values in accordance with :math:`WC \\leq WHC \\cdot SP`. + """Trim |WC| following :math:`WC \\leq WHC \\cdot SP`. >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -100,7 +100,10 @@ def trim(self, lower=None, upper=None): class SM(hland_sequences.State1DSequence): - """Soil moisture [mm].""" + """Soil moisture [mm]. + + Note that PREVAH uses the abbreviation `SSM` instead of the HBV96 abbreviation `SM`. + """ NDIM, NUMERIC, SPAN = 1, False, (0.0, None) mask = hland_masks.Soil() @@ -108,7 +111,7 @@ class SM(hland_sequences.State1DSequence): CONTROLPARAMETERS = (hland_control.FC,) def trim(self, lower=None, upper=None): - """Trim values in accordance with :math:`SM \\leq FC`. + r"""Trim |SM| following :math:`0 \leq SM \leq FC`. >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -129,6 +132,12 @@ class UZ(sequencetools.StateSequence): NDIM, NUMERIC, SPAN = 0, False, (0.0, None) +class SUZ(sequencetools.StateSequence): + """Upper storage reservoir [mm].""" + + NDIM, NUMERIC, SPAN = 1, False, (0.0, None) + + class LZ(sequencetools.StateSequence): """Storage in the lower zone layer [mm].""" @@ -137,8 +146,8 @@ class LZ(sequencetools.StateSequence): CONTROLPARAMETERS = (hland_control.ZoneType,) def trim(self, lower=None, upper=None): - """Trim negative value whenever there is no internal lake within - the respective subbasin. + """Trim negative values if the actual subbasin does not contain an internal + lake. >>> from hydpy.models.hland import * >>> parameterstep("1d") @@ -162,6 +171,41 @@ def trim(self, lower=None, upper=None): super().trim(lower, upper) +class SG1(sequencetools.StateSequence): + """Fast response groundwater reservoir [mm].""" + + NDIM, NUMERIC, SPAN = 1, False, (0.0, None) + + CONTROLPARAMETERS = (hland_control.SG1Max,) + + def trim(self, lower=None, upper=None): + r"""Trim |SG1| following :math:`0 \leq SG1 \leq SG1Max`. + + >>> from hydpy.models.hland import * + >>> parameterstep("1d") + >>> nmbzones(5) + >>> sg1max(100.0) + >>> states.sg1(-50.0, 0.0, 50.0, 100.0, 150.0) + >>> states.sg1 + sg1(0.0, 0.0, 50.0, 100.0, 100.0) + """ + if upper is None: + upper = self.subseqs.seqs.model.parameters.control.sg1max + super().trim(lower, upper) + + +class SG2(sequencetools.StateSequence): + """First-order slow response groundwater reservoir [mm].""" + + NDIM, NUMERIC, SPAN = 0, False, (None, None) + + +class SG3(sequencetools.StateSequence): + """Second-order slow response groundwater reservoir [mm].""" + + NDIM, NUMERIC, SPAN = 0, False, (None, None) + + class SC(sequencetools.StateSequence): """Storage cascade for runoff concentration [mm].""" diff --git a/hydpy/models/hland_v3.py b/hydpy/models/hland_v3.py new file mode 100644 index 0000000000..c28d00de87 --- /dev/null +++ b/hydpy/models/hland_v3.py @@ -0,0 +1,591 @@ +# -*- coding: utf-8 -*- +# pylint: disable=line-too-long, wildcard-import, unused-wildcard-import +""" +Version 3 of the H-Land model combines `HBV96's` :cite:`ref-Lindstrom1997HBV96` and +`PREVAH's` :cite:`ref-Viviroli2009PREVAH` process equations. + +Integration tests +================= + +.. how_to_understand_integration_tests:: + + +>>> from hydpy import pub +>>> pub.timegrids = "01.01.2000", "05.01.2000", "1h" + +>>> from hydpy.models.hland_v3 import * +>>> parameterstep("1h") +>>> from hydpy import Node, Element +>>> outlet = Node("outlet") +>>> land = Element("land", outlets=outlet) +>>> land.model = model + +>>> nmbzones(1) +>>> area(1.0) +>>> zonearea(1.0) +>>> zonez(1.0) + +>>> zrelp(2.0) +>>> zrelt(2.0) +>>> zrele(2.0) + +>>> from hydpy import IntegrationTest +>>> IntegrationTest.plotting_options.axis1 = ( +... fluxes.pc, fluxes.rs, fluxes.ri, fluxes.rg1, fluxes.rg2, fluxes.rg3, fluxes.rt) +>>> IntegrationTest.plotting_options.axis2 = fluxes.tc +>>> test = IntegrationTest(land) +>>> test.dateformat = '%d/%m %H:00' + +.. _hland_v3_field: + +field +_____ + +>>> zonetype(FIELD) + +>>> pcorr(1.2) +>>> pcalt(0.1) +>>> rfcf(1.1) +>>> sfcf(1.3) +>>> tcalt(0.6) +>>> ecorr(0.8) +>>> ecalt(-0.1) +>>> epf(0.1) +>>> etf(0.1) +>>> ered(0.5) +>>> icmax(2.0) +>>> tt(0.0) +>>> ttint(2.0) +>>> dttm(1.0) +>>> cfmax(0.5) +>>> gmelt(1.0) +>>> cfr(0.1) +>>> whc(0.4) +>>> fc(200.0) +>>> lp(0.8) +>>> beta(2.0) +>>> percmax(2.0) +>>> sgr(20.0) +>>> sg1max(50.0) +>>> k0(2.0) +>>> k1(10.0) +>>> k2(20.0) +>>> k3(100.0) +>>> abstr(0.003) + + +>>> test.inits = ((states.ic, 0.0), +... (states.sp, 0.0), +... (states.wc, 0.0), +... (states.sm, 100.0), +... (states.suz, 0.0), +... (states.sg1, 10.0), +... (states.sg2, 10.0), +... (states.sg3, 10.0)) + +>>> inputs.p.series = ( +... 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +... 0.0, 0.0, 0.2, 0.0, 0.0, 1.3, 5.6, 2.9, 4.9, 10.6, 0.1, 0.7, 3.0, +... 2.1, 10.4, 3.5, 3.4, 1.2, 0.1, 0.0, 0.0, 0.4, 0.1, 3.6, 5.9, 1.1, +... 20.7, 37.9, 8.2, 3.6, 7.5, 18.5, 15.4, 6.3, 1.9, 4.9, 2.7, 0.5, +... 0.2, 0.5, 2.4, 0.4, 0.2, 0.0, 0.0, 0.3, 2.6, 0.7, 0.3, 0.3, 0.0, +... 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3, 0.0, +... 0.0, 0.0, 0.7, 0.4, 0.1, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, +... 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) +>>> inputs.t.series = ( +... 21.2, 19.4, 18.9, 18.3, 18.9, 22.5, 25.1, 28.3, 27.8, 31.4, 32.2, +... 35.2, 37.1, 31.2, 24.3, 25.4, 25.9, 23.7, 21.6, 21.2, 20.4, 19.8, +... 19.6, 19.2, 19.2, 19.2, 18.9, 18.7, 18.5, 18.3, 18.5, 18.8, 18.8, +... 19.0, 19.2, 19.3, 19.0, 18.8, 18.7, 17.8, 17.4, 17.3, 16.8, 16.5, +... 16.3, 16.2, 15.5, 14.6, 14.7, 14.6, 14.1, 14.3, 14.9, 15.7, 16.0, +... 16.7, 17.1, 16.2, 15.9, 16.3, 16.3, 16.4, 16.5, 18.4, 18.3, 18.1, +... 16.7, 15.2, 13.4, 12.4, 11.6, 11.0, 10.5, 11.7, 11.9, 11.2, 11.1, +... 11.9, 12.2, 11.8, 11.4, 11.6, 13.0, 17.1, 18.2, 22.4, 21.4, 21.8, +... 22.2, 20.1, 17.8, 15.2, 14.5, 12.4, 11.7, 11.9) +>>> inputs.tn.series = inputs.t.series-1.0 +>>> inputs.epn.series = ( +... 0.100707, 0.097801, 0.096981, 0.09599, 0.096981, 0.102761, +... 0.291908, 1.932875, 4.369536, 7.317556, 8.264362, 9.369867, +... 5.126178, 6.62503, 7.397619, 2.39151, 1.829834, 1.136569, +... 0.750986, 0.223895, 0.099425, 0.098454, 0.098128, 0.097474, +... 0.097474, 0.097474, 0.096981, 0.096652, 0.096321, 0.09599, +... 0.187298, 1.264612, 3.045538, 1.930758, 2.461001, 6.215945, +... 3.374783, 8.821555, 4.046025, 2.110757, 2.239257, 2.877848, +... 1.591452, 0.291604, 0.092622, 0.092451, 0.091248, 0.089683, +... 0.089858, 0.089683, 0.088805, 0.089157, 0.090207, 0.091593, +... 0.154861, 0.470369, 1.173726, 4.202296, 4.359715, 5.305753, +... 5.376027, 4.658915, 7.789594, 4.851567, 5.30692, 3.286036, +... 1.506216, 0.274762, 0.087565, 0.085771, 0.084317, 0.083215, +... 0.082289, 0.0845, 0.084864, 0.083584, 0.0834, 0.084864, 0.310229, +... 1.391958, 3.195876, 5.191651, 7.155036, 8.391432, 8.391286, +... 10.715238, 9.383394, 7.861915, 6.298329, 2.948416, 1.309232, +... 0.32955, 0.089508, 0.085771, 0.0845, 0.084864) + +>>> test.reset_inits() +>>> conditions = sequences.conditions + +.. integration-test:: + + + >>> test('hland_v3_field') + | date | p | t | tn | epn | tmean | tc | fracrain | rfc | sfc | pc | ep | epc | ei | tf | glmelt | melt | refr | in_ | r | ea | dp | el | rs | ri | gr1 | rg1 | gr2 | rg2 | gr3 | rg3 | ro | ra | rt | qt | ic | sp | wc | sm | suz | sg1 | sg2 | sg3 | outlet | + ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | 01/01 00:00 | 0.0 | 21.2 | 20.2 | 0.100707 | 21.8 | 21.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.11682 | 0.08411 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.052569 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.487706 | 0.0 | 0.099502 | 0.0 | 0.011105 | 0.598312 | 0.0108 | 0.587512 | 0.163198 | 0.0 | 0.0 | 0.0 | 99.947431 | 0.0 | 9.512294 | 9.900498 | 9.988895 | 0.163198 | + | 01/01 01:00 | 0.0 | 19.4 | 18.4 | 0.097801 | 20.0 | 20.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.113449 | 0.081683 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.051025 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.46392 | 0.0 | 0.098512 | 0.0 | 0.011093 | 0.573524 | 0.0108 | 0.562724 | 0.156312 | 0.0 | 0.0 | 0.0 | 99.896406 | 0.0 | 9.048374 | 9.801987 | 9.977802 | 0.156312 | + | 01/01 02:00 | 0.0 | 18.9 | 17.9 | 0.096981 | 19.5 | 19.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.112498 | 0.080999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.050572 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.441294 | 0.0 | 0.097531 | 0.0 | 0.01108 | 0.549906 | 0.0108 | 0.539106 | 0.149752 | 0.0 | 0.0 | 0.0 | 99.845834 | 0.0 | 8.60708 | 9.704455 | 9.966722 | 0.149752 | + | 01/01 03:00 | 0.0 | 18.3 | 17.3 | 0.09599 | 18.9 | 18.9 | 1.0 | 1.1 | 0.0 | 0.0 | 0.111348 | 0.080171 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.05003 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.419772 | 0.0 | 0.096561 | 0.0 | 0.011068 | 0.527401 | 0.0108 | 0.516601 | 0.1435 | 0.0 | 0.0 | 0.0 | 99.795804 | 0.0 | 8.187308 | 9.607894 | 9.955654 | 0.1435 | + | 01/01 04:00 | 0.0 | 18.9 | 17.9 | 0.096981 | 19.5 | 19.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.112498 | 0.080999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.050521 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3993 | 0.0 | 0.0956 | 0.0 | 0.011056 | 0.505956 | 0.0108 | 0.495156 | 0.137543 | 0.0 | 0.0 | 0.0 | 99.745284 | 0.0 | 7.788008 | 9.512294 | 9.944598 | 0.137543 | + | 01/01 05:00 | 0.0 | 22.5 | 21.5 | 0.102761 | 23.1 | 23.1 | 1.0 | 1.1 | 0.0 | 0.0 | 0.119203 | 0.085826 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.053505 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.379826 | 0.0 | 0.094649 | 0.0 | 0.011043 | 0.485518 | 0.0108 | 0.474718 | 0.131866 | 0.0 | 0.0 | 0.0 | 99.691779 | 0.0 | 7.408182 | 9.417645 | 9.933555 | 0.131866 | + | 01/01 06:00 | 0.0 | 25.1 | 24.1 | 0.291908 | 25.7 | 25.7 | 1.0 | 1.1 | 0.0 | 0.0 | 0.338613 | 0.243802 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.151906 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.361301 | 0.0 | 0.093707 | 0.0 | 0.011031 | 0.46604 | 0.0108 | 0.45524 | 0.126455 | 0.0 | 0.0 | 0.0 | 99.539873 | 0.0 | 7.046881 | 9.323938 | 9.922524 | 0.126455 | + | 01/01 07:00 | 0.0 | 28.3 | 27.3 | 1.932875 | 28.9 | 28.9 | 1.0 | 1.1 | 0.0 | 0.0 | 2.242135 | 1.614337 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.004318 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.34368 | 0.0 | 0.092775 | 0.0 | 0.011019 | 0.447474 | 0.0108 | 0.436674 | 0.121298 | 0.0 | 0.0 | 0.0 | 98.535555 | 0.0 | 6.7032 | 9.231163 | 9.911505 | 0.121298 | + | 01/01 08:00 | 0.0 | 27.8 | 26.8 | 4.369536 | 28.4 | 28.4 | 1.0 | 1.1 | 0.0 | 0.0 | 5.068662 | 3.649436 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.247495 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.326919 | 0.0 | 0.091852 | 0.0 | 0.011007 | 0.429777 | 0.0108 | 0.418977 | 0.116383 | 0.0 | 0.0 | 0.0 | 96.288059 | 0.0 | 6.376282 | 9.139312 | 9.900498 | 0.116383 | + | 01/01 09:00 | 0.0 | 31.4 | 30.4 | 7.317556 | 32.0 | 32.0 | 1.0 | 1.1 | 0.0 | 0.0 | 8.488365 | 6.111623 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.677977 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.310975 | 0.0 | 0.090938 | 0.0 | 0.010994 | 0.412907 | 0.0108 | 0.402107 | 0.111696 | 0.0 | 0.0 | 0.0 | 92.610082 | 0.0 | 6.065307 | 9.048374 | 9.889504 | 0.111696 | + | 01/01 10:00 | 0.0 | 32.2 | 31.2 | 8.264362 | 32.8 | 32.8 | 1.0 | 1.1 | 0.0 | 0.0 | 9.58666 | 6.902395 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.995196 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.295808 | 0.0 | 0.090033 | 0.0 | 0.010982 | 0.396824 | 0.0108 | 0.386024 | 0.107229 | 0.0 | 0.0 | 0.0 | 88.614886 | 0.0 | 5.769498 | 8.958341 | 9.878522 | 0.107229 | + | 01/01 11:00 | 0.0 | 35.2 | 34.2 | 9.369867 | 35.8 | 35.8 | 1.0 | 1.1 | 0.0 | 0.0 | 10.869046 | 7.825713 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.334217 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.281382 | 0.0 | 0.089137 | 0.0 | 0.01097 | 0.381489 | 0.0108 | 0.370689 | 0.102969 | 0.0 | 0.0 | 0.0 | 84.28067 | 0.0 | 5.488116 | 8.869204 | 9.867552 | 0.102969 | + | 01/01 12:00 | 0.0 | 37.1 | 36.1 | 5.126178 | 37.7 | 37.7 | 1.0 | 1.1 | 0.0 | 0.0 | 5.946366 | 4.281384 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.255237 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.267659 | 0.0 | 0.08825 | 0.0 | 0.010958 | 0.366867 | 0.0108 | 0.356067 | 0.098907 | 0.0 | 0.0 | 0.0 | 82.025433 | 0.0 | 5.220458 | 8.780954 | 9.856594 | 0.098907 | + | 01/01 13:00 | 0.0 | 31.2 | 30.2 | 6.62503 | 31.8 | 31.8 | 1.0 | 1.1 | 0.0 | 0.0 | 7.685035 | 5.533225 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.836657 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.254605 | 0.0 | 0.087372 | 0.0 | 0.010946 | 0.352922 | 0.0108 | 0.342122 | 0.095034 | 0.0 | 0.0 | 0.0 | 79.188775 | 0.0 | 4.965853 | 8.693582 | 9.845648 | 0.095034 | + | 01/01 14:00 | 0.0 | 24.3 | 23.3 | 7.397619 | 24.9 | 24.9 | 1.0 | 1.1 | 0.0 | 0.0 | 8.581238 | 6.178491 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.05792 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.242188 | 0.0 | 0.086503 | 0.0 | 0.010934 | 0.339624 | 0.0108 | 0.328824 | 0.09134 | 0.0 | 0.0 | 0.0 | 76.130856 | 0.0 | 4.723666 | 8.60708 | 9.834715 | 0.09134 | + | 01/01 15:00 | 0.2 | 25.4 | 24.4 | 2.39151 | 26.0 | 26.0 | 1.0 | 1.1 | 0.0 | 0.2376 | 2.774152 | 1.950491 | 0.2376 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.928078 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.230376 | 0.0 | 0.085642 | 0.0 | 0.010921 | 0.326939 | 0.0108 | 0.316139 | 0.087816 | 0.0 | 0.0 | 0.0 | 75.202777 | 0.0 | 4.49329 | 8.521438 | 9.823793 | 0.087816 | + | 01/01 16:00 | 0.0 | 25.9 | 24.9 | 1.829834 | 26.5 | 26.5 | 1.0 | 1.1 | 0.0 | 0.0 | 2.122607 | 1.528277 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.718317 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.21914 | 0.0 | 0.08479 | 0.0 | 0.010909 | 0.314839 | 0.0108 | 0.304039 | 0.084455 | 0.0 | 0.0 | 0.0 | 74.484461 | 0.0 | 4.274149 | 8.436648 | 9.812884 | 0.084455 | + | 01/01 17:00 | 0.0 | 23.7 | 22.7 | 1.136569 | 24.3 | 24.3 | 1.0 | 1.1 | 0.0 | 0.0 | 1.31842 | 0.949262 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.441908 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.208453 | 0.0 | 0.083946 | 0.0 | 0.010897 | 0.303296 | 0.0108 | 0.292496 | 0.081249 | 0.0 | 0.0 | 0.0 | 74.042552 | 0.0 | 4.065697 | 8.352702 | 9.801987 | 0.081249 | + | 01/01 18:00 | 1.3 | 21.6 | 20.6 | 0.750986 | 22.2 | 22.2 | 1.0 | 1.1 | 0.0 | 1.5444 | 0.871144 | 0.537465 | 0.537465 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.12436 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.198286 | 0.0 | 0.083111 | 0.0 | 0.010885 | 0.292282 | 0.0108 | 0.281482 | 0.078189 | 1.006935 | 0.0 | 0.0 | 73.918192 | 0.0 | 3.86741 | 8.269591 | 9.791102 | 0.078189 | + | 01/01 19:00 | 5.6 | 21.2 | 20.2 | 0.223895 | 21.8 | 21.8 | 1.0 | 1.1 | 0.0 | 6.6528 | 0.259718 | 0.096141 | 0.096141 | 5.659735 | 0.0 | 0.0 | 0.0 | 5.659735 | 0.773106 | 0.023676 | 0.773106 | 0.0 | 0.0 | 0.0 | 0.773106 | 0.207625 | 0.0 | 0.082284 | 0.0 | 0.010873 | 0.300782 | 0.0108 | 0.289982 | 0.080551 | 1.903859 | 0.0 | 0.0 | 78.781146 | 0.0 | 4.43289 | 8.187308 | 9.780229 | 0.080551 | + | 01/01 20:00 | 2.9 | 20.4 | 19.4 | 0.099425 | 21.0 | 21.0 | 1.0 | 1.1 | 0.0 | 3.4452 | 0.115333 | 0.058839 | 0.058839 | 3.349059 | 0.0 | 0.0 | 0.0 | 3.349059 | 0.519646 | 0.015006 | 0.519646 | 0.0 | 0.0 | 0.0 | 0.519646 | 0.228972 | 0.0 | 0.081465 | 0.0 | 0.010861 | 0.321298 | 0.0108 | 0.310498 | 0.086249 | 1.941161 | 0.0 | 0.0 | 81.595554 | 0.0 | 4.723564 | 8.105842 | 9.769368 | 0.086249 | + | 01/01 21:00 | 4.9 | 19.8 | 18.8 | 0.098454 | 20.4 | 20.4 | 1.0 | 1.1 | 0.0 | 5.8212 | 0.114207 | 0.045942 | 0.045942 | 5.762361 | 0.0 | 0.0 | 0.0 | 5.762361 | 0.959121 | 0.012404 | 0.959121 | 0.0 | 0.0 | 0.0 | 0.959121 | 0.253954 | 0.0 | 0.080654 | 0.0 | 0.010849 | 0.345458 | 0.0108 | 0.334658 | 0.09296 | 1.954058 | 0.0 | 0.0 | 86.386389 | 0.0 | 5.428731 | 8.025188 | 9.758519 | 0.09296 | + | 01/01 22:00 | 10.6 | 19.6 | 18.6 | 0.098128 | 20.2 | 20.2 | 1.0 | 1.1 | 0.0 | 12.5928 | 0.113828 | 0.023264 | 0.023264 | 12.546858 | 0.0 | 0.0 | 0.0 | 12.546858 | 2.340807 | 0.007022 | 2.0 | 0.0 | 0.0 | 0.032432 | 2.0 | 0.313939 | 0.0 | 0.079852 | 0.0 | 0.010837 | 0.43706 | 0.0108 | 0.42626 | 0.118406 | 1.976736 | 0.0 | 0.0 | 96.585418 | 0.308375 | 7.114792 | 7.945336 | 9.747682 | 0.118406 | + | 01/01 23:00 | 0.1 | 19.2 | 18.2 | 0.097474 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 0.1188 | 0.11307 | 0.080449 | 0.080449 | 0.095536 | 0.0 | 0.0 | 0.0 | 0.095536 | 0.022281 | 0.0243 | 0.330656 | 0.0 | 0.0 | 0.0 | 0.330656 | 0.355123 | 0.0 | 0.079057 | 0.0 | 0.010825 | 0.445005 | 0.0108 | 0.434205 | 0.120612 | 1.919551 | 0.0 | 0.0 | 96.634373 | 0.0 | 7.090325 | 7.866279 | 9.736857 | 0.120612 | + | 02/01 00:00 | 0.7 | 19.2 | 18.2 | 0.097474 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 0.8316 | 0.11307 | 0.074914 | 0.074914 | 0.751151 | 0.0 | 0.0 | 0.0 | 0.751151 | 0.17536 | 0.022758 | 0.17536 | 0.0 | 0.0 | 0.0 | 0.17536 | 0.350111 | 0.0 | 0.078271 | 0.0 | 0.010813 | 0.439195 | 0.0108 | 0.428395 | 0.118998 | 1.925086 | 0.0 | 0.0 | 97.187406 | 0.0 | 6.915574 | 7.788008 | 9.726045 | 0.118998 | + | 02/01 01:00 | 3.0 | 19.2 | 18.2 | 0.097474 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 3.564 | 0.11307 | 0.057003 | 0.057003 | 3.489086 | 0.0 | 0.0 | 0.0 | 3.489086 | 0.823895 | 0.017787 | 0.823895 | 0.0 | 0.0 | 0.0 | 0.823895 | 0.357535 | 0.0 | 0.077492 | 0.0 | 0.010801 | 0.445828 | 0.0108 | 0.435028 | 0.120841 | 1.942997 | 0.0 | 0.0 | 99.834811 | 0.0 | 7.381934 | 7.710516 | 9.715244 | 0.120841 | + | 02/01 02:00 | 2.1 | 18.9 | 17.9 | 0.096981 | 19.5 | 19.5 | 1.0 | 1.1 | 0.0 | 2.4948 | 0.112498 | 0.063115 | 0.063115 | 2.437797 | 0.0 | 0.0 | 0.0 | 2.437797 | 0.607437 | 0.020052 | 0.607437 | 0.0 | 0.0 | 0.0 | 0.607437 | 0.374957 | 0.0 | 0.076721 | 0.0 | 0.010789 | 0.462467 | 0.0108 | 0.451667 | 0.125463 | 1.936885 | 0.0 | 0.0 | 101.645119 | 0.0 | 7.614414 | 7.633795 | 9.704455 | 0.125463 | + | 02/01 03:00 | 10.4 | 18.7 | 17.7 | 0.096652 | 19.3 | 19.3 | 1.0 | 1.1 | 0.0 | 12.3552 | 0.112116 | 0.023465 | 0.023465 | 12.292085 | 0.0 | 0.0 | 0.0 | 12.292085 | 3.174963 | 0.008122 | 2.0 | 0.0 | 0.0 | 0.111812 | 2.0 | 0.420536 | 0.0 | 0.075958 | 0.0 | 0.010777 | 0.619083 | 0.0108 | 0.608283 | 0.168968 | 1.976535 | 0.0 | 0.0 | 110.754119 | 1.06315 | 9.193878 | 7.557837 | 9.693679 | 0.168968 | + | 02/01 04:00 | 3.5 | 18.5 | 17.5 | 0.096321 | 19.1 | 19.1 | 1.0 | 1.1 | 0.0 | 4.158 | 0.111732 | 0.05308 | 0.05308 | 4.134535 | 0.0 | 0.0 | 0.0 | 4.134535 | 1.267904 | 0.018847 | 2.0 | 0.0 | 0.0 | 0.031504 | 2.0 | 0.497568 | 0.0 | 0.075202 | 0.0 | 0.010765 | 0.615038 | 0.0108 | 0.604238 | 0.167844 | 1.94692 | 0.0 | 0.0 | 113.601903 | 0.29955 | 10.69631 | 7.482636 | 9.682914 | 0.167844 | + | 02/01 05:00 | 3.4 | 18.3 | 17.3 | 0.09599 | 18.9 | 18.9 | 1.0 | 1.1 | 0.0 | 4.0392 | 0.111348 | 0.05353 | 0.05353 | 3.98612 | 0.0 | 0.0 | 0.0 | 3.98612 | 1.286061 | 0.019455 | 1.585612 | 0.0 | 0.0 | 0.0 | 1.585612 | 0.560653 | 0.0 | 0.074453 | 0.0 | 0.010753 | 0.645859 | 0.0108 | 0.635059 | 0.176405 | 1.94647 | 0.0 | 0.0 | 116.282507 | 0.0 | 11.721268 | 7.408182 | 9.672161 | 0.176405 | + | 02/01 06:00 | 1.2 | 18.5 | 17.5 | 0.187298 | 19.1 | 19.1 | 1.0 | 1.1 | 0.0 | 1.4256 | 0.217266 | 0.135647 | 0.135647 | 1.37207 | 0.0 | 0.0 | 0.0 | 1.37207 | 0.463815 | 0.049677 | 0.463815 | 0.0 | 0.0 | 0.0 | 0.463815 | 0.583058 | 0.0 | 0.073713 | 0.0 | 0.010741 | 0.667511 | 0.0108 | 0.656711 | 0.18242 | 1.864353 | 0.0 | 0.0 | 117.141085 | 0.0 | 11.602026 | 7.33447 | 9.66142 | 0.18242 | + | 02/01 07:00 | 0.1 | 18.8 | 17.8 | 1.264612 | 19.4 | 19.4 | 1.0 | 1.1 | 0.0 | 0.1188 | 1.46695 | 1.04373 | 1.04373 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.382074 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.565837 | 0.0 | 0.072979 | 0.0 | 0.010729 | 0.649546 | 0.0108 | 0.638746 | 0.177429 | 0.939422 | 0.0 | 0.0 | 116.759011 | 0.0 | 11.036189 | 7.26149 | 9.650691 | 0.177429 | + | 02/01 08:00 | 0.0 | 18.8 | 17.8 | 3.045538 | 19.4 | 19.4 | 1.0 | 1.1 | 0.0 | 0.0 | 3.532824 | 2.543633 | 0.939422 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.730206 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.538241 | 0.0 | 0.072253 | 0.0 | 0.010717 | 0.621211 | 0.0108 | 0.610411 | 0.169559 | 0.0 | 0.0 | 0.0 | 115.028805 | 0.0 | 10.497947 | 7.189237 | 9.639974 | 0.169559 | + | 02/01 09:00 | 0.0 | 19.0 | 18.0 | 1.930758 | 19.6 | 19.6 | 1.0 | 1.1 | 0.0 | 0.0 | 2.239679 | 1.612569 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.159324 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.511991 | 0.0 | 0.071534 | 0.0 | 0.010705 | 0.59423 | 0.0108 | 0.58343 | 0.162064 | 0.0 | 0.0 | 0.0 | 113.869481 | 0.0 | 9.985957 | 7.117703 | 9.629269 | 0.162064 | + | 02/01 10:00 | 0.4 | 19.2 | 18.2 | 2.461001 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 0.4752 | 2.854761 | 1.960038 | 0.4752 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.394929 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.487021 | 0.0 | 0.070822 | 0.0 | 0.010693 | 0.568536 | 0.0108 | 0.557736 | 0.154927 | 0.0 | 0.0 | 0.0 | 112.474552 | 0.0 | 9.498936 | 7.046881 | 9.618576 | 0.154927 | + | 02/01 11:00 | 0.1 | 19.3 | 18.3 | 6.215945 | 19.9 | 19.9 | 1.0 | 1.1 | 0.0 | 0.1188 | 7.210496 | 5.130246 | 0.1188 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.606389 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.463269 | 0.0 | 0.070118 | 0.0 | 0.010681 | 0.544068 | 0.0108 | 0.533268 | 0.14813 | 0.0 | 0.0 | 0.0 | 108.868163 | 0.0 | 9.035667 | 6.976763 | 9.607894 | 0.14813 | + | 02/01 12:00 | 3.6 | 19.0 | 18.0 | 3.374783 | 19.6 | 19.6 | 1.0 | 1.1 | 0.0 | 4.2768 | 3.914748 | 1.837796 | 1.837796 | 2.2768 | 0.0 | 0.0 | 0.0 | 2.2768 | 0.674632 | 0.634444 | 0.674632 | 0.0 | 0.0 | 0.0 | 0.674632 | 0.457263 | 0.0 | 0.06942 | 0.0 | 0.01067 | 0.537352 | 0.0108 | 0.526552 | 0.146265 | 0.162204 | 0.0 | 0.0 | 109.835888 | 0.0 | 9.253036 | 6.907343 | 9.597225 | 0.146265 | + | 02/01 13:00 | 5.9 | 18.8 | 17.8 | 8.821555 | 19.4 | 19.4 | 1.0 | 1.1 | 0.0 | 7.0092 | 10.233004 | 3.655358 | 2.0 | 5.171404 | 0.0 | 0.0 | 0.0 | 5.171404 | 1.559685 | 2.12359 | 1.559685 | 0.0 | 0.0 | 0.0 | 1.559685 | 0.489626 | 0.0 | 0.068729 | 0.0 | 0.010658 | 0.569013 | 0.0108 | 0.558213 | 0.155059 | 0.0 | 0.0 | 0.0 | 111.324016 | 0.0 | 10.323095 | 6.838614 | 9.586567 | 0.155059 | + | 02/01 14:00 | 1.1 | 18.7 | 17.7 | 4.046025 | 19.3 | 19.3 | 1.0 | 1.1 | 0.0 | 1.3068 | 4.693389 | 2.965278 | 1.3068 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.860822 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.503463 | 0.0 | 0.068045 | 0.0 | 0.010646 | 0.582154 | 0.0108 | 0.571354 | 0.15871 | 0.0 | 0.0 | 0.0 | 109.463194 | 0.0 | 9.819632 | 6.770569 | 9.575921 | 0.15871 | + | 02/01 15:00 | 20.7 | 17.8 | 16.8 | 2.110757 | 18.4 | 18.4 | 1.0 | 1.1 | 0.0 | 24.5916 | 2.448478 | 0.15074 | 0.15074 | 22.5916 | 0.0 | 0.0 | 0.0 | 22.5916 | 6.767422 | 0.059018 | 2.0 | 0.0 | 0.0 | 0.45368 | 2.0 | 0.528086 | 0.0 | 0.067368 | 0.0 | 0.010634 | 1.059769 | 0.0108 | 1.048969 | 0.29138 | 1.84926 | 0.0 | 0.0 | 125.228354 | 4.313741 | 11.291546 | 6.7032 | 9.565287 | 0.29138 | + | 02/01 16:00 | 37.9 | 17.4 | 16.4 | 2.239257 | 18.0 | 18.0 | 1.0 | 1.1 | 0.0 | 45.0252 | 2.597538 | 0.020724 | 0.020724 | 44.87446 | 0.0 | 0.0 | 0.0 | 44.87446 | 17.59319 | 0.009877 | 2.0 | 0.0 | 0.0 | 1.894395 | 1.935423 | 0.598284 | 0.057402 | 0.066984 | 0.007175 | 0.010626 | 2.570289 | 0.0108 | 2.559489 | 0.710969 | 1.979276 | 0.0 | 0.0 | 152.499747 | 18.012536 | 12.628684 | 6.693618 | 9.561836 | 0.710969 | + | 02/01 17:00 | 8.2 | 17.3 | 16.3 | 2.877848 | 17.9 | 17.9 | 1.0 | 1.1 | 0.0 | 9.7416 | 3.338304 | 0.907373 | 0.907373 | 9.720876 | 0.0 | 0.0 | 0.0 | 9.720876 | 5.651759 | 0.443958 | 2.0 | 0.0 | 0.654849 | 2.06163 | 1.868566 | 0.661853 | 0.11683 | 0.067185 | 0.014604 | 0.010626 | 3.456144 | 0.0108 | 3.445344 | 0.95704 | 1.092627 | 0.0 | 0.0 | 156.124906 | 18.947816 | 13.835397 | 6.743264 | 9.565814 | 0.95704 | + | 02/01 18:00 | 3.6 | 16.8 | 15.8 | 1.591452 | 17.4 | 17.4 | 1.0 | 1.1 | 0.0 | 4.2768 | 1.846084 | 0.866652 | 0.866652 | 3.369427 | 0.0 | 0.0 | 0.0 | 3.369427 | 2.053243 | 0.426396 | 2.0 | 0.0 | 0.0 | 1.80819 | 1.80823 | 0.719222 | 0.170462 | 0.067946 | 0.021308 | 0.010635 | 2.605992 | 0.0108 | 2.595192 | 0.720887 | 1.133348 | 0.0 | 0.0 | 157.014694 | 17.192869 | 14.924405 | 6.84578 | 9.576487 | 0.720887 | + | 02/01 19:00 | 7.5 | 16.5 | 15.5 | 0.291604 | 17.1 | 17.1 | 1.0 | 1.1 | 0.0 | 8.91 | 0.338261 | 0.099914 | 0.099914 | 8.043348 | 0.0 | 0.0 | 0.0 | 8.043348 | 4.95744 | 0.049957 | 2.0 | 0.0 | 0.059142 | 1.917555 | 1.75378 | 0.770995 | 0.218862 | 0.069207 | 0.027358 | 0.01065 | 2.827549 | 0.0108 | 2.816749 | 0.78243 | 1.900086 | 0.0 | 0.0 | 160.050645 | 18.173612 | 15.90719 | 6.995435 | 9.593195 | 0.78243 | + | 02/01 20:00 | 18.5 | 16.3 | 15.3 | 0.092622 | 16.9 | 16.9 | 1.0 | 1.1 | 0.0 | 21.978 | 0.107442 | 0.00859 | 0.00859 | 21.878086 | 0.0 | 0.0 | 0.0 | 21.878086 | 14.01084 | 0.004295 | 2.0 | 0.0 | 4.00727 | 2.87243 | 1.704641 | 0.817717 | 0.262542 | 0.070914 | 0.032818 | 0.010671 | 7.779003 | 0.0108 | 7.768203 | 2.157834 | 1.99141 | 0.0 | 0.0 | 167.913595 | 23.304752 | 16.794113 | 7.187063 | 9.615341 | 2.157834 | + | 02/01 21:00 | 15.4 | 16.2 | 15.2 | 0.092451 | 16.8 | 16.8 | 1.0 | 1.1 | 0.0 | 18.2952 | 0.107243 | 0.012392 | 0.012392 | 18.28661 | 0.0 | 0.0 | 0.0 | 18.28661 | 12.889763 | 0.006196 | 2.0 | 0.0 | 5.585106 | 3.254038 | 1.660294 | 0.859883 | 0.301961 | 0.073017 | 0.037745 | 0.010699 | 9.782743 | 0.0108 | 9.771943 | 2.714429 | 1.987608 | 0.0 | 0.0 | 173.304246 | 25.35537 | 17.594525 | 7.416006 | 9.642388 | 2.714429 | + | 02/01 22:00 | 6.3 | 15.5 | 14.5 | 0.091248 | 16.1 | 16.1 | 1.0 | 1.1 | 0.0 | 7.4844 | 0.105848 | 0.036055 | 0.036055 | 7.472008 | 0.0 | 0.0 | 0.0 | 7.472008 | 5.610425 | 0.018028 | 2.0 | 0.0 | 3.527765 | 2.75646 | 1.620274 | 0.897935 | 0.337534 | 0.075473 | 0.042192 | 0.010731 | 7.268364 | 0.0108 | 7.257564 | 2.01599 | 1.963945 | 0.0 | 0.0 | 175.147801 | 22.681569 | 18.316863 | 7.678068 | 9.673848 | 2.01599 | + | 02/01 23:00 | 1.9 | 14.6 | 13.6 | 0.089683 | 15.2 | 15.2 | 1.0 | 1.1 | 0.0 | 2.2572 | 0.104032 | 0.059768 | 0.059768 | 2.221145 | 0.0 | 0.0 | 0.0 | 2.221145 | 1.703438 | 0.029884 | 2.0 | 0.0 | 0.938427 | 2.130215 | 1.584157 | 0.932276 | 0.369638 | 0.07824 | 0.046205 | 0.010768 | 4.089927 | 0.0108 | 4.079127 | 1.133091 | 1.940232 | 0.0 | 0.0 | 175.635624 | 19.316365 | 18.968744 | 7.969466 | 9.709285 | 1.133091 | + | 03/01 00:00 | 4.9 | 14.7 | 13.7 | 0.089858 | 15.3 | 15.3 | 1.0 | 1.1 | 0.0 | 5.8212 | 0.104235 | 0.041931 | 0.041931 | 5.761432 | 0.0 | 0.0 | 0.0 | 5.761432 | 4.443198 | 0.020966 | 2.0 | 0.0 | 0.692334 | 2.070696 | 1.551563 | 0.963267 | 0.398611 | 0.081284 | 0.049826 | 0.01081 | 3.818391 | 0.0108 | 3.807591 | 1.057664 | 1.958069 | 0.0 | 0.0 | 176.932892 | 18.996532 | 19.55704 | 8.286793 | 9.748301 | 1.057664 | + | 03/01 01:00 | 2.7 | 14.6 | 13.6 | 0.089683 | 15.2 | 15.2 | 1.0 | 1.1 | 0.0 | 3.2076 | 0.104032 | 0.05435 | 0.05435 | 3.165669 | 0.0 | 0.0 | 0.0 | 3.165669 | 2.477551 | 0.027175 | 2.0 | 0.0 | 0.0 | 1.853204 | 1.522148 | 0.991235 | 0.424757 | 0.084572 | 0.053095 | 0.010855 | 2.939866 | 0.0108 | 2.929066 | 0.813629 | 1.94565 | 0.0 | 0.0 | 177.593835 | 17.62088 | 20.087952 | 8.626979 | 9.790541 | 0.813629 | + | 03/01 02:00 | 0.5 | 14.1 | 13.1 | 0.088805 | 14.7 | 14.7 | 1.0 | 1.1 | 0.0 | 0.594 | 0.103014 | 0.069893 | 0.069893 | 0.53965 | 0.0 | 0.0 | 0.0 | 0.53965 | 0.425509 | 0.034946 | 2.0 | 0.0 | 0.0 | 1.527016 | 1.495602 | 1.016476 | 0.448353 | 0.088074 | 0.056044 | 0.010903 | 2.642469 | 0.0108 | 2.631669 | 0.731019 | 1.930107 | 0.0 | 0.0 | 177.673031 | 14.519372 | 20.567079 | 8.987258 | 9.835682 | 0.731019 | + | 03/01 03:00 | 0.2 | 14.3 | 13.3 | 0.089157 | 14.9 | 14.9 | 1.0 | 1.1 | 0.0 | 0.2376 | 0.103422 | 0.072716 | 0.072716 | 0.167707 | 0.0 | 0.0 | 0.0 | 0.167707 | 0.132353 | 0.036358 | 2.0 | 0.0 | 0.0 | 1.203971 | 1.471646 | 1.039254 | 0.469648 | 0.091765 | 0.058706 | 0.010955 | 2.345945 | 0.0108 | 2.335145 | 0.648651 | 1.927284 | 0.0 | 0.0 | 177.672027 | 11.447755 | 20.999471 | 9.365141 | 9.883432 | 0.648651 | + | 03/01 04:00 | 0.5 | 14.9 | 13.9 | 0.090207 | 15.5 | 15.5 | 1.0 | 1.1 | 0.0 | 0.594 | 0.10464 | 0.070996 | 0.070996 | 0.521284 | 0.0 | 0.0 | 0.0 | 0.521284 | 0.411389 | 0.035498 | 2.0 | 0.0 | 0.0 | 0.938222 | 1.450026 | 1.05981 | 0.488865 | 0.095621 | 0.061108 | 0.011009 | 2.104662 | 0.0108 | 2.093862 | 0.581628 | 1.929004 | 0.0 | 0.0 | 177.746424 | 8.920923 | 21.389688 | 9.758385 | 9.933531 | 0.581628 | + | 03/01 05:00 | 2.4 | 15.7 | 14.7 | 0.091593 | 16.3 | 16.3 | 1.0 | 1.1 | 0.0 | 2.8512 | 0.106248 | 0.057521 | 0.057521 | 2.780204 | 0.0 | 0.0 | 0.0 | 2.780204 | 2.19593 | 0.028761 | 2.0 | 0.0 | 0.0 | 0.867583 | 1.430516 | 1.078362 | 0.506208 | 0.09962 | 0.063276 | 0.011066 | 2.056631 | 0.0108 | 2.045831 | 0.568286 | 1.942479 | 0.0 | 0.0 | 178.301938 | 8.249269 | 21.741842 | 10.164974 | 9.985741 | 0.568286 | + | 03/01 06:00 | 0.4 | 16.0 | 15.0 | 0.154861 | 16.6 | 16.6 | 1.0 | 1.1 | 0.0 | 0.4752 | 0.179639 | 0.123337 | 0.123337 | 0.417679 | 0.0 | 0.0 | 0.0 | 0.417679 | 0.331967 | 0.061669 | 2.0 | 0.0 | 0.0 | 0.626287 | 1.412908 | 1.095103 | 0.52186 | 0.103744 | 0.065232 | 0.011125 | 1.83626 | 0.0108 | 1.82546 | 0.507072 | 1.876663 | 0.0 | 0.0 | 178.325981 | 5.954949 | 22.059646 | 10.583089 | 10.039848 | 0.507072 | + | 03/01 07:00 | 0.2 | 16.7 | 15.7 | 0.470369 | 17.3 | 17.3 | 1.0 | 1.1 | 0.0 | 0.2376 | 0.545628 | 0.383628 | 0.383628 | 0.114263 | 0.0 | 0.0 | 0.0 | 0.114263 | 0.090839 | 0.191814 | 2.0 | 0.0 | 0.0 | 0.385008 | 1.397018 | 1.110212 | 0.535984 | 0.107975 | 0.066998 | 0.011186 | 1.614381 | 0.0108 | 1.603581 | 0.445439 | 1.616372 | 0.0 | 0.0 | 178.157591 | 3.66078 | 22.346452 | 11.011099 | 10.09566 | 0.445439 | + | 03/01 08:00 | 0.0 | 17.1 | 16.1 | 1.173726 | 17.7 | 17.7 | 1.0 | 1.1 | 0.0 | 0.0 | 1.361522 | 0.980296 | 0.980296 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.490148 | 2.0 | 0.0 | 0.0 | 0.158044 | 1.382677 | 1.123847 | 0.548731 | 0.112297 | 0.068591 | 0.011249 | 1.405437 | 0.0108 | 1.394637 | 0.387399 | 0.636076 | 0.0 | 0.0 | 177.667443 | 1.502736 | 22.605282 | 11.447534 | 10.153002 | 0.387399 | + | 03/01 09:00 | 0.0 | 16.2 | 15.2 | 4.202296 | 16.8 | 16.8 | 1.0 | 1.1 | 0.0 | 0.0 | 4.874663 | 3.509758 | 0.636076 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.19172 | 1.502736 | 0.0 | 0.0 | 0.0 | 1.369736 | 1.136152 | 0.118222 | 0.114494 | 0.014778 | 0.011283 | 1.261929 | 0.0108 | 1.251129 | 0.347536 | 0.0 | 0.0 | 0.0 | 174.475723 | 0.0 | 22.838865 | 11.451262 | 10.156497 | 0.347536 | + | 03/01 10:00 | 0.3 | 15.9 | 14.9 | 4.359715 | 16.5 | 16.5 | 1.0 | 1.1 | 0.0 | 0.3564 | 5.057269 | 3.513746 | 0.3564 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.335546 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.113865 | 0.0 | 0.113942 | 0.0 | 0.011279 | 1.239085 | 0.0108 | 1.228285 | 0.34119 | 0.0 | 0.0 | 0.0 | 171.140177 | 0.0 | 21.725001 | 11.33732 | 10.145218 | 0.34119 | + | 03/01 11:00 | 2.6 | 16.3 | 15.3 | 5.305753 | 16.9 | 16.9 | 1.0 | 1.1 | 0.0 | 3.0888 | 6.154673 | 3.253813 | 2.0 | 1.0888 | 0.0 | 0.0 | 0.0 | 1.0888 | 0.797246 | 2.253813 | 0.797246 | 0.0 | 0.0 | 0.0 | 0.797246 | 1.079144 | 0.0 | 0.112808 | 0.0 | 0.011266 | 1.203218 | 0.0108 | 1.192418 | 0.331227 | 0.0 | 0.0 | 0.0 | 169.177919 | 0.0 | 21.443102 | 11.224512 | 10.133952 | 0.331227 | + | 03/01 12:00 | 0.7 | 16.3 | 15.3 | 5.376027 | 16.9 | 16.9 | 1.0 | 1.1 | 0.0 | 0.8316 | 6.236191 | 4.131769 | 0.8316 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.715969 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.045792 | 0.0 | 0.111686 | 0.0 | 0.011254 | 1.168732 | 0.0108 | 1.157932 | 0.321648 | 0.0 | 0.0 | 0.0 | 165.46195 | 0.0 | 20.39731 | 11.112826 | 10.122698 | 0.321648 | + | 03/01 13:00 | 0.3 | 16.4 | 15.4 | 4.658915 | 17.0 | 17.0 | 1.0 | 1.1 | 0.0 | 0.3564 | 5.404341 | 3.754888 | 0.3564 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.576688 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.994789 | 0.0 | 0.110574 | 0.0 | 0.011241 | 1.116604 | 0.0108 | 1.105804 | 0.307168 | 0.0 | 0.0 | 0.0 | 161.885262 | 0.0 | 19.402521 | 11.002251 | 10.111457 | 0.307168 | + | 03/01 14:00 | 0.3 | 16.5 | 15.5 | 7.789594 | 17.1 | 17.1 | 1.0 | 1.1 | 0.0 | 0.3564 | 9.035929 | 6.278083 | 0.3564 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.099883 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.946272 | 0.0 | 0.109474 | 0.0 | 0.011229 | 1.066975 | 0.0108 | 1.056175 | 0.293382 | 0.0 | 0.0 | 0.0 | 155.785379 | 0.0 | 18.456249 | 10.892777 | 10.100228 | 0.293382 | + | 03/01 15:00 | 0.0 | 18.4 | 17.4 | 4.851567 | 19.0 | 19.0 | 1.0 | 1.1 | 0.0 | 0.0 | 5.627818 | 4.052029 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.945293 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.900122 | 0.0 | 0.108385 | 0.0 | 0.011216 | 1.019723 | 0.0108 | 1.008923 | 0.280256 | 0.0 | 0.0 | 0.0 | 151.840086 | 0.0 | 17.556127 | 10.784392 | 10.089012 | 0.280256 | + | 03/01 16:00 | 0.0 | 18.3 | 17.3 | 5.30692 | 18.9 | 18.9 | 1.0 | 1.1 | 0.0 | 0.0 | 6.156027 | 4.43234 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.206293 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.856222 | 0.0 | 0.107306 | 0.0 | 0.011204 | 0.974733 | 0.0108 | 0.963933 | 0.267759 | 0.0 | 0.0 | 0.0 | 147.633793 | 0.0 | 16.699905 | 10.677086 | 10.077808 | 0.267759 | + | 03/01 17:00 | 0.0 | 18.1 | 17.1 | 3.286036 | 18.7 | 18.7 | 1.0 | 1.1 | 0.0 | 0.0 | 3.811802 | 2.744497 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.532378 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.814464 | 0.0 | 0.106239 | 0.0 | 0.011191 | 0.931894 | 0.0108 | 0.921094 | 0.255859 | 0.0 | 0.0 | 0.0 | 145.101415 | 0.0 | 15.885441 | 10.570847 | 10.066617 | 0.255859 | + | 03/01 18:00 | 0.0 | 16.7 | 15.7 | 1.506216 | 17.3 | 17.3 | 1.0 | 1.1 | 0.0 | 0.0 | 1.747211 | 1.257992 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.140852 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.774742 | 0.0 | 0.105182 | 0.0 | 0.011179 | 0.891103 | 0.0108 | 0.880303 | 0.244529 | 0.0 | 0.0 | 0.0 | 143.960563 | 0.0 | 15.110699 | 10.465665 | 10.055438 | 0.244529 | + | 03/01 19:00 | 0.0 | 15.2 | 14.2 | 0.274762 | 15.8 | 15.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.318724 | 0.229481 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.206477 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.736957 | 0.0 | 0.104135 | 0.0 | 0.011167 | 0.852259 | 0.0108 | 0.841459 | 0.233739 | 0.0 | 0.0 | 0.0 | 143.754086 | 0.0 | 14.373741 | 10.36153 | 10.044271 | 0.233739 | + | 03/01 20:00 | 0.0 | 13.4 | 12.4 | 0.087565 | 14.0 | 14.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.101575 | 0.073134 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.065708 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.701016 | 0.0 | 0.103099 | 0.0 | 0.011154 | 0.815269 | 0.0108 | 0.804469 | 0.223464 | 0.0 | 0.0 | 0.0 | 143.688378 | 0.0 | 13.672726 | 10.258431 | 10.033117 | 0.223464 | + | 03/01 21:00 | 0.0 | 12.4 | 11.4 | 0.085771 | 13.0 | 13.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.099494 | 0.071636 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.064333 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.666827 | 0.0 | 0.102073 | 0.0 | 0.011142 | 0.780042 | 0.0108 | 0.769242 | 0.213678 | 0.0 | 0.0 | 0.0 | 143.624045 | 0.0 | 13.005899 | 10.156358 | 10.021975 | 0.213678 | + | 03/01 22:00 | 0.0 | 11.6 | 10.6 | 0.084317 | 12.2 | 12.2 | 1.0 | 1.1 | 0.0 | 0.0 | 0.097808 | 0.070422 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.063214 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.634305 | 0.0 | 0.101057 | 0.0 | 0.011129 | 0.746492 | 0.0108 | 0.735692 | 0.204359 | 0.0 | 0.0 | 0.0 | 143.560831 | 0.0 | 12.371594 | 10.055301 | 10.010846 | 0.204359 | + | 03/01 23:00 | 0.0 | 11.0 | 10.0 | 0.083215 | 11.6 | 11.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.096529 | 0.069501 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.06236 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.60337 | 0.0 | 0.100052 | 0.0 | 0.011117 | 0.714539 | 0.0108 | 0.703739 | 0.195483 | 0.0 | 0.0 | 0.0 | 143.498471 | 0.0 | 11.768224 | 9.955249 | 9.999729 | 0.195483 | + | 04/01 00:00 | 0.0 | 10.5 | 9.5 | 0.082289 | 11.1 | 11.1 | 1.0 | 1.1 | 0.0 | 0.0 | 0.095455 | 0.068728 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.06164 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.573943 | 0.0 | 0.099056 | 0.0 | 0.011105 | 0.684104 | 0.0108 | 0.673304 | 0.187029 | 0.0 | 0.0 | 0.0 | 143.436831 | 0.0 | 11.194281 | 9.856192 | 9.988625 | 0.187029 | + | 04/01 01:00 | 0.0 | 11.7 | 10.7 | 0.0845 | 12.3 | 12.3 | 1.0 | 1.1 | 0.0 | 0.0 | 0.09802 | 0.070574 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.063269 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.545952 | 0.0 | 0.098071 | 0.0 | 0.011092 | 0.655115 | 0.0108 | 0.644315 | 0.178976 | 0.0 | 0.0 | 0.0 | 143.373563 | 0.0 | 10.64833 | 9.758122 | 9.977532 | 0.178976 | + | 04/01 02:00 | 0.0 | 11.9 | 10.9 | 0.084864 | 12.5 | 12.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.098442 | 0.070878 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.063513 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.519325 | 0.0 | 0.097095 | 0.0 | 0.01108 | 0.6275 | 0.0108 | 0.6167 | 0.171306 | 0.0 | 0.0 | 0.0 | 143.31005 | 0.0 | 10.129004 | 9.661027 | 9.966452 | 0.171306 | + | 04/01 03:00 | 1.3 | 11.2 | 10.2 | 0.083584 | 11.8 | 11.8 | 1.0 | 1.1 | 0.0 | 1.5444 | 0.096957 | 0.059819 | 0.059819 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.02679 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.493997 | 0.0 | 0.096129 | 0.0 | 0.011068 | 0.601194 | 0.0108 | 0.590394 | 0.163998 | 1.484581 | 0.0 | 0.0 | 143.28326 | 0.0 | 9.635007 | 9.564898 | 9.955385 | 0.163998 | + | 04/01 04:00 | 0.0 | 11.1 | 10.1 | 0.0834 | 11.7 | 11.7 | 1.0 | 1.1 | 0.0 | 0.0 | 0.096744 | 0.069656 | 0.069656 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.031189 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.469905 | 0.0 | 0.095172 | 0.0 | 0.011055 | 0.576133 | 0.0108 | 0.565333 | 0.157037 | 1.414925 | 0.0 | 0.0 | 143.252071 | 0.0 | 9.165102 | 9.469726 | 9.944329 | 0.157037 | + | 04/01 05:00 | 0.0 | 11.9 | 10.9 | 0.084864 | 12.5 | 12.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.098442 | 0.070878 | 0.070878 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.03173 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.446987 | 0.0 | 0.094225 | 0.0 | 0.011043 | 0.552256 | 0.0108 | 0.541456 | 0.150404 | 1.344047 | 0.0 | 0.0 | 143.220341 | 0.0 | 8.718115 | 9.3755 | 9.933286 | 0.150404 | + | 04/01 06:00 | 0.0 | 12.2 | 11.2 | 0.310229 | 12.8 | 12.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.359866 | 0.259103 | 0.259103 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.115965 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.425187 | 0.0 | 0.093288 | 0.0 | 0.011031 | 0.529506 | 0.0108 | 0.518706 | 0.144085 | 1.084943 | 0.0 | 0.0 | 143.104376 | 0.0 | 8.292927 | 9.282212 | 9.922255 | 0.144085 | + | 04/01 07:00 | 0.7 | 11.8 | 10.8 | 1.391958 | 12.4 | 12.4 | 1.0 | 1.1 | 0.0 | 0.8316 | 1.614671 | 1.069795 | 1.069795 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.478414 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.404451 | 0.0 | 0.09236 | 0.0 | 0.011019 | 0.507829 | 0.0108 | 0.497029 | 0.138064 | 0.846748 | 0.0 | 0.0 | 142.625962 | 0.0 | 7.888477 | 9.189853 | 9.911237 | 0.138064 | + | 04/01 08:00 | 0.4 | 11.4 | 10.4 | 3.195876 | 12.0 | 12.0 | 1.0 | 1.1 | 0.0 | 0.4752 | 3.707216 | 2.545322 | 1.321948 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.746153 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.384726 | 0.0 | 0.091441 | 0.0 | 0.011006 | 0.487172 | 0.0108 | 0.476372 | 0.132326 | 0.0 | 0.0 | 0.0 | 140.87981 | 0.0 | 7.503751 | 9.098412 | 9.90023 | 0.132326 | + | 04/01 09:00 | 0.1 | 11.6 | 10.6 | 5.191651 | 12.2 | 12.2 | 1.0 | 1.1 | 0.0 | 0.1188 | 6.022315 | 4.284859 | 0.1188 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.772813 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.365962 | 0.0 | 0.090531 | 0.0 | 0.010994 | 0.467487 | 0.0108 | 0.456687 | 0.126858 | 0.0 | 0.0 | 0.0 | 137.106996 | 0.0 | 7.137789 | 9.007882 | 9.889236 | 0.126858 | + | 04/01 10:00 | 0.4 | 13.0 | 12.0 | 7.155036 | 13.6 | 13.6 | 1.0 | 1.1 | 0.0 | 0.4752 | 8.299842 | 5.698554 | 0.4752 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.883197 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.348114 | 0.0 | 0.08963 | 0.0 | 0.010982 | 0.448726 | 0.0108 | 0.437926 | 0.121646 | 0.0 | 0.0 | 0.0 | 132.223799 | 0.0 | 6.789675 | 8.918252 | 9.878254 | 0.121646 | + | 04/01 11:00 | 0.0 | 17.1 | 16.1 | 8.391432 | 17.7 | 17.7 | 1.0 | 1.1 | 0.0 | 0.0 | 9.734061 | 7.008524 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.791835 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.331136 | 0.0 | 0.088738 | 0.0 | 0.01097 | 0.430844 | 0.0108 | 0.420044 | 0.116679 | 0.0 | 0.0 | 0.0 | 126.431964 | 0.0 | 6.458538 | 8.829514 | 9.867284 | 0.116679 | + | 04/01 12:00 | 0.0 | 18.2 | 17.2 | 8.391286 | 18.8 | 18.8 | 1.0 | 1.1 | 0.0 | 0.0 | 9.733892 | 7.008402 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.538038 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.314987 | 0.0 | 0.087855 | 0.0 | 0.010958 | 0.413799 | 0.0108 | 0.402999 | 0.111944 | 0.0 | 0.0 | 0.0 | 120.893926 | 0.0 | 6.143552 | 8.741659 | 9.856327 | 0.111944 | + | 04/01 13:00 | 0.0 | 22.4 | 21.4 | 10.715238 | 23.0 | 23.0 | 1.0 | 1.1 | 0.0 | 0.0 | 12.429676 | 8.949367 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.762026 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.299625 | 0.0 | 0.086981 | 0.0 | 0.010945 | 0.397551 | 0.0108 | 0.386751 | 0.107431 | 0.0 | 0.0 | 0.0 | 114.1319 | 0.0 | 5.843927 | 8.654678 | 9.845381 | 0.107431 | + | 04/01 14:00 | 0.0 | 21.4 | 20.4 | 9.383394 | 22.0 | 22.0 | 1.0 | 1.1 | 0.0 | 0.0 | 10.884737 | 7.837011 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.590331 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.285012 | 0.0 | 0.086115 | 0.0 | 0.010933 | 0.38206 | 0.0108 | 0.37126 | 0.103128 | 0.0 | 0.0 | 0.0 | 108.54157 | 0.0 | 5.558915 | 8.568562 | 9.834448 | 0.103128 | + | 04/01 15:00 | 0.0 | 21.8 | 20.8 | 7.861915 | 22.4 | 22.4 | 1.0 | 1.1 | 0.0 | 0.0 | 9.119821 | 6.566271 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.454459 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.271112 | 0.0 | 0.085259 | 0.0 | 0.010921 | 0.367291 | 0.0108 | 0.356491 | 0.099025 | 0.0 | 0.0 | 0.0 | 104.087111 | 0.0 | 5.287804 | 8.483303 | 9.823527 | 0.099025 | + | 04/01 16:00 | 0.0 | 22.2 | 21.2 | 6.298329 | 22.8 | 22.8 | 1.0 | 1.1 | 0.0 | 0.0 | 7.306062 | 5.260364 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.422101 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.257889 | 0.0 | 0.08441 | 0.0 | 0.010909 | 0.353208 | 0.0108 | 0.342408 | 0.095113 | 0.0 | 0.0 | 0.0 | 100.66501 | 0.0 | 5.029915 | 8.398893 | 9.812618 | 0.095113 | + | 04/01 17:00 | 0.0 | 20.1 | 19.1 | 2.948416 | 20.7 | 20.7 | 1.0 | 1.1 | 0.0 | 0.0 | 3.420163 | 2.462517 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.549308 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.245312 | 0.0 | 0.08357 | 0.0 | 0.010897 | 0.339779 | 0.0108 | 0.328979 | 0.091383 | 0.0 | 0.0 | 0.0 | 99.115702 | 0.0 | 4.784603 | 8.315323 | 9.801721 | 0.091383 | + | 04/01 18:00 | 0.0 | 17.8 | 16.8 | 1.309232 | 18.4 | 18.4 | 1.0 | 1.1 | 0.0 | 0.0 | 1.518709 | 1.093471 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.677376 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.233348 | 0.0 | 0.082739 | 0.0 | 0.010885 | 0.326971 | 0.0108 | 0.316171 | 0.087825 | 0.0 | 0.0 | 0.0 | 98.438326 | 0.0 | 4.551255 | 8.232584 | 9.790836 | 0.087825 | + | 04/01 19:00 | 0.0 | 15.2 | 14.2 | 0.32955 | 15.8 | 15.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.382278 | 0.27524 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.169339 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.221967 | 0.0 | 0.081916 | 0.0 | 0.010873 | 0.314756 | 0.0108 | 0.303956 | 0.084432 | 0.0 | 0.0 | 0.0 | 98.268988 | 0.0 | 4.329288 | 8.150668 | 9.779964 | 0.084432 | + | 04/01 20:00 | 0.0 | 14.5 | 13.5 | 0.089508 | 15.1 | 15.1 | 1.0 | 1.1 | 0.0 | 0.0 | 0.103829 | 0.074757 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.045914 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.211142 | 0.0 | 0.081101 | 0.0 | 0.010861 | 0.303103 | 0.0108 | 0.292303 | 0.081195 | 0.0 | 0.0 | 0.0 | 98.223073 | 0.0 | 4.118146 | 8.069568 | 9.769103 | 0.081195 | + | 04/01 21:00 | 0.0 | 12.4 | 11.4 | 0.085771 | 13.0 | 13.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.099494 | 0.071636 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.043977 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.200844 | 0.0 | 0.080294 | 0.0 | 0.010849 | 0.291986 | 0.0108 | 0.281186 | 0.078107 | 0.0 | 0.0 | 0.0 | 98.179096 | 0.0 | 3.917302 | 7.989274 | 9.758255 | 0.078107 | + | 04/01 22:00 | 0.0 | 11.7 | 10.7 | 0.0845 | 12.3 | 12.3 | 1.0 | 1.1 | 0.0 | 0.0 | 0.09802 | 0.070574 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.043306 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.191049 | 0.0 | 0.079495 | 0.0 | 0.010836 | 0.28138 | 0.0108 | 0.27058 | 0.075161 | 0.0 | 0.0 | 0.0 | 98.13579 | 0.0 | 3.726252 | 7.90978 | 9.747418 | 0.075161 | + | 04/01 23:00 | 0.0 | 11.9 | 10.9 | 0.084864 | 12.5 | 12.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.098442 | 0.070878 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.043473 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.181731 | 0.0 | 0.078704 | 0.0 | 0.010824 | 0.27126 | 0.0108 | 0.26046 | 0.07235 | 0.0 | 0.0 | 0.0 | 98.092317 | 0.0 | 3.544521 | 7.831076 | 9.736594 | 0.07235 | + +There is no indication of an error in the water balance: + +>>> from hydpy import round_ +>>> round_(model.check_waterbalance(conditions)) +0.0 + +.. _hland_v3_ilake: + +internal lake +_____________ + +.. integration-test:: + + >>> zonetype(ILAKE) + >>> ttice(13.0) + >>> parameters.update() + >>> test('hland_v3_ilake') + | date | p | t | tn | epn | tmean | tc | fracrain | rfc | sfc | pc | ep | epc | ei | tf | glmelt | melt | refr | in_ | r | ea | dp | el | rs | ri | gr1 | rg1 | gr2 | rg2 | gr3 | rg3 | ro | ra | rt | qt | ic | sp | wc | sm | suz | sg1 | sg2 | sg3 | outlet | + ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | 01/01 00:00 | 0.0 | 21.2 | 20.2 | 0.100707 | 21.8 | 21.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.11682 | 0.08411 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.08411 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.099502 | 0.0 | 0.011105 | 0.110607 | 0.0108 | 0.099807 | 0.027724 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.825733 | 9.979549 | 0.027724 | + | 01/01 01:00 | 0.0 | 19.4 | 18.4 | 0.097801 | 20.0 | 20.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.113449 | 0.081683 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.081683 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.097768 | 0.0 | 0.011082 | 0.10885 | 0.0108 | 0.09805 | 0.027236 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.655358 | 9.959391 | 0.027236 | + | 01/01 02:00 | 0.0 | 18.9 | 17.9 | 0.096981 | 19.5 | 19.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.112498 | 0.080999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.080999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.096072 | 0.0 | 0.01106 | 0.107132 | 0.0108 | 0.096332 | 0.026759 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.487287 | 9.939332 | 0.026759 | + | 01/01 03:00 | 0.0 | 18.3 | 17.3 | 0.09599 | 18.9 | 18.9 | 1.0 | 1.1 | 0.0 | 0.0 | 0.111348 | 0.080171 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.080171 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0944 | 0.0 | 0.011038 | 0.105438 | 0.0108 | 0.094638 | 0.026288 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.321624 | 9.919386 | 0.026288 | + | 01/01 04:00 | 0.0 | 18.9 | 17.9 | 0.096981 | 19.5 | 19.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.112498 | 0.080999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.080999 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.092752 | 0.0 | 0.011015 | 0.103767 | 0.0108 | 0.092967 | 0.025824 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.156874 | 9.899371 | 0.025824 | + | 01/01 05:00 | 0.0 | 22.5 | 21.5 | 0.102761 | 23.1 | 23.1 | 1.0 | 1.1 | 0.0 | 0.0 | 0.119203 | 0.085826 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.085826 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.091112 | 0.0 | 0.010993 | 0.102106 | 0.0108 | 0.091306 | 0.025363 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.989472 | 9.878841 | 0.025363 | + | 01/01 06:00 | 0.0 | 25.1 | 24.1 | 0.291908 | 25.7 | 25.7 | 1.0 | 1.1 | 0.0 | 0.0 | 0.338613 | 0.243802 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.243802 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.089447 | 0.0 | 0.01097 | 0.100417 | 0.0108 | 0.089617 | 0.024894 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.683312 | 9.840782 | 0.024894 | + | 01/01 07:00 | 0.0 | 28.3 | 27.3 | 1.932875 | 28.9 | 28.9 | 1.0 | 1.1 | 0.0 | 0.0 | 2.242135 | 1.614337 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.614337 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0864 | 0.0 | 0.010928 | 0.097329 | 0.0108 | 0.086529 | 0.024036 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.161946 | 9.650483 | 0.024036 | + | 01/01 08:00 | 0.0 | 27.8 | 26.8 | 4.369536 | 28.4 | 28.4 | 1.0 | 1.1 | 0.0 | 0.0 | 5.068662 | 3.649436 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.649436 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.071263 | 0.0 | 0.010717 | 0.081979 | 0.0108 | 0.071179 | 0.019772 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.846739 | 9.234273 | 0.019772 | + | 01/01 09:00 | 0.0 | 31.4 | 30.4 | 7.317556 | 32.0 | 32.0 | 1.0 | 1.1 | 0.0 | 0.0 | 8.488365 | 6.111623 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.111623 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.038276 | 0.0 | 0.010255 | 0.04853 | 0.0108 | 0.03773 | 0.010481 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -1.62409 | 8.54495 | 0.010481 | + | 01/01 10:00 | 0.0 | 32.2 | 31.2 | 8.264362 | 32.8 | 32.8 | 1.0 | 1.1 | 0.0 | 0.0 | 9.58666 | 6.902395 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.902395 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.009489 | 0.009489 | 0.009489 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -7.759552 | 7.768528 | 0.0 | + | 01/01 11:00 | 0.0 | 35.2 | 34.2 | 9.369867 | 35.8 | 35.8 | 1.0 | 1.1 | 0.0 | 0.0 | 10.869046 | 7.825713 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.825713 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.008627 | 0.008627 | 0.008627 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -14.715741 | 6.890377 | 0.0 | + | 01/01 12:00 | 0.0 | 37.1 | 36.1 | 5.126178 | 37.7 | 37.7 | 1.0 | 1.1 | 0.0 | 0.0 | 5.946366 | 4.281384 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.281384 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.007652 | 0.007652 | 0.007652 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -18.521416 | 6.407016 | 0.0 | + | 01/01 13:00 | 0.0 | 31.2 | 30.2 | 6.62503 | 31.8 | 31.8 | 1.0 | 1.1 | 0.0 | 0.0 | 7.685035 | 5.533225 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.533225 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.007115 | 0.007115 | 0.007115 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -23.439838 | 5.785098 | 0.0 | + | 01/01 14:00 | 0.0 | 24.3 | 23.3 | 7.397619 | 24.9 | 24.9 | 1.0 | 1.1 | 0.0 | 0.0 | 8.581238 | 6.178491 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.178491 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.006424 | 0.006424 | 0.006424 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -28.931831 | 5.092175 | 0.0 | + | 01/01 15:00 | 0.2 | 25.4 | 24.4 | 2.39151 | 26.0 | 26.0 | 1.0 | 1.1 | 0.0 | 0.2376 | 2.774152 | 1.950491 | 0.0 | 0.2376 | 0.0 | 0.0 | 0.0 | 0.2376 | 0.2376 | 0.0 | 0.0 | 1.950491 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2112 | 0.0 | 0.0264 | 0.005669 | 0.005669 | 0.005669 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -30.4544 | 4.896184 | 0.0 | + | 01/01 16:00 | 0.0 | 25.9 | 24.9 | 1.829834 | 26.5 | 26.5 | 1.0 | 1.1 | 0.0 | 0.0 | 2.122607 | 1.528277 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.528277 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.005437 | 0.005437 | 0.005437 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -31.812869 | 4.720939 | 0.0 | + | 01/01 17:00 | 0.0 | 23.7 | 22.7 | 1.136569 | 24.3 | 24.3 | 1.0 | 1.1 | 0.0 | 0.0 | 1.31842 | 0.949262 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.949262 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.005243 | 0.005243 | 0.005243 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -32.656658 | 4.610222 | 0.0 | + | 01/01 18:00 | 1.3 | 21.6 | 20.6 | 0.750986 | 22.2 | 22.2 | 1.0 | 1.1 | 0.0 | 1.5444 | 0.871144 | 0.537465 | 0.0 | 1.5444 | 0.0 | 0.0 | 0.0 | 1.5444 | 1.5444 | 0.0 | 0.0 | 0.537465 | 0.0 | 0.0 | 0.0 | 0.0 | 1.3728 | 0.0 | 0.1716 | 0.005215 | 0.005215 | 0.005215 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -31.761604 | 4.716889 | 0.0 | + | 01/01 19:00 | 5.6 | 21.2 | 20.2 | 0.223895 | 21.8 | 21.8 | 1.0 | 1.1 | 0.0 | 6.6528 | 0.259718 | 0.096141 | 0.0 | 6.6528 | 0.0 | 0.0 | 0.0 | 6.6528 | 6.6528 | 0.0 | 0.0 | 0.096141 | 0.0 | 0.0 | 0.0 | 0.0 | 5.9136 | 0.0 | 0.7392 | 0.005649 | 0.005649 | 0.005649 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -25.933462 | 5.439758 | 0.0 | + | 01/01 20:00 | 2.9 | 20.4 | 19.4 | 0.099425 | 21.0 | 21.0 | 1.0 | 1.1 | 0.0 | 3.4452 | 0.115333 | 0.058839 | 0.0 | 3.4452 | 0.0 | 0.0 | 0.0 | 3.4452 | 3.4452 | 0.0 | 0.0 | 0.058839 | 0.0 | 0.0 | 0.0 | 0.0 | 3.0624 | 0.0 | 0.3828 | 0.006253 | 0.006253 | 0.006253 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -22.923363 | 5.809767 | 0.0 | + | 01/01 21:00 | 4.9 | 19.8 | 18.8 | 0.098454 | 20.4 | 20.4 | 1.0 | 1.1 | 0.0 | 5.8212 | 0.114207 | 0.045942 | 0.0 | 5.8212 | 0.0 | 0.0 | 0.0 | 5.8212 | 5.8212 | 0.0 | 0.0 | 0.045942 | 0.0 | 0.0 | 0.0 | 0.0 | 5.1744 | 0.0 | 0.6468 | 0.006811 | 0.006811 | 0.006811 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -17.789801 | 6.444652 | 0.0 | + | 01/01 22:00 | 10.6 | 19.6 | 18.6 | 0.098128 | 20.2 | 20.2 | 1.0 | 1.1 | 0.0 | 12.5928 | 0.113828 | 0.023264 | 0.0 | 12.5928 | 0.0 | 0.0 | 0.0 | 12.5928 | 12.5928 | 0.0 | 0.0 | 0.023264 | 0.0 | 0.0 | 0.0 | 0.0 | 11.1936 | 0.0 | 1.3992 | 0.007934 | 0.007934 | 0.007934 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -6.61688 | 7.833333 | 0.0 | + | 01/01 23:00 | 0.1 | 19.2 | 18.2 | 0.097474 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 0.1188 | 0.11307 | 0.080449 | 0.0 | 0.1188 | 0.0 | 0.0 | 0.0 | 0.1188 | 0.1188 | 0.0 | 0.0 | 0.080449 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1056 | 0.0 | 0.0132 | 0.008706 | 0.008706 | 0.008706 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -6.58279 | 7.828888 | 0.0 | + | 02/01 00:00 | 0.7 | 19.2 | 18.2 | 0.097474 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 0.8316 | 0.11307 | 0.074914 | 0.0 | 0.8316 | 0.0 | 0.0 | 0.0 | 0.8316 | 0.8316 | 0.0 | 0.0 | 0.074914 | 0.0 | 0.0 | 0.0 | 0.0 | 0.7392 | 0.0 | 0.0924 | 0.008745 | 0.008745 | 0.008745 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -5.91018 | 7.904219 | 0.0 | + | 02/01 01:00 | 3.0 | 19.2 | 18.2 | 0.097474 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 3.564 | 0.11307 | 0.057003 | 0.0 | 3.564 | 0.0 | 0.0 | 0.0 | 3.564 | 3.564 | 0.0 | 0.0 | 0.057003 | 0.0 | 0.0 | 0.0 | 0.0 | 3.168 | 0.0 | 0.396 | 0.008998 | 0.008998 | 0.008998 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -2.79285 | 8.284888 | 0.0 | + | 02/01 02:00 | 2.1 | 18.9 | 17.9 | 0.096981 | 19.5 | 19.5 | 1.0 | 1.1 | 0.0 | 2.4948 | 0.112498 | 0.063115 | 0.0 | 2.4948 | 0.0 | 0.0 | 0.0 | 2.4948 | 2.4948 | 0.0 | 0.0 | 0.063115 | 0.0 | 0.0 | 0.0 | 0.0 | 2.2176 | 0.0 | 0.2772 | 0.009354 | 0.009354 | 0.009354 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.631351 | 8.545721 | 0.0 | + | 02/01 03:00 | 10.4 | 18.7 | 17.7 | 0.096652 | 19.3 | 19.3 | 1.0 | 1.1 | 0.0 | 12.3552 | 0.112116 | 0.023465 | 0.0 | 12.3552 | 0.0 | 0.0 | 0.0 | 12.3552 | 12.3552 | 0.0 | 0.0 | 0.023465 | 0.0 | 0.0 | 0.0 | 0.0 | 10.9824 | 0.002975 | 1.3728 | 0.010252 | 0.013227 | 0.0108 | 0.002427 | 0.000674 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 10.327216 | 9.905661 | 0.000674 | + | 02/01 04:00 | 3.5 | 18.5 | 17.5 | 0.096321 | 19.1 | 19.1 | 1.0 | 1.1 | 0.0 | 4.158 | 0.111732 | 0.05308 | 0.0 | 4.158 | 0.0 | 0.0 | 0.0 | 4.158 | 4.158 | 0.0 | 0.0 | 0.05308 | 0.0 | 0.0 | 0.0 | 0.0 | 3.696 | 0.121176 | 0.462 | 0.011257 | 0.132433 | 0.0108 | 0.121633 | 0.033787 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 13.854858 | 10.350507 | 0.033787 | + | 02/01 05:00 | 3.4 | 18.3 | 17.3 | 0.09599 | 18.9 | 18.9 | 1.0 | 1.1 | 0.0 | 4.0392 | 0.111348 | 0.05353 | 0.0 | 4.0392 | 0.0 | 0.0 | 0.0 | 4.0392 | 4.0392 | 0.0 | 0.0 | 0.05353 | 0.0 | 0.0 | 0.0 | 0.0 | 3.5904 | 0.15575 | 0.4488 | 0.011743 | 0.167494 | 0.0108 | 0.156694 | 0.043526 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 17.241925 | 10.781615 | 0.043526 | + | 02/01 06:00 | 1.2 | 18.5 | 17.5 | 0.187298 | 19.1 | 19.1 | 1.0 | 1.1 | 0.0 | 1.4256 | 0.217266 | 0.135647 | 0.0 | 1.4256 | 0.0 | 0.0 | 0.0 | 1.4256 | 1.4256 | 0.0 | 0.0 | 0.135647 | 0.0 | 0.0 | 0.0 | 0.0 | 1.2672 | 0.177875 | 0.1584 | 0.012061 | 0.189936 | 0.0108 | 0.179136 | 0.04976 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 18.210675 | 10.912883 | 0.04976 | + | 02/01 07:00 | 0.1 | 18.8 | 17.8 | 1.264612 | 19.4 | 19.4 | 1.0 | 1.1 | 0.0 | 0.1188 | 1.46695 | 1.04373 | 0.0 | 0.1188 | 0.0 | 0.0 | 0.0 | 0.1188 | 0.1188 | 0.0 | 0.0 | 1.04373 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1056 | 0.181725 | 0.0132 | 0.012126 | 0.193852 | 0.0108 | 0.183052 | 0.050848 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 17.206789 | 10.797987 | 0.050848 | + | 02/01 08:00 | 0.0 | 18.8 | 17.8 | 3.045538 | 19.4 | 19.4 | 1.0 | 1.1 | 0.0 | 0.0 | 3.532824 | 2.543633 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.543633 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.17121 | 0.0 | 0.011991 | 0.183202 | 0.0108 | 0.172402 | 0.047889 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 14.774571 | 10.50337 | 0.047889 | + | 02/01 09:00 | 0.0 | 19.0 | 18.0 | 1.930758 | 19.6 | 19.6 | 1.0 | 1.1 | 0.0 | 0.0 | 2.239679 | 1.612569 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.612569 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.147009 | 0.0 | 0.011664 | 0.158673 | 0.0108 | 0.147873 | 0.041076 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 13.194167 | 10.312531 | 0.041076 | + | 02/01 10:00 | 0.4 | 19.2 | 18.2 | 2.461001 | 19.8 | 19.8 | 1.0 | 1.1 | 0.0 | 0.4752 | 2.854761 | 1.960038 | 0.0 | 0.4752 | 0.0 | 0.0 | 0.0 | 0.4752 | 0.4752 | 0.0 | 0.0 | 1.960038 | 0.0 | 0.0 | 0.0 | 0.0 | 0.4224 | 0.133389 | 0.0528 | 0.011481 | 0.14487 | 0.0108 | 0.13407 | 0.037242 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 11.740921 | 10.136068 | 0.037242 | + | 02/01 11:00 | 0.1 | 19.3 | 18.3 | 6.215945 | 19.9 | 19.9 | 1.0 | 1.1 | 0.0 | 0.1188 | 7.210496 | 5.130246 | 0.0 | 0.1188 | 0.0 | 0.0 | 0.0 | 0.1188 | 0.1188 | 0.0 | 0.0 | 5.130246 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1056 | 0.11735 | 0.0132 | 0.011263 | 0.128614 | 0.0108 | 0.117814 | 0.032726 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.168952 | 9.567977 | 0.032726 | + | 02/01 12:00 | 3.6 | 19.0 | 18.0 | 3.374783 | 19.6 | 19.6 | 1.0 | 1.1 | 0.0 | 4.2768 | 3.914748 | 1.837796 | 0.0 | 4.2768 | 0.0 | 0.0 | 0.0 | 4.2768 | 4.2768 | 0.0 | 0.0 | 1.837796 | 0.0 | 0.0 | 0.0 | 0.0 | 3.8016 | 0.090277 | 0.4752 | 0.010889 | 0.101166 | 0.0108 | 0.090366 | 0.025102 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.246678 | 9.828089 | 0.025102 | + | 02/01 13:00 | 5.9 | 18.8 | 17.8 | 8.821555 | 19.4 | 19.4 | 1.0 | 1.1 | 0.0 | 7.0092 | 10.233004 | 3.655358 | 0.0 | 7.0092 | 0.0 | 0.0 | 0.0 | 7.0092 | 7.0092 | 0.0 | 0.0 | 3.655358 | 0.0 | 0.0 | 0.0 | 0.0 | 6.2304 | 0.123054 | 0.7788 | 0.011347 | 0.134401 | 0.0108 | 0.123601 | 0.034334 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 12.104817 | 10.189391 | 0.034334 | + | 02/01 14:00 | 1.1 | 18.7 | 17.7 | 4.046025 | 19.3 | 19.3 | 1.0 | 1.1 | 0.0 | 1.3068 | 4.693389 | 2.965278 | 0.0 | 1.3068 | 0.0 | 0.0 | 0.0 | 1.3068 | 1.3068 | 0.0 | 0.0 | 2.965278 | 0.0 | 0.0 | 0.0 | 0.0 | 1.1616 | 0.126234 | 0.1452 | 0.011396 | 0.13763 | 0.0108 | 0.12683 | 0.03523 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 10.50438 | 9.99372 | 0.03523 | + | 02/01 15:00 | 20.7 | 17.8 | 16.8 | 2.110757 | 18.4 | 18.4 | 1.0 | 1.1 | 0.0 | 24.5916 | 2.448478 | 0.15074 | 0.0 | 24.5916 | 0.0 | 0.0 | 0.0 | 24.5916 | 24.5916 | 0.0 | 0.0 | 0.15074 | 0.0 | 0.0 | 0.0 | 0.0 | 21.8592 | 0.213453 | 2.7324 | 0.012615 | 0.226068 | 0.0108 | 0.215268 | 0.059797 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 32.016136 | 12.696755 | 0.059797 | + | 02/01 16:00 | 37.9 | 17.4 | 16.4 | 2.239257 | 18.0 | 18.0 | 1.0 | 1.1 | 0.0 | 45.0252 | 2.597538 | 0.020724 | 0.0 | 45.0252 | 0.0 | 0.0 | 0.0 | 45.0252 | 45.0252 | 0.0 | 0.0 | 0.020724 | 0.0 | 0.0 | 0.0 | 0.0 | 40.0224 | 0.518013 | 5.0028 | 0.016878 | 0.53489 | 0.0108 | 0.52409 | 0.145581 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 71.502102 | 17.680375 | 0.145581 | + | 02/01 17:00 | 8.2 | 17.3 | 16.3 | 2.877848 | 17.9 | 17.9 | 1.0 | 1.1 | 0.0 | 9.7416 | 3.338304 | 0.907373 | 0.0 | 9.7416 | 0.0 | 0.0 | 0.0 | 9.7416 | 9.7416 | 0.0 | 0.0 | 0.907373 | 0.0 | 0.0 | 0.0 | 0.0 | 8.6592 | 0.75461 | 1.0824 | 0.020235 | 0.774845 | 0.0108 | 0.764045 | 0.212235 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 78.600138 | 18.641721 | 0.212235 | + | 02/01 18:00 | 3.6 | 16.8 | 15.8 | 1.591452 | 17.4 | 17.4 | 1.0 | 1.1 | 0.0 | 4.2768 | 1.846084 | 0.866652 | 0.0 | 4.2768 | 0.0 | 0.0 | 0.0 | 4.2768 | 4.2768 | 0.0 | 0.0 | 0.866652 | 0.0 | 0.0 | 0.0 | 0.0 | 3.8016 | 0.801029 | 0.4752 | 0.020965 | 0.821995 | 0.0108 | 0.811195 | 0.225332 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 80.830351 | 18.99966 | 0.225332 | + | 02/01 19:00 | 7.5 | 16.5 | 15.5 | 0.291604 | 17.1 | 17.1 | 1.0 | 1.1 | 0.0 | 8.91 | 0.338261 | 0.099914 | 0.0 | 8.91 | 0.0 | 0.0 | 0.0 | 8.91 | 8.91 | 0.0 | 0.0 | 0.099914 | 0.0 | 0.0 | 0.0 | 0.0 | 7.92 | 0.843744 | 0.99 | 0.021649 | 0.865393 | 0.0108 | 0.854593 | 0.237387 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 87.817795 | 19.95691 | 0.237387 | + | 02/01 20:00 | 18.5 | 16.3 | 15.3 | 0.092622 | 16.9 | 16.9 | 1.0 | 1.1 | 0.0 | 21.978 | 0.107442 | 0.00859 | 0.0 | 21.978 | 0.0 | 0.0 | 0.0 | 21.978 | 21.978 | 0.0 | 0.0 | 0.00859 | 0.0 | 0.0 | 0.0 | 0.0 | 19.536 | 0.971157 | 2.442 | 0.023518 | 0.994675 | 0.0108 | 0.983875 | 0.273299 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 106.375002 | 22.374437 | 0.273299 | + | 02/01 21:00 | 15.4 | 16.2 | 15.2 | 0.092451 | 16.8 | 16.8 | 1.0 | 1.1 | 0.0 | 18.2952 | 0.107243 | 0.012392 | 0.0 | 18.2952 | 0.0 | 0.0 | 0.0 | 18.2952 | 18.2952 | 0.0 | 0.0 | 0.012392 | 0.0 | 0.0 | 0.0 | 0.0 | 16.2624 | 1.139491 | 2.0328 | 0.025976 | 1.165466 | 0.0108 | 1.154666 | 0.320741 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 121.486896 | 24.379885 | 0.320741 | + | 02/01 22:00 | 6.3 | 15.5 | 14.5 | 0.091248 | 16.1 | 16.1 | 1.0 | 1.1 | 0.0 | 7.4844 | 0.105848 | 0.036055 | 0.0 | 7.4844 | 0.0 | 0.0 | 0.0 | 7.4844 | 7.4844 | 0.0 | 0.0 | 0.036055 | 0.0 | 0.0 | 0.0 | 0.0 | 6.6528 | 1.241968 | 0.8316 | 0.027536 | 1.269504 | 0.0108 | 1.258704 | 0.34964 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 126.865679 | 25.179943 | 0.34964 | + | 02/01 23:00 | 1.9 | 14.6 | 13.6 | 0.089683 | 15.2 | 15.2 | 1.0 | 1.1 | 0.0 | 2.2572 | 0.104032 | 0.059768 | 0.0 | 2.2572 | 0.0 | 0.0 | 0.0 | 2.2572 | 2.2572 | 0.0 | 0.0 | 0.059768 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0064 | 1.272333 | 0.2508 | 0.028101 | 1.300435 | 0.0108 | 1.289635 | 0.358232 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 127.546618 | 25.396001 | 0.358232 | + | 03/01 00:00 | 4.9 | 14.7 | 13.7 | 0.089858 | 15.3 | 15.3 | 1.0 | 1.1 | 0.0 | 5.8212 | 0.104235 | 0.041931 | 0.0 | 5.8212 | 0.0 | 0.0 | 0.0 | 5.8212 | 5.8212 | 0.0 | 0.0 | 0.041931 | 0.0 | 0.0 | 0.0 | 0.0 | 5.1744 | 1.294896 | 0.6468 | 0.028561 | 1.323457 | 0.0108 | 1.312657 | 0.364627 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 131.38885 | 26.00958 | 0.364627 | + | 03/01 01:00 | 2.7 | 14.6 | 13.6 | 0.089683 | 15.2 | 15.2 | 1.0 | 1.1 | 0.0 | 3.2076 | 0.104032 | 0.05435 | 0.0 | 3.2076 | 0.0 | 0.0 | 0.0 | 3.2076 | 3.2076 | 0.0 | 0.0 | 0.05435 | 0.0 | 0.0 | 0.0 | 0.0 | 2.8512 | 1.321549 | 0.3564 | 0.029081 | 1.350631 | 0.0108 | 1.339831 | 0.372175 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 132.87019 | 26.33086 | 0.372175 | + | 03/01 02:00 | 0.5 | 14.1 | 13.1 | 0.088805 | 14.7 | 14.7 | 1.0 | 1.1 | 0.0 | 0.594 | 0.103014 | 0.069893 | 0.0 | 0.594 | 0.0 | 0.0 | 0.0 | 0.594 | 0.594 | 0.0 | 0.0 | 0.069893 | 0.0 | 0.0 | 0.0 | 0.0 | 0.528 | 1.324712 | 0.066 | 0.029277 | 1.353989 | 0.0108 | 1.343189 | 0.373108 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 132.011351 | 26.359817 | 0.373108 | + | 03/01 03:00 | 0.2 | 14.3 | 13.3 | 0.089157 | 14.9 | 14.9 | 1.0 | 1.1 | 0.0 | 0.2376 | 0.103422 | 0.072716 | 0.0 | 0.2376 | 0.0 | 0.0 | 0.0 | 0.2376 | 0.2376 | 0.0 | 0.0 | 0.072716 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2112 | 1.314587 | 0.0264 | 0.029287 | 1.343874 | 0.0108 | 1.333074 | 0.370298 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 130.843328 | 26.348851 | 0.370298 | + | 03/01 04:00 | 0.5 | 14.9 | 13.9 | 0.090207 | 15.5 | 15.5 | 1.0 | 1.1 | 0.0 | 0.594 | 0.10464 | 0.070996 | 0.0 | 0.594 | 0.0 | 0.0 | 0.0 | 0.594 | 0.594 | 0.0 | 0.0 | 0.070996 | 0.0 | 0.0 | 0.0 | 0.0 | 0.528 | 1.304544 | 0.066 | 0.029297 | 1.333841 | 0.0108 | 1.323041 | 0.367511 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 130.003676 | 26.377665 | 0.367511 | + | 03/01 05:00 | 2.4 | 15.7 | 14.7 | 0.091593 | 16.3 | 16.3 | 1.0 | 1.1 | 0.0 | 2.8512 | 0.106248 | 0.057521 | 0.0 | 2.8512 | 0.0 | 0.0 | 0.0 | 2.8512 | 2.8512 | 0.0 | 0.0 | 0.057521 | 0.0 | 0.0 | 0.0 | 0.0 | 2.5344 | 1.306188 | 0.3168 | 0.029468 | 1.335656 | 0.0108 | 1.324856 | 0.368016 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 131.180758 | 26.658606 | 0.368016 | + | 03/01 06:00 | 0.4 | 16.0 | 15.0 | 0.154861 | 16.6 | 16.6 | 1.0 | 1.1 | 0.0 | 0.4752 | 0.179639 | 0.123337 | 0.0 | 0.4752 | 0.0 | 0.0 | 0.0 | 0.4752 | 0.4752 | 0.0 | 0.0 | 0.123337 | 0.0 | 0.0 | 0.0 | 0.0 | 0.4224 | 1.307375 | 0.0528 | 0.029634 | 1.337009 | 0.0108 | 1.326209 | 0.368391 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 130.18615 | 26.668068 | 0.368391 | + | 03/01 07:00 | 0.2 | 16.7 | 15.7 | 0.470369 | 17.3 | 17.3 | 1.0 | 1.1 | 0.0 | 0.2376 | 0.545628 | 0.383628 | 0.0 | 0.2376 | 0.0 | 0.0 | 0.0 | 0.2376 | 0.2376 | 0.0 | 0.0 | 0.383628 | 0.0 | 0.0 | 0.0 | 0.0 | 0.2112 | 1.296426 | 0.0264 | 0.029629 | 1.326056 | 0.0108 | 1.315256 | 0.365349 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 128.759921 | 26.622214 | 0.365349 | + | 03/01 08:00 | 0.0 | 17.1 | 16.1 | 1.173726 | 17.7 | 17.7 | 1.0 | 1.1 | 0.0 | 0.0 | 1.361522 | 0.980296 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.980296 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.281183 | 0.0 | 0.029564 | 1.310746 | 0.0108 | 1.299946 | 0.361096 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 126.607364 | 26.483728 | 0.361096 | + | 03/01 09:00 | 0.0 | 16.2 | 15.2 | 4.202296 | 16.8 | 16.8 | 1.0 | 1.1 | 0.0 | 0.0 | 4.874663 | 3.509758 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 3.509758 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.259764 | 0.0 | 0.02941 | 1.289174 | 0.0108 | 1.278374 | 0.355104 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 122.227815 | 26.064345 | 0.355104 | + | 03/01 10:00 | 0.3 | 15.9 | 14.9 | 4.359715 | 16.5 | 16.5 | 1.0 | 1.1 | 0.0 | 0.3564 | 5.057269 | 3.513746 | 0.0 | 0.3564 | 0.0 | 0.0 | 0.0 | 0.3564 | 0.3564 | 0.0 | 0.0 | 3.513746 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3168 | 1.217766 | 0.0396 | 0.028966 | 1.246732 | 0.0108 | 1.235932 | 0.343314 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 118.20352 | 25.684562 | 0.343314 | + | 03/01 11:00 | 2.6 | 16.3 | 15.3 | 5.305753 | 16.9 | 16.9 | 1.0 | 1.1 | 0.0 | 3.0888 | 6.154673 | 3.253813 | 0.0 | 3.0888 | 0.0 | 0.0 | 0.0 | 3.0888 | 3.0888 | 0.0 | 0.0 | 3.253813 | 0.0 | 0.0 | 0.0 | 0.0 | 2.7456 | 1.189827 | 0.3432 | 0.028713 | 1.21854 | 0.0108 | 1.20774 | 0.335483 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 116.867014 | 25.637514 | 0.335483 | + | 03/01 12:00 | 0.7 | 16.3 | 15.3 | 5.376027 | 16.9 | 16.9 | 1.0 | 1.1 | 0.0 | 0.8316 | 6.236191 | 4.131769 | 0.0 | 0.8316 | 0.0 | 0.0 | 0.0 | 0.8316 | 0.8316 | 0.0 | 0.0 | 4.131769 | 0.0 | 0.0 | 0.0 | 0.0 | 0.7392 | 1.16653 | 0.0924 | 0.028522 | 1.195052 | 0.0108 | 1.184252 | 0.328959 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 112.767001 | 25.242307 | 0.328959 | + | 03/01 13:00 | 0.3 | 16.4 | 15.4 | 4.658915 | 17.0 | 17.0 | 1.0 | 1.1 | 0.0 | 0.3564 | 5.404341 | 3.754888 | 0.0 | 0.3564 | 0.0 | 0.0 | 0.0 | 0.3564 | 0.3564 | 0.0 | 0.0 | 3.754888 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3168 | 1.123629 | 0.0396 | 0.028053 | 1.151683 | 0.0108 | 1.140883 | 0.316912 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 108.622493 | 24.836644 | 0.316912 | + | 03/01 14:00 | 0.3 | 16.5 | 15.5 | 7.789594 | 17.1 | 17.1 | 1.0 | 1.1 | 0.0 | 0.3564 | 9.035929 | 6.278083 | 0.0 | 0.3564 | 0.0 | 0.0 | 0.0 | 0.3564 | 0.3564 | 0.0 | 0.0 | 6.278083 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3168 | 1.082391 | 0.0396 | 0.027603 | 1.109994 | 0.0108 | 1.099194 | 0.305332 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 102.276385 | 24.151077 | 0.305332 | + | 03/01 15:00 | 0.0 | 18.4 | 17.4 | 4.851567 | 19.0 | 19.0 | 1.0 | 1.1 | 0.0 | 0.0 | 5.627818 | 4.052029 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.052029 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.017667 | 0.0 | 0.02682 | 1.044487 | 0.0108 | 1.033687 | 0.287135 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 97.656914 | 23.674031 | 0.287135 | + | 03/01 16:00 | 0.0 | 18.3 | 17.3 | 5.30692 | 18.9 | 18.9 | 1.0 | 1.1 | 0.0 | 0.0 | 6.156027 | 4.43234 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.43234 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.971703 | 0.0 | 0.02629 | 0.997992 | 0.0108 | 0.987192 | 0.27422 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 92.745354 | 23.155259 | 0.27422 | + | 03/01 17:00 | 0.0 | 18.1 | 17.1 | 3.286036 | 18.7 | 18.7 | 1.0 | 1.1 | 0.0 | 0.0 | 3.811802 | 2.744497 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.744497 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.922832 | 0.0 | 0.025714 | 0.948545 | 0.0108 | 0.937745 | 0.260485 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 89.382969 | 22.824602 | 0.260485 | + | 03/01 18:00 | 0.0 | 16.7 | 15.7 | 1.506216 | 17.3 | 17.3 | 1.0 | 1.1 | 0.0 | 0.0 | 1.747211 | 1.257992 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.257992 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.889375 | 0.0 | 0.025347 | 0.914722 | 0.0108 | 0.903922 | 0.251089 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 87.375379 | 22.659478 | 0.251089 | + | 03/01 19:00 | 0.0 | 15.2 | 14.2 | 0.274762 | 15.8 | 15.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.318724 | 0.229481 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.229481 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.8694 | 0.0 | 0.025163 | 0.894563 | 0.0108 | 0.883763 | 0.24549 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 86.301996 | 22.608817 | 0.24549 | + | 03/01 20:00 | 0.0 | 13.4 | 12.4 | 0.087565 | 14.0 | 14.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.101575 | 0.073134 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.073134 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.858719 | 0.0 | 0.025107 | 0.883826 | 0.0108 | 0.873026 | 0.242507 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 85.378269 | 22.575584 | 0.242507 | + | 03/01 21:00 | 0.0 | 12.4 | 11.4 | 0.085771 | 13.0 | 13.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.099494 | 0.071636 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.849528 | 0.0 | 0.02507 | 0.874598 | 0.0108 | 0.863798 | 0.239944 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 84.528741 | 22.550514 | 0.239944 | + | 03/01 22:00 | 0.0 | 11.6 | 10.6 | 0.084317 | 12.2 | 12.2 | 1.0 | 1.1 | 0.0 | 0.0 | 0.097808 | 0.070422 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.841075 | 0.0 | 0.025042 | 0.866117 | 0.0108 | 0.855317 | 0.237588 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 83.687666 | 22.525472 | 0.237588 | + | 03/01 23:00 | 0.0 | 11.0 | 10.0 | 0.083215 | 11.6 | 11.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.096529 | 0.069501 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.832706 | 0.0 | 0.025014 | 0.857721 | 0.0108 | 0.846921 | 0.235256 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 82.85496 | 22.500457 | 0.235256 | + | 04/01 00:00 | 0.0 | 10.5 | 9.5 | 0.082289 | 11.1 | 11.1 | 1.0 | 1.1 | 0.0 | 0.0 | 0.095455 | 0.068728 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.824421 | 0.0 | 0.024987 | 0.849407 | 0.0108 | 0.838607 | 0.232946 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 82.030539 | 22.475471 | 0.232946 | + | 04/01 01:00 | 0.0 | 11.7 | 10.7 | 0.0845 | 12.3 | 12.3 | 1.0 | 1.1 | 0.0 | 0.0 | 0.09802 | 0.070574 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.816218 | 0.0 | 0.024959 | 0.841176 | 0.0108 | 0.830376 | 0.23066 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 81.214322 | 22.450512 | 0.23066 | + | 04/01 02:00 | 0.0 | 11.9 | 10.9 | 0.084864 | 12.5 | 12.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.098442 | 0.070878 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.808096 | 0.0 | 0.024931 | 0.833027 | 0.0108 | 0.822227 | 0.228396 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 80.406226 | 22.425581 | 0.228396 | + | 04/01 03:00 | 1.3 | 11.2 | 10.2 | 0.083584 | 11.8 | 11.8 | 1.0 | 1.1 | 0.0 | 1.5444 | 0.096957 | 0.059819 | 0.0 | 1.5444 | 0.0 | 0.0 | 0.0 | 1.5444 | 1.5444 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.3728 | 0.806896 | 0.1716 | 0.024999 | 0.831895 | 0.0108 | 0.821095 | 0.228082 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 80.972129 | 22.572182 | 0.228082 | + | 04/01 04:00 | 0.0 | 11.1 | 10.1 | 0.0834 | 11.7 | 11.7 | 1.0 | 1.1 | 0.0 | 0.0 | 0.096744 | 0.069656 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.805686 | 0.0 | 0.025066 | 0.830752 | 0.0108 | 0.819952 | 0.227765 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 80.166443 | 22.547116 | 0.227765 | + | 04/01 05:00 | 0.0 | 11.9 | 10.9 | 0.084864 | 12.5 | 12.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.098442 | 0.070878 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.797669 | 0.0 | 0.025038 | 0.822708 | 0.0108 | 0.811908 | 0.22553 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 79.368774 | 22.522077 | 0.22553 | + | 04/01 06:00 | 0.0 | 12.2 | 11.2 | 0.310229 | 12.8 | 12.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.359866 | 0.259103 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.789732 | 0.0 | 0.025011 | 0.814743 | 0.0108 | 0.803943 | 0.223318 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 78.579041 | 22.497067 | 0.223318 | + | 04/01 07:00 | 0.7 | 11.8 | 10.8 | 1.391958 | 12.4 | 12.4 | 1.0 | 1.1 | 0.0 | 0.8316 | 1.614671 | 1.069795 | 0.0 | 0.8316 | 0.0 | 0.0 | 0.0 | 0.8316 | 0.8316 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.7392 | 0.785558 | 0.0924 | 0.025034 | 0.810592 | 0.0108 | 0.799792 | 0.222165 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 78.532683 | 22.564432 | 0.222165 | + | 04/01 08:00 | 0.4 | 11.4 | 10.4 | 3.195876 | 12.0 | 12.0 | 1.0 | 1.1 | 0.0 | 0.4752 | 3.707216 | 2.545322 | 0.0 | 0.4752 | 0.0 | 0.0 | 0.0 | 0.4752 | 0.4752 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.4224 | 0.783518 | 0.0528 | 0.025087 | 0.808605 | 0.0108 | 0.797805 | 0.221613 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 78.171565 | 22.592145 | 0.221613 | + | 04/01 09:00 | 0.1 | 11.6 | 10.6 | 5.191651 | 12.2 | 12.2 | 1.0 | 1.1 | 0.0 | 0.1188 | 6.022315 | 4.284859 | 0.0 | 0.1188 | 0.0 | 0.0 | 0.0 | 0.1188 | 0.1188 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.1056 | 0.778346 | 0.0132 | 0.025096 | 0.803442 | 0.0108 | 0.792642 | 0.220178 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 77.498818 | 22.58025 | 0.220178 | + | 04/01 10:00 | 0.4 | 13.0 | 12.0 | 7.155036 | 13.6 | 13.6 | 1.0 | 1.1 | 0.0 | 0.4752 | 8.299842 | 5.698554 | 0.0 | 0.4752 | 0.0 | 0.0 | 0.0 | 0.4752 | 0.4752 | 0.0 | 0.0 | 5.698554 | 0.0 | 0.0 | 0.0 | 0.0 | 0.4224 | 0.773231 | 0.0528 | 0.025105 | 0.798336 | 0.0108 | 0.787536 | 0.21876 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 72.082606 | 21.974772 | 0.21876 | + | 04/01 11:00 | 0.0 | 17.1 | 16.1 | 8.391432 | 17.7 | 17.7 | 1.0 | 1.1 | 0.0 | 0.0 | 9.734061 | 7.008524 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.008524 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.717234 | 0.0 | 0.024403 | 0.741637 | 0.0108 | 0.730837 | 0.20301 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 65.135573 | 21.171645 | 0.20301 | + | 04/01 12:00 | 0.0 | 18.2 | 17.2 | 8.391286 | 18.8 | 18.8 | 1.0 | 1.1 | 0.0 | 0.0 | 9.733892 | 7.008402 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.008402 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.64811 | 0.0 | 0.023511 | 0.671621 | 0.0108 | 0.660821 | 0.183561 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 58.257773 | 20.369422 | 0.183561 | + | 04/01 13:00 | 0.0 | 22.4 | 21.4 | 10.715238 | 23.0 | 23.0 | 1.0 | 1.1 | 0.0 | 0.0 | 12.429676 | 8.949367 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.949367 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.579675 | 0.0 | 0.02262 | 0.602295 | 0.0108 | 0.591495 | 0.164304 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 49.723105 | 19.352428 | 0.164304 | + | 04/01 14:00 | 0.0 | 21.4 | 20.4 | 9.383394 | 22.0 | 22.0 | 1.0 | 1.1 | 0.0 | 0.0 | 10.884737 | 7.837011 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.837011 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.494753 | 0.0 | 0.021491 | 0.516244 | 0.0108 | 0.505444 | 0.140401 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 42.262121 | 18.460158 | 0.140401 | + | 04/01 15:00 | 0.0 | 21.8 | 20.8 | 7.861915 | 22.4 | 22.4 | 1.0 | 1.1 | 0.0 | 0.0 | 9.119821 | 6.566271 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.566271 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.420515 | 0.0 | 0.0205 | 0.441015 | 0.0108 | 0.430215 | 0.119504 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 36.00492 | 17.710073 | 0.119504 | + | 04/01 16:00 | 0.0 | 22.2 | 21.2 | 6.298329 | 22.8 | 22.8 | 1.0 | 1.1 | 0.0 | 0.0 | 7.306062 | 5.260364 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.260364 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.358255 | 0.0 | 0.019667 | 0.377922 | 0.0108 | 0.367122 | 0.101978 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 30.970785 | 17.105921 | 0.101978 | + | 04/01 17:00 | 0.0 | 20.1 | 19.1 | 2.948416 | 20.7 | 20.7 | 1.0 | 1.1 | 0.0 | 0.0 | 3.420163 | 2.462517 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.462517 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.308164 | 0.0 | 0.018996 | 0.32716 | 0.0108 | 0.31636 | 0.087878 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 28.473717 | 16.813312 | 0.087878 | + | 04/01 18:00 | 0.0 | 17.8 | 16.8 | 1.309232 | 18.4 | 18.4 | 1.0 | 1.1 | 0.0 | 0.0 | 1.518709 | 1.093471 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.093471 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.283318 | 0.0 | 0.018671 | 0.301989 | 0.0108 | 0.291189 | 0.080886 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 27.218425 | 16.673144 | 0.080886 | + | 04/01 19:00 | 0.0 | 15.2 | 14.2 | 0.32955 | 15.8 | 15.8 | 1.0 | 1.1 | 0.0 | 0.0 | 0.382278 | 0.27524 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.27524 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.270828 | 0.0 | 0.018515 | 0.289343 | 0.0108 | 0.278543 | 0.077373 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 26.702939 | 16.624046 | 0.077373 | + | 04/01 20:00 | 0.0 | 14.5 | 13.5 | 0.089508 | 15.1 | 15.1 | 1.0 | 1.1 | 0.0 | 0.0 | 0.103829 | 0.074757 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.074757 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.265699 | 0.0 | 0.018461 | 0.28416 | 0.0108 | 0.27336 | 0.075933 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 26.37079 | 16.597279 | 0.075933 | + | 04/01 21:00 | 0.0 | 12.4 | 11.4 | 0.085771 | 13.0 | 13.0 | 1.0 | 1.1 | 0.0 | 0.0 | 0.099494 | 0.071636 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.262394 | 0.0 | 0.018431 | 0.280825 | 0.0108 | 0.270025 | 0.075007 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 26.108396 | 16.578848 | 0.075007 | + | 04/01 22:00 | 0.0 | 11.7 | 10.7 | 0.0845 | 12.3 | 12.3 | 1.0 | 1.1 | 0.0 | 0.0 | 0.09802 | 0.070574 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.259783 | 0.0 | 0.018411 | 0.278194 | 0.0108 | 0.267394 | 0.074276 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 25.848613 | 16.560437 | 0.074276 | + | 04/01 23:00 | 0.0 | 11.9 | 10.9 | 0.084864 | 12.5 | 12.5 | 1.0 | 1.1 | 0.0 | 0.0 | 0.098442 | 0.070878 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.257198 | 0.0 | 0.01839 | 0.275588 | 0.0108 | 0.264788 | 0.073552 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 25.591415 | 16.542047 | 0.073552 | + +There is no indication of an error in the water balance: + +>>> round_(model.check_waterbalance(conditions)) +0.0 + +.. _hland_v3_glacier: + +glacier +_______ + +.. integration-test:: + + >>> zonetype(GLACIER) + >>> parameters.update() + >>> test.reset_inits() + >>> conditions = sequences.conditions + >>> inputs.t.series[:48] = -20.0 + >>> inputs.t.series[48:] = 20.0 + >>> inputs.tn.series = inputs.t.series + >>> test('hland_v3_glacier') + | date | p | t | tn | epn | tmean | tc | fracrain | rfc | sfc | pc | ep | epc | ei | tf | glmelt | melt | refr | in_ | r | ea | dp | el | rs | ri | gr1 | rg1 | gr2 | rg2 | gr3 | rg3 | ro | ra | rt | qt | ic | sp | wc | sm | suz | sg1 | sg2 | sg3 | outlet | + --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | 01/01 00:00 | 0.0 | -20.0 | -20.0 | 0.100707 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 0.106749 | 0.07686 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.487706 | 0.0 | 0.099502 | 0.0 | 0.011105 | 0.598312 | 0.0108 | 0.587512 | 0.163198 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.512294 | 9.900498 | 9.988895 | 0.163198 | + | 01/01 01:00 | 0.0 | -20.0 | -20.0 | 0.097801 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 0.103669 | 0.074642 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.46392 | 0.0 | 0.098512 | 0.0 | 0.011093 | 0.573524 | 0.0108 | 0.562724 | 0.156312 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 9.048374 | 9.801987 | 9.977802 | 0.156312 | + | 01/01 02:00 | 0.0 | -20.0 | -20.0 | 0.096981 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 0.1028 | 0.074016 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.441294 | 0.0 | 0.097531 | 0.0 | 0.01108 | 0.549906 | 0.0108 | 0.539106 | 0.149752 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.60708 | 9.704455 | 9.966722 | 0.149752 | + | 01/01 03:00 | 0.0 | -20.0 | -20.0 | 0.09599 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 0.101749 | 0.07326 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.419772 | 0.0 | 0.096561 | 0.0 | 0.011068 | 0.527401 | 0.0108 | 0.516601 | 0.1435 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 8.187308 | 9.607894 | 9.955654 | 0.1435 | + | 01/01 04:00 | 0.0 | -20.0 | -20.0 | 0.096981 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 0.1028 | 0.074016 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.3993 | 0.0 | 0.0956 | 0.0 | 0.011056 | 0.505956 | 0.0108 | 0.495156 | 0.137543 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.788008 | 9.512294 | 9.944598 | 0.137543 | + | 01/01 05:00 | 0.0 | -20.0 | -20.0 | 0.102761 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 0.108927 | 0.078427 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.379826 | 0.0 | 0.094649 | 0.0 | 0.011043 | 0.485518 | 0.0108 | 0.474718 | 0.131866 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.408182 | 9.417645 | 9.933555 | 0.131866 | + | 01/01 06:00 | 0.0 | -20.0 | -20.0 | 0.291908 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 0.309422 | 0.222784 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.361301 | 0.0 | 0.093707 | 0.0 | 0.011031 | 0.46604 | 0.0108 | 0.45524 | 0.126455 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 7.046881 | 9.323938 | 9.922524 | 0.126455 | + | 01/01 07:00 | 0.0 | -20.0 | -20.0 | 1.932875 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 2.048847 | 1.47517 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.34368 | 0.0 | 0.092775 | 0.0 | 0.011019 | 0.447474 | 0.0108 | 0.436674 | 0.121298 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.7032 | 9.231163 | 9.911505 | 0.121298 | + | 01/01 08:00 | 0.0 | -20.0 | -20.0 | 4.369536 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 4.631708 | 3.33483 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.326919 | 0.0 | 0.091852 | 0.0 | 0.011007 | 0.429777 | 0.0108 | 0.418977 | 0.116383 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.376282 | 9.139312 | 9.900498 | 0.116383 | + | 01/01 09:00 | 0.0 | -20.0 | -20.0 | 7.317556 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 7.756609 | 5.584759 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.310975 | 0.0 | 0.090938 | 0.0 | 0.010994 | 0.412907 | 0.0108 | 0.402107 | 0.111696 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 6.065307 | 9.048374 | 9.889504 | 0.111696 | + | 01/01 10:00 | 0.0 | -20.0 | -20.0 | 8.264362 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 8.760224 | 6.307361 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.295808 | 0.0 | 0.090033 | 0.0 | 0.010982 | 0.396824 | 0.0108 | 0.386024 | 0.107229 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.769498 | 8.958341 | 9.878522 | 0.107229 | + | 01/01 11:00 | 0.0 | -20.0 | -20.0 | 9.369867 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 9.932059 | 7.151082 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.281382 | 0.0 | 0.089137 | 0.0 | 0.01097 | 0.381489 | 0.0108 | 0.370689 | 0.102969 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.488116 | 8.869204 | 9.867552 | 0.102969 | + | 01/01 12:00 | 0.0 | -20.0 | -20.0 | 5.126178 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 5.433749 | 3.912299 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.267659 | 0.0 | 0.08825 | 0.0 | 0.010958 | 0.366867 | 0.0108 | 0.356067 | 0.098907 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 5.220458 | 8.780954 | 9.856594 | 0.098907 | + | 01/01 13:00 | 0.0 | -20.0 | -20.0 | 6.62503 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 7.022532 | 5.056223 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.254605 | 0.0 | 0.087372 | 0.0 | 0.010946 | 0.352922 | 0.0108 | 0.342122 | 0.095034 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.965853 | 8.693582 | 9.845648 | 0.095034 | + | 01/01 14:00 | 0.0 | -20.0 | -20.0 | 7.397619 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 7.841476 | 5.645863 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.242188 | 0.0 | 0.086503 | 0.0 | 0.010934 | 0.339624 | 0.0108 | 0.328824 | 0.09134 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 4.723666 | 8.60708 | 9.834715 | 0.09134 | + | 01/01 15:00 | 0.2 | -20.0 | -20.0 | 2.39151 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.2808 | 2.535001 | 1.774662 | 0.0 | 0.2808 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.230376 | 0.0 | 0.085642 | 0.0 | 0.010921 | 0.326939 | 0.0108 | 0.316139 | 0.087816 | 0.0 | 0.2808 | 0.0 | 0.0 | 0.0 | 4.49329 | 8.521438 | 9.823793 | 0.087816 | + | 01/01 16:00 | 0.0 | -20.0 | -20.0 | 1.829834 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 1.939624 | 1.396529 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.21914 | 0.0 | 0.08479 | 0.0 | 0.010909 | 0.314839 | 0.0108 | 0.304039 | 0.084455 | 0.0 | 0.2808 | 0.0 | 0.0 | 0.0 | 4.274149 | 8.436648 | 9.812884 | 0.084455 | + | 01/01 17:00 | 0.0 | -20.0 | -20.0 | 1.136569 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 1.204763 | 0.867429 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.208453 | 0.0 | 0.083946 | 0.0 | 0.010897 | 0.303296 | 0.0108 | 0.292496 | 0.081249 | 0.0 | 0.2808 | 0.0 | 0.0 | 0.0 | 4.065697 | 8.352702 | 9.801987 | 0.081249 | + | 01/01 18:00 | 1.3 | -20.0 | -20.0 | 0.750986 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 1.8252 | 0.796045 | 0.477532 | 0.0 | 1.8252 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.198286 | 0.0 | 0.083111 | 0.0 | 0.010885 | 0.292282 | 0.0108 | 0.281482 | 0.078189 | 0.0 | 2.106 | 0.0 | 0.0 | 0.0 | 3.86741 | 8.269591 | 9.791102 | 0.078189 | + | 01/01 19:00 | 5.6 | -20.0 | -20.0 | 0.223895 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 7.8624 | 0.237329 | 0.077844 | 0.0 | 7.8624 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.188616 | 0.0 | 0.082284 | 0.0 | 0.010873 | 0.281773 | 0.0108 | 0.270973 | 0.07527 | 0.0 | 9.9684 | 0.0 | 0.0 | 0.0 | 3.678794 | 8.187308 | 9.780229 | 0.07527 | + | 01/01 20:00 | 2.9 | -20.0 | -20.0 | 0.099425 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 4.0716 | 0.10539 | 0.050502 | 0.0 | 4.0716 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.179417 | 0.0 | 0.081465 | 0.0 | 0.010861 | 0.271743 | 0.0108 | 0.260943 | 0.072484 | 0.0 | 14.04 | 0.0 | 0.0 | 0.0 | 3.499377 | 8.105842 | 9.769368 | 0.072484 | + | 01/01 21:00 | 4.9 | -20.0 | -20.0 | 0.098454 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 6.8796 | 0.104361 | 0.037765 | 0.0 | 6.8796 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.170667 | 0.0 | 0.080654 | 0.0 | 0.010849 | 0.26217 | 0.0108 | 0.25137 | 0.069825 | 0.0 | 20.9196 | 0.0 | 0.0 | 0.0 | 3.328711 | 8.025188 | 9.758519 | 0.069825 | + | 01/01 22:00 | 10.6 | -20.0 | -20.0 | 0.098128 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 14.8824 | 0.104016 | 0.016908 | 0.0 | 14.8824 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.162343 | 0.0 | 0.079852 | 0.0 | 0.010837 | 0.253032 | 0.0108 | 0.242232 | 0.067287 | 0.0 | 35.802 | 0.0 | 0.0 | 0.0 | 3.166368 | 7.945336 | 9.747682 | 0.067287 | + | 01/01 23:00 | 0.1 | -20.0 | -20.0 | 0.097474 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.1404 | 0.103322 | 0.073355 | 0.0 | 0.1404 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.154426 | 0.0 | 0.079057 | 0.0 | 0.010825 | 0.244308 | 0.0108 | 0.233508 | 0.064863 | 0.0 | 35.9424 | 0.0 | 0.0 | 0.0 | 3.011942 | 7.866279 | 9.736857 | 0.064863 | + | 02/01 00:00 | 0.7 | -20.0 | -20.0 | 0.097474 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.9828 | 0.103322 | 0.067429 | 0.0 | 0.9828 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.146894 | 0.0 | 0.078271 | 0.0 | 0.010813 | 0.235978 | 0.0108 | 0.225178 | 0.062549 | 0.0 | 36.9252 | 0.0 | 0.0 | 0.0 | 2.865048 | 7.788008 | 9.726045 | 0.062549 | + | 02/01 01:00 | 3.0 | -20.0 | -20.0 | 0.097474 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 4.212 | 0.103322 | 0.048821 | 0.0 | 4.212 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.13973 | 0.0 | 0.077492 | 0.0 | 0.010801 | 0.228023 | 0.0108 | 0.217223 | 0.06034 | 0.0 | 41.1372 | 0.0 | 0.0 | 0.0 | 2.725318 | 7.710516 | 9.715244 | 0.06034 | + | 02/01 02:00 | 2.1 | -20.0 | -20.0 | 0.096981 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 2.9484 | 0.1028 | 0.055116 | 0.0 | 2.9484 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.132915 | 0.0 | 0.076721 | 0.0 | 0.010789 | 0.220425 | 0.0108 | 0.209625 | 0.058229 | 0.0 | 44.0856 | 0.0 | 0.0 | 0.0 | 2.592403 | 7.633795 | 9.704455 | 0.058229 | + | 02/01 03:00 | 10.4 | -20.0 | -20.0 | 0.096652 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 14.6016 | 0.102451 | 0.017128 | 0.0 | 14.6016 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.126433 | 0.0 | 0.075958 | 0.0 | 0.010777 | 0.213167 | 0.0108 | 0.202367 | 0.056213 | 0.0 | 58.6872 | 0.0 | 0.0 | 0.0 | 2.46597 | 7.557837 | 9.693679 | 0.056213 | + | 02/01 04:00 | 3.5 | -20.0 | -20.0 | 0.096321 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 4.914 | 0.1021 | 0.044973 | 0.0 | 4.914 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.120267 | 0.0 | 0.075202 | 0.0 | 0.010765 | 0.206233 | 0.0108 | 0.195433 | 0.054287 | 0.0 | 63.6012 | 0.0 | 0.0 | 0.0 | 2.345703 | 7.482636 | 9.682914 | 0.054287 | + | 02/01 05:00 | 3.4 | -20.0 | -20.0 | 0.09599 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 4.7736 | 0.101749 | 0.045452 | 0.0 | 4.7736 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.114401 | 0.0 | 0.074453 | 0.0 | 0.010753 | 0.199608 | 0.0108 | 0.188808 | 0.052447 | 0.0 | 68.3748 | 0.0 | 0.0 | 0.0 | 2.231302 | 7.408182 | 9.672161 | 0.052447 | + | 02/01 06:00 | 1.2 | -20.0 | -20.0 | 0.187298 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 1.6848 | 0.198536 | 0.120782 | 0.0 | 1.6848 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.108822 | 0.0 | 0.073713 | 0.0 | 0.010741 | 0.193275 | 0.0108 | 0.182475 | 0.050688 | 0.0 | 70.0596 | 0.0 | 0.0 | 0.0 | 2.12248 | 7.33447 | 9.66142 | 0.050688 | + | 02/01 07:00 | 0.1 | -20.0 | -20.0 | 1.264612 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.1404 | 1.340489 | 0.951696 | 0.0 | 0.1404 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.103515 | 0.0 | 0.072979 | 0.0 | 0.010729 | 0.187223 | 0.0108 | 0.176423 | 0.049006 | 0.0 | 70.2 | 0.0 | 0.0 | 0.0 | 2.018965 | 7.26149 | 9.650691 | 0.049006 | + | 02/01 08:00 | 0.0 | -20.0 | -20.0 | 3.045538 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 3.22827 | 2.324355 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.098466 | 0.0 | 0.072253 | 0.0 | 0.010717 | 0.181436 | 0.0108 | 0.170636 | 0.047399 | 0.0 | 70.2 | 0.0 | 0.0 | 0.0 | 1.920499 | 7.189237 | 9.639974 | 0.047399 | + | 02/01 09:00 | 0.0 | -20.0 | -20.0 | 1.930758 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.0 | 2.046603 | 1.473555 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.093664 | 0.0 | 0.071534 | 0.0 | 0.010705 | 0.175903 | 0.0108 | 0.165103 | 0.045862 | 0.0 | 70.2 | 0.0 | 0.0 | 0.0 | 1.826835 | 7.117703 | 9.629269 | 0.045862 | + | 02/01 10:00 | 0.4 | -20.0 | -20.0 | 2.461001 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.5616 | 2.608661 | 1.775661 | 0.0 | 0.5616 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.089096 | 0.0 | 0.070822 | 0.0 | 0.010693 | 0.170611 | 0.0108 | 0.159811 | 0.044392 | 0.0 | 70.7616 | 0.0 | 0.0 | 0.0 | 1.737739 | 7.046881 | 9.618576 | 0.044392 | + | 02/01 11:00 | 0.1 | -20.0 | -20.0 | 6.215945 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 0.1404 | 6.588902 | 4.677869 | 0.0 | 0.1404 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.084751 | 0.0 | 0.070118 | 0.0 | 0.010681 | 0.16555 | 0.0108 | 0.15475 | 0.042986 | 0.0 | 70.902 | 0.0 | 0.0 | 0.0 | 1.652989 | 6.976763 | 9.607894 | 0.042986 | + | 02/01 12:00 | 3.6 | -20.0 | -20.0 | 3.374783 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 5.0544 | 3.57727 | 1.553726 | 0.0 | 5.0544 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.080617 | 0.0 | 0.06942 | 0.0 | 0.01067 | 0.160707 | 0.0108 | 0.149907 | 0.041641 | 0.0 | 75.9564 | 0.0 | 0.0 | 0.0 | 1.572372 | 6.907343 | 9.597225 | 0.041641 | + | 02/01 13:00 | 5.9 | -20.0 | -20.0 | 8.821555 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 8.2836 | 9.350848 | 2.940569 | 0.0 | 8.2836 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.076685 | 0.0 | 0.068729 | 0.0 | 0.010658 | 0.156072 | 0.0108 | 0.145272 | 0.040353 | 0.0 | 84.24 | 0.0 | 0.0 | 0.0 | 1.495686 | 6.838614 | 9.586567 | 0.040353 | + | 02/01 14:00 | 1.1 | -20.0 | -20.0 | 4.046025 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 1.5444 | 4.288787 | 2.646028 | 0.0 | 1.5444 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.072945 | 0.0 | 0.068045 | 0.0 | 0.010646 | 0.151637 | 0.0108 | 0.140837 | 0.039121 | 0.0 | 85.7844 | 0.0 | 0.0 | 0.0 | 1.422741 | 6.770569 | 9.575921 | 0.039121 | + | 02/01 15:00 | 20.7 | -20.0 | -20.0 | 2.110757 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 29.0628 | 2.237402 | 0.088084 | 0.0 | 29.0628 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.069388 | 0.0 | 0.067368 | 0.0 | 0.010634 | 0.14739 | 0.0108 | 0.13659 | 0.037942 | 0.0 | 114.8472 | 0.0 | 0.0 | 0.0 | 1.353353 | 6.7032 | 9.565287 | 0.037942 | + | 02/01 16:00 | 37.9 | -20.0 | -20.0 | 2.239257 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 53.2116 | 2.373612 | 0.008352 | 0.0 | 53.2116 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.066004 | 0.0 | 0.066698 | 0.0 | 0.010622 | 0.143324 | 0.0108 | 0.132524 | 0.036812 | 0.0 | 168.0588 | 0.0 | 0.0 | 0.0 | 1.287349 | 6.636503 | 9.554665 | 0.036812 | + | 02/01 17:00 | 8.2 | -20.0 | -20.0 | 2.877848 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 11.5128 | 3.050519 | 0.694563 | 0.0 | 11.5128 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.062785 | 0.0 | 0.066034 | 0.0 | 0.01061 | 0.139429 | 0.0108 | 0.128629 | 0.03573 | 0.0 | 179.5716 | 0.0 | 0.0 | 0.0 | 1.224564 | 6.570468 | 9.544055 | 0.03573 | + | 02/01 18:00 | 3.6 | -20.0 | -20.0 | 1.591452 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 5.0544 | 1.686939 | 0.732693 | 0.0 | 5.0544 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.059723 | 0.0 | 0.065377 | 0.0 | 0.010599 | 0.135699 | 0.0108 | 0.124899 | 0.034694 | 0.0 | 184.626 | 0.0 | 0.0 | 0.0 | 1.164842 | 6.505091 | 9.533456 | 0.034694 | + | 02/01 19:00 | 7.5 | -20.0 | -20.0 | 0.291604 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 10.53 | 0.3091 | 0.077646 | 0.0 | 10.53 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.05681 | 0.0 | 0.064727 | 0.0 | 0.010587 | 0.132124 | 0.0108 | 0.121324 | 0.033701 | 0.0 | 195.156 | 0.0 | 0.0 | 0.0 | 1.108032 | 6.440364 | 9.522869 | 0.033701 | + | 02/01 20:00 | 18.5 | -20.0 | -20.0 | 0.092622 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 25.974 | 0.098179 | 0.005264 | 0.0 | 25.974 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.054039 | 0.0 | 0.064083 | 0.0 | 0.010575 | 0.128697 | 0.0108 | 0.117897 | 0.032749 | 0.0 | 221.13 | 0.0 | 0.0 | 0.0 | 1.053992 | 6.376282 | 9.512294 | 0.032749 | + | 02/01 21:00 | 15.4 | -20.0 | -20.0 | 0.092451 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 21.6216 | 0.097998 | 0.00812 | 0.0 | 21.6216 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.051404 | 0.0 | 0.063445 | 0.0 | 0.010563 | 0.125412 | 0.0108 | 0.114612 | 0.031837 | 0.0 | 242.7516 | 0.0 | 0.0 | 0.0 | 1.002588 | 6.312836 | 9.501731 | 0.031837 | + | 02/01 22:00 | 6.3 | -20.0 | -20.0 | 0.091248 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 8.8452 | 0.096723 | 0.028755 | 0.0 | 8.8452 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.048897 | 0.0 | 0.062814 | 0.0 | 0.010552 | 0.122262 | 0.0108 | 0.111462 | 0.030962 | 0.0 | 251.5968 | 0.0 | 0.0 | 0.0 | 0.953692 | 6.250023 | 9.491179 | 0.030962 | + | 02/01 23:00 | 1.9 | -20.0 | -20.0 | 0.089683 | -19.4 | -19.4 | 0.0 | 0.0 | 1.3 | 2.6676 | 0.095064 | 0.05242 | 0.0 | 2.6676 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.046512 | 0.0 | 0.062189 | 0.0 | 0.01054 | 0.119241 | 0.0108 | 0.108441 | 0.030122 | 0.0 | 254.2644 | 0.0 | 0.0 | 0.0 | 0.90718 | 6.187834 | 9.480639 | 0.030122 | + | 03/01 00:00 | 4.9 | 20.0 | 20.0 | 0.089858 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 5.8212 | 0.095249 | 0.038316 | 0.0 | 5.8212 | 0.0 | 9.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.044244 | 0.0 | 0.06157 | 0.0 | 0.010528 | 0.116342 | 0.0108 | 0.105542 | 0.029317 | 0.0 | 244.4644 | 15.6212 | 0.0 | 0.0 | 0.862936 | 6.126264 | 9.470111 | 0.029317 | + | 03/01 01:00 | 2.7 | 20.0 | 20.0 | 0.089683 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 3.2076 | 0.095064 | 0.049664 | 0.0 | 3.2076 | 0.0 | 9.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.042086 | 0.0 | 0.060957 | 0.0 | 0.010517 | 0.11356 | 0.0108 | 0.10276 | 0.028544 | 0.0 | 234.6644 | 28.6288 | 0.0 | 0.0 | 0.82085 | 6.065307 | 9.459595 | 0.028544 | + | 03/01 02:00 | 0.5 | 20.0 | 20.0 | 0.088805 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.594 | 0.094133 | 0.063867 | 0.0 | 0.594 | 0.0 | 9.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.040033 | 0.0 | 0.060351 | 0.0 | 0.010505 | 0.110889 | 0.0108 | 0.100089 | 0.027802 | 0.0 | 224.8644 | 39.0228 | 0.0 | 0.0 | 0.780817 | 6.004956 | 9.44909 | 0.027802 | + | 03/01 03:00 | 0.2 | 20.0 | 20.0 | 0.089157 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.2376 | 0.094506 | 0.066447 | 0.0 | 0.2376 | 0.0 | 9.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.038081 | 0.0 | 0.05975 | 0.0 | 0.010493 | 0.108324 | 0.0108 | 0.097524 | 0.02709 | 0.0 | 215.0644 | 49.0604 | 0.0 | 0.0 | 0.742736 | 5.945205 | 9.438597 | 0.02709 | + | 03/01 04:00 | 0.5 | 20.0 | 20.0 | 0.090207 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.594 | 0.095619 | 0.064876 | 0.0 | 0.594 | 0.0 | 9.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.036224 | 0.0 | 0.059156 | 0.0 | 0.010482 | 0.105861 | 0.0108 | 0.095061 | 0.026406 | 0.0 | 205.2644 | 59.4544 | 0.0 | 0.0 | 0.706512 | 5.88605 | 9.428115 | 0.026406 | + | 03/01 05:00 | 2.4 | 20.0 | 20.0 | 0.091593 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 2.8512 | 0.097089 | 0.052562 | 0.0 | 2.8512 | 0.0 | 9.8 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.034457 | 0.0 | 0.058567 | 0.0 | 0.01047 | 0.103494 | 0.0108 | 0.092694 | 0.025748 | 0.0 | 195.4644 | 72.1056 | 0.0 | 0.0 | 0.672055 | 5.827483 | 9.417645 | 0.025748 | + | 03/01 06:00 | 0.4 | 20.0 | 20.0 | 0.154861 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.4752 | 0.164153 | 0.112705 | 0.0 | 0.4752 | 0.0 | 9.8 | 0.0 | 8.11504 | 8.11504 | 0.0 | 2.0 | 0.0 | 0.0 | 0.581923 | 2.0 | 0.081953 | 0.0 | 0.057984 | 0.0 | 0.010458 | 0.732319 | 0.0108 | 0.721519 | 0.200422 | 0.0 | 185.6644 | 74.26576 | 0.0 | 5.533117 | 2.590102 | 5.769498 | 9.407187 | 0.200422 | + | 03/01 07:00 | 0.2 | 20.0 | 20.0 | 0.470369 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.2376 | 0.498591 | 0.350557 | 0.0 | 0.2376 | 0.0 | 9.8 | 0.0 | 13.9576 | 13.9576 | 0.0 | 2.0 | 0.0 | 0.0 | 1.664462 | 2.0 | 0.175498 | 0.0 | 0.057407 | 0.0 | 0.010447 | 1.907814 | 0.0108 | 1.897014 | 0.526948 | 0.0 | 175.8644 | 70.34576 | 0.0 | 15.826255 | 4.414604 | 5.712091 | 9.39674 | 0.526948 | + | 03/01 08:00 | 0.0 | 20.0 | 20.0 | 1.173726 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 1.24415 | 0.895788 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 2.96922 | 2.621373 | 2.0 | 0.26448 | 0.0 | 0.056836 | 0.0 | 0.010435 | 5.922344 | 0.0108 | 5.911544 | 1.642096 | 0.0 | 166.0644 | 66.42576 | 0.0 | 21.955662 | 6.150124 | 5.655254 | 9.386305 | 1.642096 | + | 03/01 09:00 | 0.0 | 20.0 | 20.0 | 4.202296 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 4.454434 | 3.207192 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 5.380954 | 3.204663 | 2.0 | 0.349122 | 0.0 | 0.056271 | 0.0 | 0.010423 | 9.001433 | 0.0108 | 8.990633 | 2.497398 | 0.0 | 156.2644 | 62.50576 | 0.0 | 25.090046 | 7.801002 | 5.598984 | 9.375882 | 2.497398 | + | 03/01 10:00 | 0.3 | 20.0 | 20.0 | 4.359715 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.3564 | 4.621298 | 3.210837 | 0.0 | 0.3564 | 0.0 | 9.8 | 0.0 | 14.0764 | 14.0764 | 0.0 | 2.0 | 0.0 | 6.75447 | 3.536855 | 2.0 | 0.429636 | 0.0 | 0.055711 | 0.0 | 0.010412 | 10.787084 | 0.0108 | 10.776284 | 2.993412 | 0.0 | 146.4644 | 58.58576 | 0.0 | 26.875121 | 9.371366 | 5.543273 | 9.36547 | 2.993412 | + | 03/01 11:00 | 2.6 | 20.0 | 20.0 | 5.305753 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 3.0888 | 5.624098 | 2.973312 | 0.0 | 3.0888 | 0.0 | 9.8 | 0.0 | 16.8088 | 16.8088 | 0.0 | 2.0 | 0.0 | 8.531958 | 3.96675 | 2.0 | 0.506224 | 0.0 | 0.055156 | 0.0 | 0.0104 | 13.070488 | 0.0108 | 13.059688 | 3.627691 | 0.0 | 136.6644 | 54.66576 | 0.0 | 29.185213 | 10.865142 | 5.488116 | 9.35507 | 3.627691 | + | 03/01 12:00 | 0.7 | 20.0 | 20.0 | 5.376027 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.8316 | 5.698589 | 3.775582 | 0.0 | 0.8316 | 0.0 | 9.8 | 0.0 | 14.5516 | 14.5516 | 0.0 | 2.0 | 0.0 | 8.55277 | 3.971783 | 1.956743 | 0.578013 | 0.038451 | 0.054799 | 0.004806 | 0.010391 | 13.167756 | 0.0108 | 13.156956 | 3.65471 | 0.0 | 126.8644 | 50.74576 | 0.0 | 29.212261 | 12.243872 | 5.471768 | 9.349485 | 3.65471 | + | 03/01 13:00 | 0.3 | 20.0 | 20.0 | 4.658915 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.3564 | 4.93845 | 3.431191 | 0.0 | 0.3564 | 0.0 | 9.8 | 0.0 | 14.0764 | 14.0764 | 0.0 | 2.0 | 0.0 | 8.376435 | 3.929136 | 1.887806 | 0.643559 | 0.099728 | 0.054942 | 0.012466 | 0.010389 | 13.014461 | 0.0108 | 13.003661 | 3.612128 | 0.0 | 117.0644 | 46.82576 | 0.0 | 28.98309 | 13.48812 | 5.516553 | 9.351561 | 3.612128 | + | 03/01 14:00 | 0.3 | 20.0 | 20.0 | 7.789594 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.3564 | 8.25697 | 5.736869 | 0.0 | 0.3564 | 0.0 | 9.8 | 0.0 | 14.0764 | 14.0764 | 0.0 | 2.0 | 0.0 | 8.286264 | 3.907327 | 1.825594 | 0.702712 | 0.155028 | 0.055663 | 0.019378 | 0.010396 | 12.962361 | 0.0108 | 12.951561 | 3.597656 | 0.0 | 107.2644 | 42.90576 | 0.0 | 28.865899 | 14.611002 | 5.615918 | 9.360544 | 3.597656 | + | 03/01 15:00 | 0.0 | 20.0 | 20.0 | 4.851567 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 5.142661 | 3.702716 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 8.09992 | 3.862259 | 1.76945 | 0.756095 | 0.204933 | 0.056901 | 0.025617 | 0.010409 | 12.785584 | 0.0108 | 12.774784 | 3.548551 | 0.0 | 97.4644 | 38.98576 | 0.0 | 28.62372 | 15.624357 | 5.763951 | 9.375752 | 3.548551 | + | 03/01 16:00 | 0.0 | 20.0 | 20.0 | 5.30692 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 5.625335 | 4.050241 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 8.00463 | 3.839213 | 1.718782 | 0.804271 | 0.249971 | 0.058598 | 0.031246 | 0.010429 | 12.717141 | 0.0108 | 12.706341 | 3.529539 | 0.0 | 87.6644 | 35.06576 | 0.0 | 28.499877 | 16.538868 | 5.955324 | 9.396569 | 3.529539 | + | 03/01 17:00 | 0.0 | 20.0 | 20.0 | 3.286036 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 3.483198 | 2.507903 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.955902 | 3.827427 | 1.673057 | 0.847748 | 0.290616 | 0.060705 | 0.036327 | 0.010455 | 12.702237 | 0.0108 | 12.691437 | 3.525399 | 0.0 | 77.8644 | 31.14576 | 0.0 | 28.436548 | 17.364176 | 6.185236 | 9.422441 | 3.525399 | + | 03/01 18:00 | 0.0 | 20.0 | 20.0 | 1.506216 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 1.596589 | 1.149544 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.930984 | 3.821401 | 1.631791 | 0.886984 | 0.327297 | 0.063175 | 0.040912 | 0.010486 | 12.71303 | 0.0108 | 12.70223 | 3.528397 | 0.0 | 68.0644 | 27.22576 | 0.0 | 28.404164 | 18.108983 | 6.449357 | 9.452867 | 3.528397 | + | 03/01 19:00 | 0.0 | 20.0 | 20.0 | 0.274762 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.291248 | 0.209698 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.918241 | 3.818319 | 1.594551 | 0.922393 | 0.360399 | 0.065968 | 0.04505 | 0.010522 | 12.735444 | 0.0108 | 12.724644 | 3.534623 | 0.0 | 58.2644 | 23.30576 | 0.0 | 28.387603 | 18.781141 | 6.743788 | 9.487394 | 3.534623 | + | 03/01 20:00 | 0.0 | 20.0 | 20.0 | 0.087565 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.092819 | 0.06683 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.911725 | 3.816743 | 1.560943 | 0.954348 | 0.390273 | 0.069047 | 0.048784 | 0.010563 | 12.762426 | 0.0108 | 12.751626 | 3.542118 | 0.0 | 48.4644 | 19.38576 | 0.0 | 28.379135 | 19.387736 | 7.065015 | 9.525616 | 3.542118 | + | 03/01 21:00 | 0.0 | 20.0 | 20.0 | 0.085771 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.090917 | 0.06546 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.908393 | 3.815937 | 1.530613 | 0.983186 | 0.417233 | 0.072377 | 0.052154 | 0.010607 | 12.790501 | 0.0108 | 12.779701 | 3.549917 | 0.0 | 38.6644 | 15.46576 | 0.0 | 28.374804 | 19.935162 | 7.40987 | 9.567163 | 3.549917 | + | 03/01 22:00 | 0.0 | 20.0 | 20.0 | 0.084317 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.089376 | 0.064351 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.906689 | 3.815525 | 1.503242 | 1.009212 | 0.441563 | 0.07593 | 0.055195 | 0.010655 | 12.818011 | 0.0108 | 12.807211 | 3.557559 | 0.0 | 28.8644 | 11.54576 | 0.0 | 28.37259 | 20.429192 | 7.775503 | 9.611703 | 3.557559 | + | 03/01 23:00 | 0.0 | 20.0 | 20.0 | 0.083215 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.088208 | 0.06351 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.905818 | 3.815314 | 1.47854 | 1.032699 | 0.46352 | 0.079677 | 0.05794 | 0.010706 | 12.844214 | 0.0108 | 12.833414 | 3.564837 | 0.0 | 19.0644 | 7.62576 | 0.0 | 28.371457 | 20.875034 | 8.159345 | 9.658937 | 3.564837 | + | 04/01 00:00 | 0.0 | 20.0 | 20.0 | 0.082289 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.087226 | 0.062803 | 0.0 | 0.0 | 0.0 | 9.8 | 0.0 | 13.72 | 13.72 | 0.0 | 2.0 | 0.0 | 7.905372 | 3.815207 | 1.456248 | 1.053894 | 0.483335 | 0.083595 | 0.060417 | 0.01076 | 12.868829 | 0.0108 | 12.858029 | 3.571675 | 0.0 | 9.2644 | 3.70576 | 0.0 | 28.370878 | 21.277388 | 8.559084 | 9.708594 | 3.571675 | + | 04/01 01:00 | 0.0 | 20.0 | 20.0 | 0.0845 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.08957 | 0.06449 | 0.0 | 0.0 | 19.6 | 9.2644 | 0.0 | 32.57016 | 32.57016 | 0.0 | 2.0 | 0.0 | 15.322105 | 5.608981 | 1.436131 | 1.073023 | 0.501217 | 0.087662 | 0.062652 | 0.010816 | 22.102587 | 0.0108 | 22.091787 | 6.136607 | 0.0 | 0.0 | 0.0 | 0.0 | 38.009952 | 21.640496 | 8.97264 | 9.76043 | 6.136607 | + | 04/01 02:00 | 0.0 | 20.0 | 20.0 | 0.084864 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.089956 | 0.064768 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 14.011424 | 5.291987 | 1.417975 | 1.090285 | 0.517355 | 0.091857 | 0.064669 | 0.010875 | 20.496429 | 0.0108 | 20.485629 | 5.690452 | 0.0 | 0.0 | 0.0 | 0.0 | 36.306541 | 21.968186 | 9.398138 | 9.814225 | 5.690452 | + | 04/01 03:00 | 1.3 | 20.0 | 20.0 | 0.083584 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 1.5444 | 0.088599 | 0.054662 | 0.0 | 1.5444 | 19.6 | 0.0 | 0.0 | 21.1444 | 21.1444 | 0.0 | 2.0 | 0.0 | 13.948858 | 5.276855 | 1.401591 | 1.105864 | 0.531919 | 0.096164 | 0.06649 | 0.010936 | 20.438677 | 0.0108 | 20.427877 | 5.67441 | 0.0 | 0.0 | 0.0 | 0.0 | 36.225228 | 22.263913 | 9.833893 | 9.869779 | 5.67441 | + | 04/01 04:00 | 0.0 | 20.0 | 20.0 | 0.0834 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.088404 | 0.063651 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 13.30919 | 5.122148 | 1.386804 | 1.119923 | 0.545063 | 0.100565 | 0.068133 | 0.010998 | 19.662824 | 0.0108 | 19.652024 | 5.458896 | 0.0 | 0.0 | 0.0 | 0.0 | 35.39389 | 22.530794 | 10.278391 | 9.926914 | 5.458896 | + | 04/01 05:00 | 0.0 | 20.0 | 20.0 | 0.084864 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.089956 | 0.064768 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.982084 | 5.043035 | 1.37346 | 1.132611 | 0.556924 | 0.105047 | 0.069616 | 0.011062 | 19.27384 | 0.0108 | 19.26304 | 5.350845 | 0.0 | 0.0 | 0.0 | 0.0 | 34.968771 | 22.771643 | 10.730268 | 9.985467 | 5.350845 | + | 04/01 06:00 | 0.0 | 20.0 | 20.0 | 0.310229 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.328843 | 0.236767 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.814813 | 5.00258 | 1.361418 | 1.144061 | 0.567629 | 0.109597 | 0.070954 | 0.011128 | 19.082179 | 0.0108 | 19.071379 | 5.297605 | 0.0 | 0.0 | 0.0 | 0.0 | 34.751378 | 22.988999 | 11.1883 | 10.045292 | 5.297605 | + | 04/01 07:00 | 0.7 | 20.0 | 20.0 | 1.391958 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.8316 | 1.475475 | 0.977572 | 0.0 | 0.8316 | 19.6 | 0.0 | 0.0 | 20.4316 | 20.4316 | 0.0 | 2.0 | 0.0 | 13.056484 | 5.061029 | 1.35055 | 1.154395 | 0.577289 | 0.114202 | 0.072161 | 0.011195 | 19.397306 | 0.0108 | 19.386506 | 5.385141 | 0.0 | 0.0 | 0.0 | 0.0 | 35.065464 | 23.185155 | 11.651386 | 10.106258 | 5.385141 | + | 04/01 08:00 | 0.4 | 20.0 | 20.0 | 3.195876 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.4752 | 3.387629 | 2.325898 | 0.0 | 0.4752 | 19.6 | 0.0 | 0.0 | 20.0752 | 20.0752 | 0.0 | 2.0 | 0.0 | 13.039835 | 5.057003 | 1.340742 | 1.16372 | 0.586007 | 0.118854 | 0.073251 | 0.011264 | 19.390675 | 0.0108 | 19.379875 | 5.383299 | 0.0 | 0.0 | 0.0 | 0.0 | 35.043826 | 23.362177 | 12.11854 | 10.168245 | 5.383299 | + | 04/01 09:00 | 0.1 | 20.0 | 20.0 | 5.191651 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.1188 | 5.50315 | 3.915475 | 0.0 | 0.1188 | 19.6 | 0.0 | 0.0 | 19.7188 | 19.7188 | 0.0 | 2.0 | 0.0 | 12.891089 | 5.021028 | 1.331891 | 1.172136 | 0.593875 | 0.123541 | 0.074234 | 0.011333 | 19.219127 | 0.0108 | 19.208327 | 5.335646 | 0.0 | 0.0 | 0.0 | 0.0 | 34.850509 | 23.521932 | 12.588873 | 10.231147 | 5.335646 | + | 04/01 10:00 | 0.4 | 20.0 | 20.0 | 7.155036 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.4752 | 7.584338 | 5.207299 | 0.0 | 0.4752 | 19.6 | 0.0 | 0.0 | 20.0752 | 20.0752 | 0.0 | 2.0 | 0.0 | 12.955257 | 5.036547 | 1.323903 | 1.179731 | 0.600975 | 0.128256 | 0.075122 | 0.011403 | 19.311195 | 0.0108 | 19.300395 | 5.361221 | 0.0 | 0.0 | 0.0 | 0.0 | 34.933905 | 23.666104 | 13.061592 | 10.294865 | 5.361221 | + | 04/01 11:00 | 0.0 | 20.0 | 20.0 | 8.391432 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 8.894918 | 6.404341 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.801094 | 4.999262 | 1.316695 | 1.186585 | 0.607382 | 0.132992 | 0.075923 | 0.011475 | 19.131408 | 0.0108 | 19.120608 | 5.31128 | 0.0 | 0.0 | 0.0 | 0.0 | 34.733549 | 23.796214 | 13.535982 | 10.359314 | 5.31128 | + | 04/01 12:00 | 0.0 | 20.0 | 20.0 | 8.391286 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 8.894763 | 6.404229 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.72226 | 4.980196 | 1.310189 | 1.192771 | 0.613165 | 0.137741 | 0.076646 | 0.011547 | 19.044514 | 0.0108 | 19.033714 | 5.287143 | 0.0 | 0.0 | 0.0 | 0.0 | 34.631093 | 23.913633 | 14.011407 | 10.424413 | 5.287143 | + | 04/01 13:00 | 0.0 | 20.0 | 20.0 | 10.715238 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 11.358152 | 8.17787 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.681947 | 4.970446 | 1.304318 | 1.198353 | 0.618384 | 0.142497 | 0.077298 | 0.011619 | 19.004862 | 0.0108 | 18.994062 | 5.276128 | 0.0 | 0.0 | 0.0 | 0.0 | 34.5787 | 24.019598 | 14.487293 | 10.490091 | 5.276128 | + | 04/01 14:00 | 0.0 | 20.0 | 20.0 | 9.383394 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 9.946398 | 7.161406 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.661332 | 4.96546 | 1.29902 | 1.203391 | 0.623093 | 0.147256 | 0.077887 | 0.011692 | 18.989131 | 0.0108 | 18.978331 | 5.271759 | 0.0 | 0.0 | 0.0 | 0.0 | 34.551909 | 24.115228 | 14.96313 | 10.556286 | 5.271759 | + | 04/01 15:00 | 0.0 | 20.0 | 20.0 | 7.861915 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 8.33363 | 6.000214 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.65079 | 4.96291 | 1.294239 | 1.207937 | 0.627343 | 0.152012 | 0.078418 | 0.011766 | 18.985416 | 0.0108 | 18.974616 | 5.270727 | 0.0 | 0.0 | 0.0 | 0.0 | 34.538208 | 24.20153 | 15.438461 | 10.622937 | 5.270727 | + | 04/01 16:00 | 0.0 | 20.0 | 20.0 | 6.298329 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 6.676229 | 4.806885 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.6454 | 4.961606 | 1.289924 | 1.21204 | 0.631179 | 0.156761 | 0.078897 | 0.011841 | 18.987647 | 0.0108 | 18.976847 | 5.271346 | 0.0 | 0.0 | 0.0 | 0.0 | 34.531202 | 24.279413 | 15.91288 | 10.689994 | 5.271346 | + | 04/01 17:00 | 0.0 | 20.0 | 20.0 | 2.948416 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 3.125321 | 2.250231 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.642643 | 4.96094 | 1.286029 | 1.215742 | 0.634641 | 0.161498 | 0.07933 | 0.011915 | 18.992739 | 0.0108 | 18.981939 | 5.272761 | 0.0 | 0.0 | 0.0 | 0.0 | 34.527619 | 24.3497 | 16.386022 | 10.757409 | 5.272761 | + | 04/01 18:00 | 0.0 | 20.0 | 20.0 | 1.309232 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 1.387786 | 0.999206 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.641233 | 4.960599 | 1.282515 | 1.219084 | 0.637764 | 0.166222 | 0.079721 | 0.01199 | 18.999128 | 0.0108 | 18.988328 | 5.274536 | 0.0 | 0.0 | 0.0 | 0.0 | 34.525787 | 24.413131 | 16.857565 | 10.825139 | 5.274536 | + | 04/01 19:00 | 0.0 | 20.0 | 20.0 | 0.32955 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.349323 | 0.251513 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.640512 | 4.960425 | 1.279343 | 1.2221 | 0.640584 | 0.170928 | 0.080073 | 0.012066 | 19.00603 | 0.0108 | 18.99523 | 5.276453 | 0.0 | 0.0 | 0.0 | 0.0 | 34.52485 | 24.470375 | 17.32722 | 10.893147 | 5.276453 | + | 04/01 20:00 | 0.0 | 20.0 | 20.0 | 0.089508 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.094878 | 0.068313 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.640144 | 4.960335 | 1.276481 | 1.224821 | 0.643128 | 0.175614 | 0.080391 | 0.012141 | 19.013055 | 0.0108 | 19.002255 | 5.278404 | 0.0 | 0.0 | 0.0 | 0.0 | 34.524371 | 24.522035 | 17.794735 | 10.961396 | 5.278404 | + | 04/01 21:00 | 0.0 | 20.0 | 20.0 | 0.085771 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.090917 | 0.06546 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.639955 | 4.96029 | 1.273898 | 1.227277 | 0.645424 | 0.180277 | 0.080678 | 0.012217 | 19.020016 | 0.0108 | 19.009216 | 5.280338 | 0.0 | 0.0 | 0.0 | 0.0 | 34.524126 | 24.568656 | 18.259881 | 11.029857 | 5.280338 | + | 04/01 22:00 | 0.0 | 20.0 | 20.0 | 0.0845 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.08957 | 0.06449 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.639859 | 4.960266 | 1.271567 | 1.229493 | 0.647496 | 0.184916 | 0.080937 | 0.012294 | 19.026828 | 0.0108 | 19.016028 | 5.28223 | 0.0 | 0.0 | 0.0 | 0.0 | 34.524001 | 24.61073 | 18.722462 | 11.0985 | 5.28223 | + | 04/01 23:00 | 0.0 | 20.0 | 20.0 | 0.084864 | 20.6 | 20.6 | 1.0 | 1.1 | 0.0 | 0.0 | 0.089956 | 0.064768 | 0.0 | 0.0 | 19.6 | 0.0 | 0.0 | 19.6 | 19.6 | 0.0 | 2.0 | 0.0 | 12.63981 | 4.960255 | 1.269463 | 1.231494 | 0.649366 | 0.189528 | 0.081171 | 0.01237 | 19.033455 | 0.0108 | 19.022655 | 5.284071 | 0.0 | 0.0 | 0.0 | 0.0 | 34.523937 | 24.6487 | 19.1823 | 11.167301 | 5.284071 | + +There is no indication of an error in the water balance: + +>>> round_(model.check_waterbalance(conditions)) +0.0 +""" +# import... +# ...from standard library +from typing import * + +# ...from HydPy +from hydpy.exe.modelimports import * +from hydpy.core import masktools +from hydpy.core import modeltools +from hydpy.core.typingtools import * + +# ...from hland +from hydpy.models.hland import hland_model +from hydpy.models.hland import hland_masks +from hydpy.models.hland.hland_constants import * + + +class Model(modeltools.AdHocModel): + """ToDo""" + + INLET_METHODS = () + RECEIVER_METHODS = () + RUN_METHODS = ( + hland_model.Calc_TC_V1, + hland_model.Calc_TMean_V1, + hland_model.Calc_FracRain_V1, + hland_model.Calc_RFC_SFC_V1, + hland_model.Calc_PC_V1, + hland_model.Calc_EP_V1, + hland_model.Calc_EPC_V1, + hland_model.Calc_TF_Ic_V1, + hland_model.Calc_EI_Ic_V1, + hland_model.Calc_SP_WC_V1, + hland_model.Calc_Melt_SP_WC_V1, + hland_model.Calc_Refr_SP_WC_V1, + hland_model.Calc_In_WC_V1, + hland_model.Calc_GlMelt_In_V1, + hland_model.Calc_R_SM_V1, + hland_model.Calc_EA_SM_V1, + hland_model.Calc_SUZ_V1, + hland_model.Calc_DP_SUZ_V1, + hland_model.Calc_RS_RI_SUZ_V1, + hland_model.Calc_GR1_V1, + hland_model.Calc_RG1_SG1_V1, + hland_model.Calc_GR2_GR3_V1, + hland_model.Calc_RG2_SG2_V1, + hland_model.Calc_RG3_SG3_V1, + hland_model.Calc_EL_SG2_SG3_V1, + hland_model.Calc_RO_V1, + hland_model.Calc_RA_RT_V2, + hland_model.Calc_QT_V2, + ) + ADD_METHODS = () + OUTLET_METHODS = (hland_model.Pass_Q_v1,) + SENDER_METHODS = () + SUBMODELS = () + + def check_waterbalance( + self, + initial_conditions: Dict[str, Dict[str, ArrayFloat]], + ) -> float: + r"""Determine the water balance error of the previous simulation run in mm. + + Method |Model.check_waterbalance| calculates the balance error as follows: + + :math:` + \sum_{k=1}^{NmbZones} RelZoneArea^k \cdot \left( + \sum_{t=t0}^{t1} \big( PC_t^k + GLMelt_t^k - EI_t^k - EA_t^k - EL_t^k \big) + + \big( IC_{t0}^k - IC_{t1}^k \big) + + \big( SP_{t0}^k - SP_{t1}^k \big) + + \big( WC_{t0}^k - WC_{t1}^k \big) + + \big( SM_{t0}^k - SM_{t1}^k \big) + + \big( SUZ_{t0}^k - SUZ_{t1}^k \big) + + \big( SG1_{t0}^k - SG1_{t1}^k \big) \right) + - \sum_{t=t0}^{t1} \big( RT_t + RA_t \big) + + \big( SG2_{t0} - SG2_{t1} \big) + + \big( SG3_{t0} - SG3_{t1} \big)` + + The returned error should always be in scale with numerical precision so + that it does not affect the simulation results in any relevant manner. + + Pick the required initial conditions before starting the simulation run + via property |Sequences.conditions|. See the integration tests of the + application model |hland_v3| for some examples. + """ + fluxes = self.sequences.fluxes + last = self.sequences.states + first = initial_conditions["states"] + areas = self.parameters.derived.relzonearea.value + idxs_lake = self.parameters.control.zonetype.values == ILAKE + idxs_land = ~idxs_lake + idxs_glac = self.parameters.control.zonetype.values == GLACIER + idxs_soil = idxs_land * ~idxs_glac + return ( + numpy.sum(fluxes.pc.series * areas) + + numpy.sum((fluxes.glmelt.series * areas)[:, idxs_glac]) + - numpy.sum((fluxes.ei.series * areas)[:, idxs_land]) + - numpy.sum((fluxes.ea.series * areas)[:, idxs_soil]) + - numpy.sum((fluxes.el.series * areas)[:, idxs_lake]) + - numpy.sum(fluxes.rt.series) + - numpy.sum(fluxes.ra.series) + - numpy.sum((last.ic - first["ic"])[idxs_land] * areas) + - numpy.sum((last.wc - first["wc"])[idxs_land] * areas) + - numpy.sum((last.sp - first["sp"])[idxs_land] * areas) + - numpy.sum((last.sm - first["sm"])[idxs_soil] * areas) + - (last.suz - first["suz"]) * numpy.sum(areas[idxs_land]) + - (last.sg1 - first["sg1"]) * numpy.sum(areas[idxs_land]) + - (last.sg2 - first["sg2"]) + - (last.sg3 - first["sg3"]) + ) + + +class Masks(masktools.Masks): + """Masks applicable to |hland_v3|.""" + + # pylint: disable=no-member + # bug of pylint 2.4? + CLASSES = hland_masks.Masks.CLASSES + + +tester = Tester() +cythonizer = Cythonizer() +cythonizer.finalise()