River temperature module

Merged Sebastian Müller requested to merge muellese/mhm:riv_temp_module into develop

This MR introduces a first version of a river temperature routing process in an OOP fashioned way.


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

  1. 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}
  1. Net Radiation:
  1. Boltzmann equation (see):
  1. Sensible heat flux formula:
  1. Latent heat formula:
LE=\lambda_{v}\cdot ET_{0}
  1. Lateral flux sum:
  1. Temperature runoff components:

    • From [Wanders et al., 2019]: (in use)
    • 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}}


  • add a test case
  • final clean up
  • documentation
Edited by Sebastian Müller

Merge request reports