Temperature index model calibrated on geodetic MB data#

As of OGGM v1.5.3, we implemented a simple mass balance model that can be calibrated on the geodetic mass balance data from Hugonnet et al., 2021 (see also: Geodetic MB data).

This can be seen as a temporary improvement of the Temperature index model calibrated on traditional MB data until the sandbox models become fully operational.

Like for the previous model, the monthly mass balance \(B_i\) at elevation \(z\) is computed as:

\[B_i(z) = P_i^{Solid}(z) - \mu ^{*} \, max \left( T_i(z) - T_{Melt}, 0 \right)\]

where \(P_i^{Solid}\) is the monthly solid precipitation, \(T_i\) the monthly temperature and \(T_{Melt}\) is the monthly mean air temperature above which ice melt is assumed to occur (-1°C per default). Solid precipitation is computed out of the total precipitation. The fraction of solid precipitation is based on the monthly mean temperature: all solid below temp_all_solid (default: 0°C) and all liquid above temp_all_liq (default: 2°C), linear change in between.

The difference with the previous model is that \(\epsilon\) isn’t needed anymore, now that we can calibrate on each glacier individually.


The glacier per glacier calibration is done for two parameters:

  • the parameter \(\mu ^{*}\) indicates the temperature sensitivity of the glacier, and is calibrated to match the geodetic mass balance data over the reference period.

  • if the resulting \(\mu ^{*}\) is outside of predefined bounds (for example [20, 600] \(mm\,w.e.\,K^{-1}\,mth^{-1}\)), then the temperature is bias corrected until a physically reasonable \(\mu ^{*}\) is found.

Like for the previous model, several parameters (“hyper parameters”) are calibrated globally: temp_all_liq, temp_all_solid, \(T_{Melt}\), and the precipitation correction factor \(P_f\).

How can I use this model instead of the old one?#

Since the model equations are the same, it can be used readily within OGGM with oggm.core.climate.mu_star_calibration_from_geodetic_mb(). Only the calibration steps are different (and simpler!). Check out the run_prepro_levels under level 3 when match_geodetic_mb_per_glacier is set to True or use our Pre-processed directories with precalibrated parameters (path index: match_geod_pergla).


Although this model is a clear improvement to the previous one (mostly, for better matching observations and for getting rid of the residual \(\epsilon\)), more sensible approaches are possible. Importantly, we need to take the uncertainty estimates into account, and we need to tackle the issue of the precipitation correction. More exigent users might have a look at PyGEM or OGGM sandbox, which are offering ways to deal with these issues.