River temperature module
This MR introduces a first version of a river temperature routing process in an OOP fashioned way.
Abstract
River temperature determines a wide variety of properties of water and is of great interest as model output in the field of hydrological modeling. In this merge request, we propose a suitable implementation, to enable modeling river temperature in mHM [Samaniego et al., 2010, Kumar et al., 2013]. Based on a literature survey, we decided to use a physical based model build up on the work of [Wanders et al., 2019, Beek et al., 2012, Foreman et al., 2001], since its formulation best fits to the structure of mHM. A reformulation of the governing equations was necessary, to reuse routines of the routing module mRM [Thober et al., 2019], so a numerical solution based on a Muskingum-Cunge discretization [Chow et al., 1988, Thober et al., 2019] could be formulated.
This implementation does not include ice layer at the moment and is not evaluated yet, so we mark it as EXPERIMENTAL.
Governing equations
- Surface water energy balance equation:
\frac{\partial\left(h\cdot T_{w}\right)}{\partial t}+\frac{\partial\left(q\cdot T_{w}\right)}{\partial A} =\underbrace{\frac{Q^{*}-H-LE}{C_{v}}}_{=:T_{IO}}+\frac{\partial\left(q_{s}\cdot T_{s}\right)}{\partial A}
- Net Radiation:
Q^{*}=S_{I}\cdot\left(1-\alpha_{w}\right)+L_{I}-L_{O}
- Boltzmann equation (see):
L_{O}=\varepsilon\cdot\sigma\cdot\left(T_{w}\right)^{4}
- Sensible heat flux formula:
H=k_{H}\cdot\left(T_{w}-T_{a}\right)
- Latent heat formula:
LE=\lambda_{v}\cdot ET_{0}
- Lateral flux sum:
q_{s}=q_{dr}+q_{i}+q_{b}
-
Temperature runoff components:
- From [Wanders et al., 2019]: (in use)
T_{s}=\frac{q_{dr}}{q_{s}}\cdot\max\left(T_{i},T_{a}-1.5\right)+\frac{q_{i}}{q_{s}}\cdot\max\left(T_{i},T_{a}\right)+\frac{q_{b}}{q_{s}}\cdot\max\left(T_{i}+5,\overline{T_{a}}\right)
- From [Beek et al., 2012]: (alternative)
T_{s}=\frac{q_{dr}}{q_{s}}\cdot T_{a}+\frac{q_{i}}{q_{s}}\cdot T_{a}+\frac{q_{b}}{q_{s}}\cdot\overline{T_{a}}
TODOs
-
add a test case -
final clean up -
documentation