Module smb
Brief summary
The smb module is a unified dispatcher for surface mass balance computation. It delegates to one of three implementations selected by the method parameter: simple, oggm, or accpdd, under a single entry point with a consistent interface.
State variables
Reads: —
Writes: smb
Choosing a method
Set processes.smb.method in your configuration:
Method: simple
Models a simple SMB parametrized by a time-evolving equilibrium line altitude (ELA) \(z_{\rm ELA}\), ablation gradient \(\beta_{\rm abl}\), accumulation gradient \(\beta_{\rm acc}\), and maximum accumulation \(m_{\rm acc}\):
Parameters can be provided as an inline array:
processes:
smb:
method: simple
simple:
array:
- ["time", "gradabl", "gradacc", "ela", "accmax"]
- [ 1900, 0.009, 0.005, 2800, 2.0]
- [ 2100, 0.009, 0.005, 3300, 2.0]
If array is empty ([]), the module reads from the file specified by file. The four parameters are interpolated linearly over time and the SMB is recomputed every update_freq years (default 1).
If an icemask field is present, the module assigns \(-10\,\mathrm{m\,yr^{-1}}\) to areas where positive SMB would otherwise occur outside the mask, preventing overflow into neighbouring catchments.
Method: oggm
Implements the monthly temperature-index model calibrated on geodetic mass balance data (Hugonnet et al., 2021)1 by OGGM. The yearly SMB is:
where \(P_i^{\rm sol}\) is monthly solid precipitation, \(T_i\) is monthly temperature, \(d_f\) is the melt factor (melt_f), and \(T_{\rm melt}\) is the melt threshold (temp_melt). Solid precipitation equals total precipitation below temp_all_solid, drops to zero above temp_all_liq, with a linear transition in between. All calibrated parameters are provided by the oggm_shop module (Maussion et al., 2019)2. Requires state.precipitation and state.air_temp (e.g. from the climate module with method: oggm).
Method: accpdd
Implements a combined accumulation and temperature-index model (Hock, 2003)3. Accumulation equals solid precipitation when temperature is below a threshold and decreases linearly to zero in a transition zone. Ablation is proportional to the number of Positive Degree Days (PDD). The model tracks snow layer depth and applies different PDD factors for snow and ice.
PDD computation uses the expectation-integration formulation (Calov & Greve, 2005)4. The snowpack and refreezing parameterisation follows the PyPDD and PISM implementations (Seguinot, 2019)5. Requires state.precipitation, state.air_temp, and optionally state.air_temp_sd.
Parameters
Default configuration file (smb.yaml):
smb:
# Choose the surface mass-balance implementation: simple | oggm | accpdd
method: simple
# ------------------------------------------------------------------
# simple — gradient-based SMB from a time-series of (gradabl, gradacc,
# ela, maxacc). Mirrors the legacy `smb_simple` module.
# ------------------------------------------------------------------
simple:
update_freq: 1.0
file: param.txt
array: []
# ------------------------------------------------------------------
# oggm — temperature-index melt model using OGGM calibration json.
# Requires state.precipitation and state.air_temp (e.g. from a climate
# module). Mirrors the legacy `smb_oggm` module.
# ------------------------------------------------------------------
oggm:
update_freq: 1.0
ice_density: 910.0
wat_density: 1000.0
melt_enhancer: 1.0
# ------------------------------------------------------------------
# accpdd — accumulation + positive-degree-day (Hock 2003 / PyPDD)
# melt model. Requires state.precipitation, state.air_temp, and
# optionally state.air_temp_sd. Mirrors the legacy `smb_accpdd` module.
# ------------------------------------------------------------------
accpdd:
update_freq: 1.0
refreeze_factor: 0.6
thr_temp_snow: 0.0
thr_temp_rain: 2.0
melt_factor_snow: 1.095726596343
melt_factor_ice: 2.921937590248
shift_hydro_year: 0.75
ice_density: 910.0
wat_density: 1000.0
smb_maximum_accumulation: 6.0
Structure of the parameters:
Description of the parameters:
| Name | Description | Default value | Units |
|---|---|---|---|
method
|
SMB implementation to use: simple, oggm, or accpdd. |
simple | — |
simple
| Name | Description | Default value | Units |
|---|---|---|---|
simple.update_freq
|
Update SMB every X years. | 1.0 | yr |
simple.file
|
Input file for the simple SMB model (columns: time, gradabl, gradacc, ela, accmax). | param.txt | — |
simple.array
|
Inline time-dependent SMB parameters (time, gradabl, gradacc, ela, accmax); overrides file if non-empty. | [] | — |
oggm
| Name | Description | Default value | Units |
|---|---|---|---|
oggm.update_freq
|
Update SMB every X years. | 1.0 | yr |
oggm.ice_density
|
Ice density used to convert melt from water equivalent. | 910.0 | kg m\( ^{-3} \) |
oggm.wat_density
|
Water density used to convert melt from water equivalent. | 1000.0 | kg m\( ^{-3} \) |
oggm.melt_enhancer
|
Multiplicative factor applied to the melt rate. | 1.0 | — |
accpdd
| Name | Description | Default value | Units |
|---|---|---|---|
accpdd.update_freq
|
Update SMB every X years. | 1.0 | yr |
accpdd.refreeze_factor
|
Fraction of meltwater that refreezes (Hock 2003). | 0.6 | — |
accpdd.thr_temp_snow
|
Temperature threshold below which precipitation falls as snow. | 0.0 | °C |
accpdd.thr_temp_rain
|
Temperature threshold above which precipitation falls as rain. | 2.0 | °C |
accpdd.melt_factor_snow
|
Degree-day melt factor for snow. | 1.095726596343 | mm °C\( ^{-1} \) d\( ^{-1} \) |
accpdd.melt_factor_ice
|
Degree-day melt factor for ice. | 2.921937590248 | mm °C\( ^{-1} \) d\( ^{-1} \) |
accpdd.shift_hydro_year
|
Fractional year shift for the start of the hydrological year. | 0.75 | yr |
accpdd.ice_density
|
Ice density used for unit conversion. | 910.0 | kg m\( ^{-3} \) |
accpdd.wat_density
|
Water density used for unit conversion. | 1000.0 | kg m\( ^{-3} \) |
accpdd.smb_maximum_accumulation
|
Cap on the accumulation rate to avoid unrealistically large values. | 6.0 | m yr\( ^{-1} \) |
Contributors: Guillaume Jouvet, Fabien Maussion.
-
Hugonnet, R., McNabb, R., Berthier, E., Menounos, B., Nuth, C., Girod, L., Farinotti, D., Huss, M., Dussaillant, I., Brun, F., & Kääb, A. (2021). Accelerated global glacier mass loss in the early twenty-first century. Nature, 592(7856), 726--731. https://doi.org/10.1038/s41586-021-03436-z ↩
-
Maussion, F., Butenko, A., Champollion, N., Dusch, M., Eis, J., Fourteau, K., Gregor, P., Jarosch, A. H., Landmann, J., Oesterle, F., Recinos, B., Rothenpieler, T., Vlug, A., Wild, C. T., & Marzeion, B. (2019). The open global glacier model (OGGM) v1.1. Geoscientific Model Development, 12(3), 909--931. https://doi.org/10.5194/gmd-12-909-2019 ↩
-
Hock, R. (2003). Temperature index melt modelling in mountain areas. Journal of Hydrology, 282(1--4), 104--115. https://doi.org/10.1016/s0022-1694(03)00257-9 ↩
-
Calov, R., & Greve, R. (2005). A semi-analytical solution for the positive degree-day model with stochastic temperature variations. Journal of Glaciology, 51(172), 173--175. https://doi.org/10.3189/172756505781829601 ↩
-
Seguinot, J. (2019). PyPDD: A positive degree day model for glacier surface mass balance. https://doi.org/10.5281/ZENODO.3467639 ↩