Snowpack Energy Balance

How snow gains and loses energy—the foundation of melt modelling

2026-02-27

The floods that struck Alberta in June 2013, causing over $6 billion in damage and forcing the evacuation of 100,000 people in Calgary, were triggered by a combination of an exceptional snowpack in the Rockies and prolonged intense rainfall. The snowpack — which had accumulated through a cold, wet winter — melted rapidly when warm air and rain arrived simultaneously. Hydrologists tracking the event needed to know not just how much snow was there, but how quickly it would release its stored water under the prevailing energy inputs. That question belongs to the snowpack energy balance.

Snow is not simply ice that melts when the temperature goes above zero. The snowpack has its own energy budget: it gains energy from solar radiation (which it partially reflects due to its high albedo), from longwave radiation emitted by clouds and trees, from warm air, and from rain falling on it. It loses energy by emitting longwave radiation and by sublimation. Only when the energy content of the snowpack drives the temperature of the entire snow column to 0°C and supplies the latent heat of fusion — 334,000 joules per kilogram — does actual meltwater appear. This model derives that full energy budget, explains why a clear sunny day can produce more melt than a warm cloudy one, and shows why early spring storms that rain on snow produce the fastest and most dangerous runoff.

1. The Question

Why does snow melt faster on sunny spring days even when air temperature is below freezing?

Snow is a dynamic system that gains and loses energy through multiple pathways:

Energy inputs: - ☀️ Shortwave radiation (solar) - 🌥️ Longwave radiation (atmospheric/cloud) - 🌡️ Sensible heat (warm air) - 💧 Latent heat (condensation) - 🌍 Ground heat flux (from soil below)

Energy outputs: - ❄️ Longwave emission (snow surface) - 🌡️ Sensible heat (to cold air) - 💨 Latent heat (sublimation/evaporation) - 💧 Melt (phase change requires 334 kJ/kg!)

The mathematical question: How do we quantify each energy flux and determine when the snowpack reaches 0°C and begins melting?


2. The Conceptual Model

Energy Balance Equation

At the snow surface:

Q_{\text{net}} = Q_{\text{SW}}^{\downarrow} - Q_{\text{SW}}^{\uparrow} + Q_{\text{LW}}^{\downarrow} - Q_{\text{LW}}^{\uparrow} + Q_H + Q_E + Q_G

Where: - Q_{\text{SW}}^{\downarrow} = Incoming shortwave radiation (W/m²) - Q_{\text{SW}}^{\uparrow} = Reflected shortwave (high albedo!) - Q_{\text{LW}}^{\downarrow} = Incoming longwave (from atmosphere) - Q_{\text{LW}}^{\uparrow} = Outgoing longwave (snow emits strongly) - Q_H = Sensible heat flux (convection) - Q_E = Latent heat flux (sublimation/evaporation) - Q_G = Ground heat flux (from soil)

Net energy determines: - Q_{\text{net}} < 0: Snowpack cools (energy loss) - Q_{\text{net}} > 0 and T_{\text{snow}} < 0°C: Snowpack warms - Q_{\text{net}} > 0 and T_{\text{snow}} = 0°C: Melt occurs

Phase Change

Melting requires latent heat of fusion:

L_f = 334 \text{ kJ/kg} = 334,000 \text{ J/kg}

Melt rate:

M = \frac{Q_{\text{net}}}{L_f \rho_w}

Where: - M = melt rate (m/s) - \rho_w = density of water (1000 kg/m³)

Example: Q_{\text{net}} = 200 W/m² → M = 200 / (334000 \times 1000) = 6 \times 10^{-7} m/s = 0.05 mm/hour

Snow Albedo

Critical parameter: Fresh snow reflects 80-95% of solar radiation!

\alpha = \frac{Q_{\text{SW}}^{\uparrow}}{Q_{\text{SW}}^{\downarrow}}

Typical values: - Fresh snow: \alpha = 0.80-0.95 - Old snow: \alpha = 0.60-0.75 - Dirty snow: \alpha = 0.40-0.60 - Wet snow: \alpha = 0.50-0.70

Albedo decay:

\alpha(t) = \alpha_{\min} + (\alpha_0 - \alpha_{\min})e^{-kt}

Where k \approx 0.01-0.05 day⁻¹ (aging rate).

Temperature effect:

\alpha = \alpha_{\text{cold}} - 0.008 \times T_{\text{surface}} \quad \text{(when } T > -10°C\text{)}


3. Building the Mathematical Model

Shortwave Radiation Balance

Incoming at surface:

Q_{\text{SW}}^{\downarrow} = I_0 \cos(\theta_z) \tau_{\text{atm}}

Where: - I_0 = Solar constant (1361 W/m²) - \theta_z = Solar zenith angle - \tau_{\text{atm}} = Atmospheric transmissivity (~0.7)

Reflected:

Q_{\text{SW}}^{\uparrow} = \alpha \times Q_{\text{SW}}^{\downarrow}

Net shortwave (absorbed):

Q_{\text{SW,net}} = (1 - \alpha) Q_{\text{SW}}^{\downarrow}

Key insight: High albedo means most solar energy reflected → slow daytime melt.

Longwave Radiation Balance

Incoming from atmosphere:

Q_{\text{LW}}^{\downarrow} = \varepsilon_{\text{atm}} \sigma T_{\text{air}}^4

Atmospheric emissivity (clear sky):

\varepsilon_{\text{atm}} = 0.605 + 0.048\sqrt{e_a}

Where e_a = vapor pressure (Pa).

Cloud effect:

\varepsilon_{\text{cloudy}} = \varepsilon_{\text{clear}} + 0.26 \times C

Where C = cloud fraction (0-1).

Outgoing from snow:

Q_{\text{LW}}^{\uparrow} = \varepsilon_{\text{snow}} \sigma T_{\text{surface}}^4

Where \varepsilon_{\text{snow}} \approx 0.97-0.99 (snow is nearly a blackbody emitter!).

Net longwave:

Q_{\text{LW,net}} = Q_{\text{LW}}^{\downarrow} - Q_{\text{LW}}^{\uparrow}

Typically: Q_{\text{LW,net}} < 0 at night (snow radiates energy, cools).

Sensible Heat Flux

Turbulent heat transfer from air to snow:

Q_H = \rho_{\text{air}} c_p C_H u (T_{\text{air}} - T_{\text{surface}})

Where: - \rho_{\text{air}} = air density (1.25 kg/m³) - c_p = specific heat of air (1005 J/(kg·K)) - C_H = bulk transfer coefficient (~0.002) - u = wind speed (m/s) - T_{\text{air}} - T_{\text{surface}} = temperature gradient

Positive when: Air warmer than snow → energy input
Negative when: Air colder than snow → energy loss

Wind effect: Higher wind → stronger turbulent transfer.

Latent Heat Flux

Phase change energy:

Q_E = \rho_{\text{air}} L_v C_E u (q_{\text{air}} - q_{\text{surface}})

Where: - L_v = latent heat of vaporization/sublimation (2.5 MJ/kg) - C_E = moisture transfer coefficient (~0.002) - q = specific humidity (kg/kg)

Sublimation (solid → vapor): Requires L_s = 2.834 MJ/kg

Evaporation (liquid → vapor): Requires L_v = 2.5 MJ/kg

Condensation: Q_E > 0 (energy input when moist air condenses on snow)
Sublimation: Q_E < 0 (energy loss, snow mass lost to atmosphere)

Ground Heat Flux

Conduction from soil:

Q_G = -k_{\text{soil}} \frac{\partial T}{\partial z}

Where k_{\text{soil}} \approx 0.5-2 W/(m·K).

Typical magnitude: 5-20 W/m² (small compared to radiation).

Direction: - Early winter: Warm soil → energy input to snowpack - Late winter: Cold soil → energy loss from base


4. Worked Example by Hand

Problem: Calculate net energy balance for snowpack on sunny spring day.

Conditions: - Solar radiation: Q_{\text{SW}}^{\downarrow} = 600 W/m² - Snow albedo: \alpha = 0.75 (old snow) - Air temperature: T_{\text{air}} = 5°C = 278 K - Snow surface temperature: T_{\text{surface}} = 0°C = 273 K - Wind speed: u = 3 m/s - Relative humidity: 60% - Cloud cover: 20% - Ground heat flux: Q_G = 10 W/m²

Calculate: Is snow melting? If so, how fast?

Solution

Step 1: Shortwave balance

Q_{\text{SW,net}} = (1 - 0.75) \times 600 = 0.25 \times 600 = 150 \text{ W/m}^2

Step 2: Longwave balance

Vapor pressure (approximate): e_a \approx 850 Pa (60% RH at 5°C)

\varepsilon_{\text{clear}} = 0.605 + 0.048\sqrt{850} = 0.605 + 1.40 = 0.756

\varepsilon_{\text{cloudy}} = 0.756 + 0.26 \times 0.2 = 0.808

Q_{\text{LW}}^{\downarrow} = 0.808 \times 5.67 \times 10^{-8} \times 278^4 = 305 \text{ W/m}^2

Q_{\text{LW}}^{\uparrow} = 0.98 \times 5.67 \times 10^{-8} \times 273^4 = 315 \text{ W/m}^2

Q_{\text{LW,net}} = 305 - 315 = -10 \text{ W/m}^2

Step 3: Sensible heat

Q_H = 1.25 \times 1005 \times 0.002 \times 3 \times (278 - 273)

= 1.25 \times 1005 \times 0.002 \times 3 \times 5 = 37.7 \text{ W/m}^2

Step 4: Latent heat (assume negligible for simplicity)

Q_E \approx 0 \text{ W/m}^2

Step 5: Net energy

Q_{\text{net}} = 150 + (-10) + 37.7 + 0 + 10 = 187.7 \text{ W/m}^2

Step 6: Melt rate

M = \frac{187.7}{334000 \times 1000} = 5.6 \times 10^{-7} \text{ m/s}

M = 5.6 \times 10^{-7} \times 3600 = 0.002 \text{ m/hour} = 2 \text{ mm/hour}

Conclusion: Snow IS melting at 2 mm/hour.

Energy breakdown: - Absorbed solar: 150 W/m² (80% of total) - Sensible heat: 38 W/m² (20%) - Net longwave: -10 W/m² (radiative cooling) - Ground heat: 10 W/m²

Key insight: Even though air is only 5°C, strong solar absorption drives melt!


5. Computational Implementation

Below is an interactive snowpack energy balance calculator.

<label>
  Solar radiation (W/m²):
  <input type="range" id="solar-rad" min="0" max="1000" step="50" value="600">
  <span id="solar-val">600</span>
</label>
<label>
  Snow albedo:
  <input type="range" id="albedo" min="0.4" max="0.95" step="0.05" value="0.75">
  <span id="albedo-val">0.75</span>
</label>
<label>
  Air temperature (°C):
  <input type="range" id="air-temp" min="-20" max="15" step="1" value="5">
  <span id="air-temp-val">5</span>
</label>
<label>
  Wind speed (m/s):
  <input type="range" id="wind-speed" min="0" max="10" step="0.5" value="3">
  <span id="wind-val">3.0</span>
</label>
<label>
  Cloud cover (%):
  <input type="range" id="cloud-cover" min="0" max="100" step="10" value="20">
  <span id="cloud-val">20</span>
</label>
<canvas id="snowpack-canvas" width="700" height="400" style="border: 1px solid #ddd;"></canvas>
<p><strong>Net energy:</strong> <span id="net-energy">--</span> W/m²</p>
<p><strong>Melt rate:</strong> <span id="melt-rate">--</span> mm/hour</p>
<p><strong>Status:</strong> <span id="snow-status">--</span></p>

Try this: - High solar + low albedo: Fast melt (dirty/old snow) - High albedo: Most solar reflected, slow melt (fresh snow) - Increase clouds: More longwave input → warmer conditions - Increase wind: Stronger sensible heat transfer - Cold air temp: Can still melt with strong solar! - Watch arrows scale with energy magnitude - Solid arrows = energy input, Dashed arrows = energy output

Key insight: Albedo is CRITICAL—fresh snow (α=0.9) reflects 90% of solar, while dirty snow (α=0.5) absorbs 50%!


6. Interpretation

Spring Melt Timing

Energy balance controls melt onset:

Early spring: - Solar angle low → less SW radiation - Cold air → negative sensible heat - Clear nights → strong LW cooling - Net: Diurnal melt/refreeze cycles

Late spring: - Solar angle high → strong SW radiation - Warm air → positive sensible heat - Albedo decreasing (aging snow) - Net: Sustained melt, rapid snowpack depletion

Rain-on-Snow Events

Liquid precipitation adds energy:

Q_{\text{rain}} = \rho_w c_w T_{\text{rain}} P

Where: - c_w = specific heat of water (4186 J/(kg·K)) - T_{\text{rain}} = temperature above 0°C - P = precipitation rate (kg/(m²·s))

Example: 10mm/hour rain at 5°C:

Q_{\text{rain}} = 1000 \times 4186 \times 5 \times (10/3600000) = 58 \text{ W/m}^2

Combined with: Warm air, clouds (high LW), wind → Extreme melt rates!

Flood risk: Rain + rapid snowmelt = compounded runoff.

Forest Canopy Effects

Under trees: - Reduced SW↓ (40-60% intercepted by canopy) - Increased LW↓ (trees emit longwave) - Reduced wind → lower turbulent fluxes - Snow lasts longer in dense forest

Clearings: - Full solar exposure - Higher wind - Earlier melt

Elevation Gradients

Lapse rate: Temperature decreases ~6.5°C per 1000m.

Higher elevations: - Colder air → less sensible heat input - More precipitation as snow - Longer snow cover duration

Critical elevation: Snowline rises ~150m per 1°C warming.


7. What Could Go Wrong?

Ignoring Albedo Evolution

Fresh snow: α = 0.85
After 7 days: α = 0.65
Absorbed solar: 150 W/m² vs. 350 W/m² (2.3× difference!)

Solution: Model albedo decay with age and temperature.

Assuming Constant Surface Temperature

Reality: Surface temperature varies diurnally. - Day: Warms toward 0°C (melt limit) - Night: Cools below 0°C (refreezing)

Cold content: Energy required to warm snowpack to 0°C before melt:

Q_{\text{cold}} = \rho_{\text{snow}} c_{\text{ice}} d |T_{\text{snow}}|

Where: - c_{\text{ice}} = 2100 J/(kg·K) - d = snow depth - T_{\text{snow}} = average temperature (< 0°C)

Must warm cold snowpack before melt occurs!

Neglecting Internal Energy

Solar penetration: SW radiation penetrates snow (especially thin/clean).

Subsurface warming: Energy absorbed below surface → internal melt.

Solution: Multi-layer snowpack model.

Ignoring Snowpack Structure

Layering: - Fresh snow on old snow - Ice layers from refreeze - Depth hoar (weak layer)

Each layer: Different density, albedo, thermal properties.

Simple models: Single-layer bulk properties (acceptable for water balance, not avalanche).


8. Extension: Degree-Day Method

Simplified melt model (empirical):

M = f \times (T_{\text{air}} - T_{\text{threshold}}) \quad \text{when } T_{\text{air}} > T_{\text{threshold}}

Where: - M = melt (mm/day) - f = degree-day factor (2-6 mm/(°C·day)) - T_{\text{threshold}} = 0°C

Example: Air temp = 5°C, f = 3 mm/(°C·day)

M = 3 \times (5 - 0) = 15 \text{ mm/day}

Advantages: - Simple (only needs air temperature) - Calibrate f to observations

Disadvantages: - No physics (black box) - Fails when: Sunny + cold air (still melts) or cloudy + warm (less melt) - No albedo effect

Use: Quick estimates, ungauged basins.


9. Math Refresher: Stefan-Boltzmann Law

Blackbody Radiation

All objects emit electromagnetic radiation based on temperature.

Stefan-Boltzmann Law:

Q = \varepsilon \sigma T^4

Where: - Q = radiant flux (W/m²) - \varepsilon = emissivity (0-1, dimensionless) - \sigma = Stefan-Boltzmann constant = 5.67 × 10⁻⁸ W/(m²·K⁴) - T = absolute temperature (K)

Blackbody: \varepsilon = 1 (perfect emitter/absorber)

Snow: \varepsilon \approx 0.98 (nearly blackbody in longwave!)

Temperature Effect

Small temperature changes → large emission changes:

At 273 K (0°C):

Q = 0.98 \times 5.67 \times 10^{-8} \times 273^4 = 315 \text{ W/m}^2

At 263 K (-10°C):

Q = 0.98 \times 5.67 \times 10^{-8} \times 263^4 = 283 \text{ W/m}^2

Difference: 32 W/m² for 10°C change.

Why T^4: Fourth power makes emission very sensitive to temperature.


Summary