Snow model

Warning

This page is a work in progress. If you have any questions or notice any errors, please raise an issue.

Overview

SnowModel is a minimal standalone model of a dynamic snowpack spatially distributed over the given grid. It couples an AbstractSnow process (by default SingleLayerSnow) with a prescribed atmosphere that supplies precipitation and air temperature. It is intended primarily for unit testing of the snow physics in isolation.

Because the model is standalone, the fluxes that a full land model would obtain from the surface energy balance and the snow→soil conduction are instead prescribed input fields: the net surface heat flux surface_heat_flux, the basal conductive heat flux basal_heat_flux, and the sublimation rate (see Prescribed forcing below).

arch = CPU()
grid = ColumnGrid(arch, Float32, ExponentialSpacing(N = 3))
model = SnowModel(grid)
SnowModel{Float32} on CPU()
├── grid:  ColumnGrid{Float32, CPU} with dimensions (1, 1, 3)
├── snow:  SingleLayerSnow{Float32, FractionalSnowCover{Float32}, ConstantSnowDensity{Float32}, PowerLawSnowThermalConductivity{Float32}, ConstantSnowHydraulics{Float32}, Terrarium.ConstantSnowAlbedo{Float32}, SnowEnergyTemperatureClosure{Float32}}
├── atmosphere:  PrescribedAtmosphere{Float32, (:CO2,), RainSnow, LongShortWaveRadiation, Terrarium.SpecificHumidity, ConstantAerodynamics{Float32}, Tuple{TracerGas{Float32, :CO2}}}
├── constants:  PhysicalConstants{Float32}
├── initializer:  DefaultInitializer{Float32}
├── timestepper:  ForwardEuler{Float32}
Terrarium.SnowModelType
struct SnowModel{NF, GridType<:(Terrarium.AbstractLandGrid{NF}), Snow<:Terrarium.AbstractSnow{NF}, Atmosphere<:Terrarium.AbstractAtmosphere, Initializer<:Terrarium.AbstractInitializer, Timestepper<:Terrarium.AbstractTimeStepper{NF}} <: Terrarium.AbstractSnowModel{NF, GridType<:(Terrarium.AbstractLandGrid{NF})}

Minimal standalone model of a single-layer snowpack, intended for unit and differentiability testing. Couples an AbstractSnow process with a prescribed atmosphere providing precipitation and air temperature. The surface and basal heat fluxes (surface_heat_flux, basal_heat_flux) and the sublimation rate are prescribed input fields; in a coupled land model these are supplied by the surface energy balance and the snow→soil conduction.

Properties:

  • grid::Terrarium.AbstractLandGrid: Spatial grid type

  • snow::Terrarium.AbstractSnow: Snow processes

  • atmosphere::Terrarium.AbstractAtmosphere: Near-surface atmospheric conditions

  • constants::PhysicalConstants: Physical constants

  • initializer::Terrarium.AbstractInitializer: State variable initializer

  • timestepper::Terrarium.AbstractTimeStepper: Time stepper: a single AbstractTimeStepper (e.g. ForwardEuler, Heun) or an IMEX

source

The prognostic and diagnostic state variables of the assembled model are

variables(model)
Variables
├─ Prognostic: 
├── snow_energy [J m^-2] on XY{Center, Center}
├── snow_water_equivalent [m] on XY{Center, Center}
├─ Auxiliary: 
├── snow_temperature [°C] on XY{Center, Center}
├── snow_liquid_fraction [-] on XY{Center, Center}
├── snow_depth [m] on XY{Center, Center}
├── snow_cover_fraction [-] on XY{Center, Center}
├─ Inputs: 
├── surface_heat_flux [W m^-2] on XY{Center, Center}
├── basal_heat_flux [W m^-2] on XY{Center, Center}
├── sublimation [m s^-1] on XY{Center, Center}
├── air_temperature [°C] on XY{Center, Center}
├── air_pressure [Pa] on XY{Center, Center}
├── windspeed [m s^-1] on XY{Center, Center}
├── specific_humidity [-] on XY{Center, Center}
├── rainfall [m s^-1] on XY{Center, Center}
├── snowfall [m s^-1] on XY{Center, Center}
├── surface_shortwave_down [W m^-2] on XY{Center, Center}
├── surface_longwave_down [W m^-2] on XY{Center, Center}
├── daytime_length [hr] on XY{Center, Center}
├── CO2 [ppm] on XY{Center, Center}
├─ Namespaces:

The two prognostic variables are the depth-integrated (column) internal energy $\bar{U}_\text{snow}$ (J/m², snow_energy) and the snow water equivalent $W_\text{snow}$ (m, snow_water_equivalent); their mass and energy balances are documented on the Snow mass balance and Snow energy balance pages.

Components

FieldTypeScopeProcess page
snowAbstractSnowSingle-layer snowpack mass and energy balanceSnow
atmosphereAbstractAtmospherePrescribed near-surface forcing (precipitation, air temperature)Atmospheric inputs

In addition to the physics components, SnowModel carries the standard model machinery: constants (PhysicalConstants), an initializer, and a timestepper.

Snow

The snow component is the single-layer snowpack process. The default is SingleLayerSnow, a lumped layer of constant bulk density loosely based on the Utah Energy Balance model [3], composed of independently swappable sub-parameterizations for areal cover, density, thermal conductivity, and hydraulic properties. See the Snow overview and Snow parameterizations for details.

Atmosphere

The atmosphere component provides the near-surface forcing consumed by the snow tendencies — snowfall, rainfall, and air temperature — together with the humidity and wind quantities used to diagnose sublimation. The default is PrescribedAtmosphere.

Prescribed forcing

Unlike the coupled land model, the standalone SnowModel does not solve a surface energy balance or a snow→soil conduction. The corresponding fluxes are therefore declared as input fields and must be supplied (they default to zero):

FieldUnitsMeaningSupplied in the coupled model by
surface_heat_fluxW/m²Net heat flux at the snow surface (positive upward)Surface energy balance closure
basal_heat_fluxW/m²Conductive heat flux at the snow base (positive upward, soil → snow)Snow→soil conduction
sublimationm/sSublimation/evaporation rate from the snow surface (SWE)Surface energy balance latent flux

In the Land model these three inputs become diagnosed couplings: surface_heat_flux and sublimation are set by the surface energy balance, and basal_heat_flux by the snow→soil conductive interface.

Model interface

SnowModel implements the standard model interface: initialize! runs the model/field initializers and then the snow process initializer (the inverse closure $(T_\text{snow}, W_\text{snow}) \to \bar{U}_\text{snow}$), compute_auxiliary! diagnoses the geometric and thermal properties of the snowpack as well as the and energy-temperature closure, and compute_tendencies! accumulates the mass and energy tendencies from the prescribed fluxes and atmospheric forcing.