SNOWPACK 20240717.43bd1bf
Canopy Class Reference

Detailed Description

Computes interception of precipitation and radiation, and reduction of windspeed in a canopy layer above thesnow or soil surface. This has been published in Gouttevin, I., M. Lehning, T. Jonas, D. Gustafsson, and Meelis Mölder, "A two-layer canopy model with thermal inertia for an improved snowpack energy balance below needleleaf forest (model SNOWPACK, version 3.2. 1, revision 741).", Geoscientific Model Development 8.8, pp 2379-2398, 2015.

Canopy modeling

  1. 2layer canopy model:
    • key: TWO_LAYER_CANOPY = true [Snowpack]
    • logical in the code: Twolayercanopy
    • content: canopy is divided into a trunk layer (interception radiations with factor sigftrunk) and a leaf-layer (intercepting radiations with factor sigf). SW radiations reaching the ground are modified accordingly. An energy balance is computed for each layer, producing leaf-layer and trunk layer temperatures (TC and Ttrunk) that affect LW radiations to the ground. Optionally, trunks can get direct solar insolation (important for sparse canopies), look for CanClosDirTrunks in the code
    • further details: Gouttevin et al. (2014): A two-layer canopy with thermal inertia for an improved modelling of the sub-canopy snowpack energy-balance (in prep).
  2. canopy heat mass:
    • key: CANOPY_HEAT_MASS = true [Snowpack]
    • logical in the code: CanopyHeatMass
    • content: the canopy gets an heat mass (whole, or separate between trunks and leaves if Twolayercanopy) that adds a biomass heat flux term in the canopy energy balance.
    • an additionnal parameter is now required in the input/station.snoold file : CanopyBasalArea (m2/m2), to be placed after CanopyLeafAreaIndex. Example value for closed canopies like Alptal : 0.004.
    • further details: Gouttevin et al. (2014): A two-layer canopy with thermal inertia for an improved modelling of the sub-canopy snowpack energy-balance (in prep).
  3. forest-floor albedo:
    • key: FORESTFLOOR_ALB = true [Snowpack]
    • logical in the code: forestfloor_alb
    • content: Litter falling on the forest floor can reduce albedo. This effect is currently parameterized through an exponential decay of the albedo to a value of 0.3 with a time-constant of 7 days, based on parameterizations commonly used in Land-Surface models. There is room for improvement !

Important comments:

  • Snowpack can take precipitation phase (relying on the psum_ph variable) for applications such as the SnowMIP experiments (Rutter et al., 2009).
  • an additionnal parameter is now required in the input/station.snoold file : CanopyBasalArea (m2/m2), to be placed after CanopyLeafAreaIndex.
  • Some cleaning was done to suppressed outputs that can be easily derived from other outputs. There is now space for outputs specific to the 2layer model, which are written if variant = 2L_CANOPY in [SnowpackAdvanced] (Canopy::writeTimeSeriesAdd2LCanopy).

#include <Canopy.h>

Public Member Functions

 Canopy (const SnowpackConfig &i_cfg)
 
bool runCanopyModel (CurrentMeteo &Mdata, SnowStation &Xdata, const double &roughness_length, const double &height_of_wind_val, const bool &adjust_VW_height=true)
 MAIN CANOPY FUNCTION CALLED BY Meteo.c This routine computes interception of precipitation and radiation, and reduction of turbulent exchange in a canopy layer above the ground. Computations are made in the following order: More...
 

Static Public Member Functions

static void DumpCanopyHeader (std::ofstream &fout)
 Write header for 28 canopy parameters to Outfile, columns 65-92. More...
 
static void DumpCanopyUnits (std::ofstream &fout)
 Write units for 28 canopy parameters to Outfile, columns 65-92. More...
 
static void DumpCanopyData (std::ofstream &fout, const CanopyData *Cdata, const SurfaceFluxes *Sdata, const double cos_sl)
 Dump 28 canopy parameters to Outfile, columns 65-92. More...
 
static void writeTimeSeriesAdd2LCanopy (std::ofstream &fout, const CanopyData *Cdata)
 

Constructor & Destructor Documentation

◆ Canopy()

Canopy::Canopy ( const SnowpackConfig i_cfg)

Member Function Documentation

◆ DumpCanopyData()

void Canopy::DumpCanopyData ( std::ofstream &  fout,
const CanopyData Cdata,
const SurfaceFluxes Sdata,
const double  cos_sl 
)
static

Dump 28 canopy parameters to Outfile, columns 65-92.

Parameters
foutDump file stream
*Cdata
*Sdata
cos_slCosine of slope angle

◆ DumpCanopyHeader()

void Canopy::DumpCanopyHeader ( std::ofstream &  fout)
static

Write header for 28 canopy parameters to Outfile, columns 65-92.

Parameters
foutDump file stream

◆ DumpCanopyUnits()

void Canopy::DumpCanopyUnits ( std::ofstream &  fout)
static

Write units for 28 canopy parameters to Outfile, columns 65-92.

Parameters
foutDump file stream

◆ runCanopyModel()

bool Canopy::runCanopyModel ( CurrentMeteo Mdata,
SnowStation Xdata,
const double &  roughness_length,
const double &  height_of_wind_val,
const bool &  adjust_VW_height = true 
)

MAIN CANOPY FUNCTION CALLED BY Meteo.c This routine computes interception of precipitation and radiation, and reduction of turbulent exchange in a canopy layer above the ground. Computations are made in the following order:

  1. Preliminar mass balance (interception and throughfall)
  2. Canopy surface energy balance (net radiation, sensible and latent heat fluxes)
  3. Final mass balance (evaporation of intercepted water, and transpiration
    Parameters
    MdataCurrentMeteo
    XdataProfile
    roughness_length
    height_of_wind_val
    adjust_VW_heightif set to false, assumes a constant measurement height for wind values (default: true, ie. take into account the snow height decreasing the sensor height above the surface)
    Returns
    true if the canopy module could be used, false if not (canopy under the snow, etc)

◆ writeTimeSeriesAdd2LCanopy()

void Canopy::writeTimeSeriesAdd2LCanopy ( std::ofstream &  fout,
const CanopyData Cdata 
)
static

The documentation for this class was generated from the following files: