2.0.0b10
catchment modelling framework
Loading...
Searching...
No Matches
Snow

back...

For this tutorial, we are using the simplified model (without canopy) from the last tutorial.

Implementation of a snow storage

As shown in the figure, we need to create a snow pack water storage, split the rainfall between rain and snow, depending on air temperature and set a snow melt connection between snow and surface water.

Creating the snow storage

Adding a snow storage to the cell

c.add_storage('Snow','S')

Splitting rainfall

The automatically created connection between rain and surfacewater (Rainfall checks if the cell has a snow storage, and assumes if the snow storage is present, that Rainfall should only transfer rain and not snow. However, to have this working properly we need also a Snowfall connection from the rain source to the snow pack:

cmf.Snowfall(c.snow,c)

The split between snow and rain depends on the air temperature (T) of the actual Weather of the cell. If \(T < T_{thres} - 1^\circ C\), where \(T_{thres}=0.0 ^\circ C\) by default, all precipitation is handeled as snow, and for \(T < T_{thres} + 1^\circ C\) precipitation is handeled as rain. For \(|T-T_{thres}|<1K\) precipitation is handled as sleet, a linear mix between snow and rain. Sleet in cmf has its origin in numerical problems when switching during one time step between snow and rain, but fits reality quite nice...

\(T_{thres}\) can be set for the whole model with the function cmf.Weather.set_snow_threshold(Tres).

Snow melt

CMF provides a very simple temperature index snow melt model (TempIndexSnowMelt) in the form \(q_{melt} [mm/day] = (T-T_{thres}) r\) where T is the actual temperature, \(T_{thres}\) the same value as above and \(r\) is the snow melt rate in \(\frac{mm}{K\ day}\). The connection is set up for cmf 2.0 and higher:

snowmelt = cmf.TempIndexSnowMelt(c.snow,c.surfacewater,c,rate=7.0)