SNOWPACK  SNOWPACK-3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SnLaws Class Reference

#include <Laws_sn.h>

Public Types

enum  EventType { event_none, event_wind }
 Types of events for computing new snow density. More...
 
enum  TempDependence { t_term_arrhenius_critical =11, t_term_arrhenius =911, t_term_837 =977, t_term_stk =999 }
 Defines temperature dependence of snow viscosity. More...
 
enum  ViscosityVersion {
  visc_dflt =111, visc_cal =333, visc_ant =335, visc_897 =555,
  visc_837 =977, visc_stk =999
}
 Defines which snow viscosity version to use. More...
 

Static Public Member Functions

static double conductivity_air (void)
 
THERMAL CONDUCTIVITY OF ICE

Based on master thesis of Tobias Hipp, who used relationships by Ling & Yhang (2005).

Version
11.03
Parameters
TemperatureTemperature (K)
Returns
Thermal conductivity of ice
static double conductivity_ice (const double &Temperature)
 
THERMAL CONDUCTIVITY OF WATER

Based on master thesis of Tobias Hipp, who used relationships by Ling & Yhang (2005).

Version
11.03
Parameters
TemperatureTemperature (K)
Returns
Thermal conductivity of water
static double conductivity_water (const double &Temperature)
 
New snow density

Computes the density of new snow. The options for HN_DENSITY are:

  • PARAMETERIZED (default is LEHNING_NEW):
    • ZWART: Costijn Zwart's model (elaborated 2006; in use since 4 Dec 2007
    • LEHNING_NEW: Improved model by M. Lehning, incl. ad-hoc wind & temperature effects (used until 06/07)
    • LEHNING_OLD: First model by M. Lehning
      Note
      {models by M. Lehning can be augmented with a parameterization for winds > 2.9 m s-1 worked out by J. Hendrikx => set jordy_new_snow in Laws_sn.cc}
    • BELLAIRE: Sascha Bellaire's model (elaborated 2007; used summer/fall 2007)
    • PAHAUT: Edmond Pahaut's model, introduced Sep 1995 in CROCUS by G. Giraud
  • EVENT: Driven by event type, that is,
    • event_wind: Implemented 2009 by Christine Groot Zwaaftink for Antarctic variant
  • MEASURED: Use measured new snow density read from meteo input -Note: Set HN_DENSITY_FIXEDVALUE to 1. to use surface snow density as a "measured" value in case of missing values
  • FIXED: Use a fixed new snow density by assigning HN_DENSITY-FIXEDVALUE a value (default: 100 kg m-3, at least min_hn_density)
    Parameters
    i_hn_densitytype of density computation
    i_hn_density_parameterizationto use
    i_hn_density_fixedValueto use
    MdataMeteorological input
    XdataSnow cover data
    tssSnow surface temperature (K)
    variantwhich is currently used
static double compNewSnowDensity (const std::string &i_hn_density, const std::string &i_hn_density_parameterization, const double &i_hn_density_fixedValue, const CurrentMeteo &Mdata, const SnowStation &Xdata, const double &tss, const std::string &variant)
 
static double NewSnowViscosityLehning (const ElementData &Edata)
 NEW SNOW VISCOSITY (dendritic snow, i.e., dd > 0.)
Actual version : ml_lw_VS_Lehning from r7.7
This is Michael's viscosity routine, which is not a function of micro-structure, but which is nonetheless pretty important because it is numerically STABLE and does predict decent settling rates, sometimes a bit too high. This routine was (is) used for NEW or WET snow. More...
 
static double snowViscosityTemperatureTerm (const double &Te)
 Computes the temperature term of viscosity. More...
 
static double compLoadingRateStress (const std::string &variant, ElementData &Edata, const mio::Date &date)
 Computes the additional stress due to loading rate. More...
 
static double loadingRateStressDEFAULT (ElementData &Edata, const mio::Date &date)
 
static double loadingRateStressCALIBRATION (ElementData &Edata, const mio::Date &date)
 
static double snowViscosityFudgeDEFAULT (const ElementData &Edata)
 Determines the fudge factor for viscosity
This fudge factor takes into account bond-ice imperfections and the effect of liquid water. More...
 
static double snowViscosityFudgeCALIBRATION (const ElementData &Edata, const mio::Date &date)
 To calibrate the fudge factor for viscosity. More...
 

Static Public Attributes

static double min_hn_density = 30.
 
static double max_hn_density = 250.0
 
static const double smallest_viscosity = 1.0e6
 Defines the smallest allowable viscosity (Pa s) that a viscosity law will return
Value is DAMM SMALL – smaller values than this are pretty unrealistic. More...
 
static const bool jordy_new_snow = false
 To use J. Hendrikx's parameterization for wind speeds > 2.9 m s-1. More...
 
static const bool wind_pump = true
 Switch on or off wind pumping in snow. More...
 
static const bool wind_pump_soil = true
 Switch on or off wind pumping in soil. More...
 

SOIL PARAMETERS

Define Method and Coefficents for the computation of the influence of soil water content on Evaporation from Bare Soil Layers:

  • Resistance Approach, see Laws_sn.c
  • Relative Humidity Approach, see Snowpack.cc
  • none, assume saturation pressure and no extra resistance
static const double field_capacity_soil = 0.15
 Field capacity of the soil (1). Above this levels, water begins to drain. More...
 

SNOW VISCOSITY

Computes snow viscosity according to the following options:

  • DEFAULT : default model (corresponding to last calibration)
  • KOJIMA : according to parameterization by Kojima
  • CALIBRATION : used for calibration purposes
    Parameters
    variantsee VARIANT
    i_viscosity_modelto use
    Edata
    datecurrent
static double SnowViscosityMSU (const ElementData &Edata)
 MONTANA snow viscosity (non-dendritic snow, i.e. if dd=0.); From bb_lw_VS_Montana() (Laws.c r7.7). Bob Brown's MICRO-STRUCTURE law. Clearly the BEST law we have right now but also the most UNSTABLE: note that the viscosity is not only a function of the grain dimensions, but also a function of the overburden stress. A series of equations that collectively give the viscosity Vis = S/eDot. The microstructure parameters rb and rg are obtained through Edata pointer and are in mm. The secondary microstructure parameters L and rc are also calculated in mm. This means that the dimensions of rg, rb, L, & rc are in mm since they show up in the following equations as ratios to give dimensionless numbers. NOTE: The theory is NOT valid for NEW SNOW or WET SNOW. However, we try it for wet snow, since it makes sense for wet snow and is related to the wet snow bond growth (Pressure Sintering) If the snow is new, however, then use LEHNING's law, or any other law ... No, do not use any other law, they don't work. More...
 
static double compSnowViscosity (const std::string &variant, const std::string &i_viscosity_model, const std::string &i_watertransport_model, ElementData &Edata, const mio::Date &date)
 
static double snowViscosityDEFAULT (ElementData &Edata)
 SNOW VISCOSITY (all types of snow) More...
 
static double snowViscosityKOJIMA (const ElementData &Edata)
 SNOW VISCOSITY according to formulation by Kojima. More...
 
static double snowViscosityCALIBRATION (ElementData &Edata, const mio::Date &date)
 Calibrate snow viscosity NOTE This is the test or playground version for calibrating settling. More...
 
static double AirEmissivity (mio::MeteoData &md, const std::string &variant)
 Compute the air emissivity It relies on mio::ILWR_parametrized to get a parametrized ILWR if no measured ILWR is available. This in turn relies either on Brutsaert (clear sky) or Omstedt (cloudiness) or Crawford(cloudiness from ISWR). The air temperature and relative humidity should be available for meanigful results. In any case, the returned air emissivity will be between min_air_emissivity and 1, min_air_emissivity depending on the variant. More...
 
static double AirEmissivity (const double &ilwr, const double &ta, const std::string &variant)
 Compute the air emissivity In any case, the returned air emissivity will be between min_air_emissivity and 1, min_air_emissivity depending on the variant. It returns min_air_emissivity if ta==nodata or ilwr==nodata. More...
 
static double ArrheniusLaw (const double ActEnergy, const double T, const double T_ref)
 Computes an Arrhenius-type temperature dependency. More...
 

Event driven density of new snow

Note
{
These static variables are only defined below, if you want to change them for your purposes you need to do so in the function SnLaws::setStaticData where these parameters are set according to the VARIANT used }
  • event : type of event, currently only event_wind implemented
  • event_wind_lowlim : lower limit for event_wind
  • event_wind_highlim : upper limit for event_wind
static double event_wind_lowlim = 0.0
 

Snow albedo

Computes the density of new snow. The options for SNOW_ALBEDO are:

  • PARAMETERIZED (default is LEHNING_2):
    • LEHNING_[012] : Statistical models of surface snow albedo based on measurements from the Weissfluhjoch study plot (SWin and SWout, K&Z CM21).
    • SCHMUCKI_* : Edgar Schmucki's statistical models (Jan 2014) based on SWin and SWout measurements at 4 stations: Weissfluhjoch study plot (WFJ, 2540 m asl; K&Z CM21), Davos (DAV, 1594 m asl; K&Z CM21), Napf (NAP, 1404 m asl; K&Z CM21), and Payerne (PAY, 490 m asl; K&Z CM21). The variant (*_GSZ) considers grain size as a parameter, while the *_OGS variant replaces grain size with optical equivalent grain size. The user can choose from two average values, ALL_DATA and CUSTOM, the former being the average of all albedo values obtained from all four stations, the latter being the mean of the albedo averages for each single station WFJ, DAV, and PAY; it seems better suited for stations lying below 1500 m asl in Switzerland.
    • NIED : The Japanese version of LEHNING_2
  • MEASURED: Use measured incoming and reflected shortwave radiation fluxes; limited quality checks will be performed. The chosen parameterization will be computed for comparison.
  • FIXED: Use a fixed albedo by assigning ALBEDO-FIXEDVALUE a value between 0.05 and 0.95.
    Parameters
    i_snow_albedotype of albedo computation ()
    i_albedo_parameterization(see above)
    i_albAverageSchmucki
    i_albedo_fixed_valueto use
    Edatacompute albedo for this element
    TssSnow surface temperature (K)
    Mdata
static double compWindPumpingDisplacement (const SnowStation &Xdata)
 Computes the displacement depth in case of ventilation. More...
 
static double compWindPumpingVelocity (const CurrentMeteo &Mdata, const double &d_pump)
 Computes the wind pumping velocity at the surface. More...
 
static double compWindGradientSnow (const ElementData &Edata, double &v_pump)
 Computes the wind gradient near the snow-cover surface. More...
 
static double compSensibleHeatCoefficient (const CurrentMeteo &Mdata, const SnowStation &Xdata, const double &height_of_meteo_values)
 SENSIBLE HEAT EXCHANGE COEFFICIENT (Surface Energy Exchange) More...
 
static double compLatentHeat_Rh (const CurrentMeteo &Mdata, SnowStation &Xdata, const double &height_of_meteo_values)
 Latent heat flux including consideration of soil (one active element) This method uses the Relative Humidity approach: ql = beta*(eA - eS) Latent heat transfer. eA and eS are the vapor pressures of air and snow, respectively. More...
 
static double compLatentHeat (const CurrentMeteo &Mdata, SnowStation &Xdata, const double &height_of_meteo_values)
 LATENT HEAT EXCHANGE (Surface Energy Exchange) David Gustafsson (david.nosp@m.g@kt.nosp@m.h.se) has introduced a resistance approach for latent heat exchange from bare soil as alternative to the relative hyumidity (RH) approach implemented in Snowpack.c (line 473):
An additional resistance, dependent on the relative saturation of the top soil layer, is used to reduce the heat exchange coefficient in the case of evaporation: c = 1/(Ra + Rsoil), where Ra = 1/c as computed above, and Rsoil = 50 [s/m] * field_capacity_soil / theta_soil.
A new switch SnLaws::soil_evaporation is defined in Constants.h to select method. The resistance formulation originates from van den Hurk et al.(2000) "Offline validation of the ERA40 surface scheme": ECMWF Tech.Memo 295.
A difference from the RH method is that the surface vapour pressure is always assumed to be at saturation at the surface. Thus, some unrealistic effects of the RH method in present form are avoided -> the RH approach tend to estimate negative vapour gradient between the surface and the atmosphere, causing large condensation, even if the top soil layer is saturated, and even if the soil surface is warmer than the atmosphere! If a RH method should work in a discretized model, it is important to consider the difference between vapour pressure at the surface and the average of the top soil layer.
The soil resistance is only used for bare soil layers, when TSS >= 0C and eSurf >= eAtm. More...
 
static double compSoilThermalConductivity (const ElementData &Edata, const double &dvdz)
 Heat conduction in soil. The formulation is based on curve fitting, the frozen soil data from Kersten in "Geotechnical Engeneering for Cold Regions" article by Harlan and Nixon, the water influence deduced from deVries and Afgan in "Heat and Mass Transfer in the Biosphere". More...
 
static double compSnowThermalConductivity (const ElementData &Edata, const double &dvdz, const bool &show_warnings=true)
 Heat conduction in snow Actual version: k = C1*[C2 + C3 + C4 + C5]
Adams/Sato model. The following piece of code was programmed by Perry on a warm June afternoon in Birmensdorf. H.U. Gubler was viciously attacking Ammann, saying nasty things about our beloved chef, (even if his hair is a bit funny), in the DAVOSER ZEITUNG. Perry was dreaming about San Diego and .... and Michael was dreamy about rock climbing in Italy with funky, spunky Italian girls, Borolo Bob was busy with his wife on his way to Mallorca – to watch sexy TOPLESS bikini-slip clad GERMAN secretaries on the BEACH. As usual, if this code does not work it is his FAULT .... (Hey, Bob, when are we going to meet ED ADAMS? And remember PLEDGE 7 of Metamorphism.c. The theory behind this piece of code can be found in Bob's ROUGH DRAFT on MICROSTRUCTURE. More...
 
static double compEnhanceWaterVaporTransportSnow (const SnowStation &Xdata, const size_t &i_e)
 Computes the enhancement factor for water vapor transport in wet snow. More...
 
static double compLWRadCoefficient (const double &t_snow, const double &t_atm, const double &e_atm)
 LONGWAVE RADIATION COEFFICIENT This routine might look a bit unusual: Radiation is treated as a CONVECTIVE boundary condition, similar to the sensible and latent heat exchanges. The exchange coefficient, however, is not a constant, dependent on say the wind velocity, rather it is dependent on the temperature. This routine computes the "pseudo" convective heat exchange coefficient for radiation. More...
 
static double parameterizedSnowAlbedo (const std::string &i_albedo, const std::string &i_albedo_parameterization, const std::string &i_albAverageSchmucki, const double &i_hn_albedo_fixedValue, const ElementData &Edata, const double &Tss, const CurrentMeteo &Mdata, const bool &ageAlbedo=true)
 
static void compShortWaveAbsorption (const std::string &i_sw_absorption_scheme, SnowStation &Xdata, const double &I0)
 Helen LeVesconte's Solution to short wave absorption by the snowpack NOTE on fudge_bohren (fb): Larger values increase extinction –> Energy stays on top. More...
 
static void compAdvectiveHeat (SnowStation &Xdata, const double &advective_heat, const double &depth_begin, const double &depth_end)
 Advective Heat Flux injection (mimicking heat advection by infiltrating water?) More...
 

Member Enumeration Documentation

Types of events for computing new snow density.

Enumerator
event_none 
event_wind 

Wind driven deposition of snow (Antarctica)

Defines temperature dependence of snow viscosity.

Enumerator
t_term_arrhenius_critical 

Arrhenius type multiplied by critical function near melting point.

t_term_arrhenius 

pure Arrhenius type w/ excitation energy of ice

t_term_837 

as of revision 837 (from r243)

t_term_stk 

calibration 2009 by Walter Steinkogler (MSc thesis)

Defines which snow viscosity version to use.

Enumerator
visc_dflt 

actual version: revision 961, June 2011 by Fierz

visc_cal 

version under test

visc_ant 

if Antarctica needs adaptation of _new

visc_897 

calibration fall 2010 by Fierz

visc_837 

as of revision 837 (deprecated)

visc_stk 

calibration 2009 by Walter Steinkogler (MSc thesis)

Member Function Documentation

double SnLaws::AirEmissivity ( mio::MeteoData &  md,
const std::string &  variant 
)
static

Compute the air emissivity It relies on mio::ILWR_parametrized to get a parametrized ILWR if no measured ILWR is available. This in turn relies either on Brutsaert (clear sky) or Omstedt (cloudiness) or Crawford(cloudiness from ISWR). The air temperature and relative humidity should be available for meanigful results. In any case, the returned air emissivity will be between min_air_emissivity and 1, min_air_emissivity depending on the variant.

Parameters
mdmeteorological conditions
variantvariant to use for the minimum allowed air emissivity
Note
observed minimum air emissivities:
  • default: 0.55 (from 1993 data at Weissfluhjoch)
  • Antarctica: 0.31 (from 2006/2007 data of Dome C)
Returns
air emissivity in range [MIN_AIR_EMISSIVITY,1.] (1)
double SnLaws::AirEmissivity ( const double &  ilwr,
const double &  ta,
const std::string &  variant 
)
static

Compute the air emissivity In any case, the returned air emissivity will be between min_air_emissivity and 1, min_air_emissivity depending on the variant. It returns min_air_emissivity if ta==nodata or ilwr==nodata.

Parameters
ilwrincoming long wave radiation (W/m^2)
taair temperature (K)
variantvariant to use for the minimum allowed air emissivity
Note
observed minimum air emissivities:
  • default: 0.55 (from 1993 data at Weissfluhjoch)
  • Antarctica: 0.31 (from 2006/2007 data of Dome C)
Returns
air emissivity in range [MIN_AIR_EMISSIVITY,1.] (1)
double SnLaws::ArrheniusLaw ( const double  ActEnergy,
const double  T,
const double  T_ref 
)
static

Computes an Arrhenius-type temperature dependency.

Version
9.11
Parameters
ActEnergy(J mol-1)
Tsnow temperature (K)
T_refa reference temperature (K)
void SnLaws::compAdvectiveHeat ( SnowStation Xdata,
const double &  advective_heat,
const double &  depth_begin,
const double &  depth_end 
)
static

Advective Heat Flux injection (mimicking heat advection by infiltrating water?)

Parameters
XdataThe advective heat flux will be added to Xdata.sw_abs
advective_heatheat flux (positive or negative) to add (W m-3) //NO_HACK: input as W/m2 seems more logical but wrong! It is a source term!
depth_begindepth where to begin injecting the heat flux (in m from the soil surface)
depth_enddepth where to stop injecting the heat flux (in m from the soil surface)
double SnLaws::compEnhanceWaterVaporTransportSnow ( const SnowStation Xdata,
const size_t &  i_e 
)
static

Computes the enhancement factor for water vapor transport in wet snow.

Version
9Y.mm
Parameters
Xdata
i_eElement index to start from
Returns
Enhancement factor
double SnLaws::compLatentHeat ( const CurrentMeteo Mdata,
SnowStation Xdata,
const double &  height_of_meteo_values 
)
static

LATENT HEAT EXCHANGE (Surface Energy Exchange) David Gustafsson (david.nosp@m.g@kt.nosp@m.h.se) has introduced a resistance approach for latent heat exchange from bare soil as alternative to the relative hyumidity (RH) approach implemented in Snowpack.c (line 473):
An additional resistance, dependent on the relative saturation of the top soil layer, is used to reduce the heat exchange coefficient in the case of evaporation: c = 1/(Ra + Rsoil), where Ra = 1/c as computed above, and Rsoil = 50 [s/m] * field_capacity_soil / theta_soil.
A new switch SnLaws::soil_evaporation is defined in Constants.h to select method. The resistance formulation originates from van den Hurk et al.(2000) "Offline validation of the ERA40 surface scheme": ECMWF Tech.Memo 295.
A difference from the RH method is that the surface vapour pressure is always assumed to be at saturation at the surface. Thus, some unrealistic effects of the RH method in present form are avoided -> the RH approach tend to estimate negative vapour gradient between the surface and the atmosphere, causing large condensation, even if the top soil layer is saturated, and even if the soil surface is warmer than the atmosphere! If a RH method should work in a discretized model, it is important to consider the difference between vapour pressure at the surface and the average of the top soil layer.
The soil resistance is only used for bare soil layers, when TSS >= 0C and eSurf >= eAtm.

Parameters
[in]Mdata
[in]Xdata
[in]height_of_meteo_valuesHeight at which meteo parameters are measured
Returns
Latent heat flux (W m-2)
double SnLaws::compLatentHeat_Rh ( const CurrentMeteo Mdata,
SnowStation Xdata,
const double &  height_of_meteo_values 
)
static

Latent heat flux including consideration of soil (one active element) This method uses the Relative Humidity approach: ql = beta*(eA - eS) Latent heat transfer. eA and eS are the vapor pressures of air and snow, respectively.

Version
9Y.mm
Parameters
Mdata
Xdata
height_of_meteo_valuesHeight at which meteo parameters are measured
Returns
Latent heat flux (W m-2)
double SnLaws::compLoadingRateStress ( const std::string &  i_viscosity_model,
ElementData Edata,
const mio::Date &  date 
)
static

Computes the additional stress due to loading rate.

Version
11.06
Parameters
i_viscosity_modelsee compSnowViscosity()
Edata
datecurrent
Returns
Initial stress (Pa); note it is a negative value!
double SnLaws::compLWRadCoefficient ( const double &  t_snow,
const double &  t_atm,
const double &  e_atm 
)
static

LONGWAVE RADIATION COEFFICIENT This routine might look a bit unusual: Radiation is treated as a CONVECTIVE boundary condition, similar to the sensible and latent heat exchanges. The exchange coefficient, however, is not a constant, dependent on say the wind velocity, rather it is dependent on the temperature. This routine computes the "pseudo" convective heat exchange coefficient for radiation.

Version
9Y.mm
Parameters
t_snowSnow surface temperature (K)
t_atmTemperature of the atmosphere, i.e., air (K)
e_atmEmissivity of the atmosphere (1)
Returns
LW radiation coefficient (W m-2 K-1)
double SnLaws::compNewSnowDensity ( const std::string &  i_hn_density,
const std::string &  i_hn_density_parameterization,
const double &  i_hn_density_fixedValue,
const CurrentMeteo Mdata,
const SnowStation Xdata,
const double &  tss,
const std::string &  variant 
)
static
double SnLaws::compSensibleHeatCoefficient ( const CurrentMeteo Mdata,
const SnowStation Xdata,
const double &  height_of_meteo_values 
)
static

SENSIBLE HEAT EXCHANGE COEFFICIENT (Surface Energy Exchange)

Version
9Y.mm
Parameters
Mdata
Xdata
height_of_meteo_valuesHeight at which meteo parameters are measured
Returns
Exchange coefficient for sensible heat (1)
void SnLaws::compShortWaveAbsorption ( const std::string &  i_sw_absorption_scheme,
SnowStation Xdata,
const double &  I0 
)
static

Helen LeVesconte's Solution to short wave absorption by the snowpack NOTE on fudge_bohren (fb): Larger values increase extinction –> Energy stays on top.

Parameters
i_sw_absorption_schemeuse multi band or single band approach
Xdata
I0net shortwave radiation (W m-2)
double SnLaws::compSnowThermalConductivity ( const ElementData Edata,
const double &  dvdz,
const bool &  show_warnings = true 
)
static

Heat conduction in snow Actual version: k = C1*[C2 + C3 + C4 + C5]
Adams/Sato model. The following piece of code was programmed by Perry on a warm June afternoon in Birmensdorf. H.U. Gubler was viciously attacking Ammann, saying nasty things about our beloved chef, (even if his hair is a bit funny), in the DAVOSER ZEITUNG. Perry was dreaming about San Diego and .... and Michael was dreamy about rock climbing in Italy with funky, spunky Italian girls, Borolo Bob was busy with his wife on his way to Mallorca – to watch sexy TOPLESS bikini-slip clad GERMAN secretaries on the BEACH. As usual, if this code does not work it is his FAULT .... (Hey, Bob, when are we going to meet ED ADAMS? And remember PLEDGE 7 of Metamorphism.c. The theory behind this piece of code can be found in Bob's ROUGH DRAFT on MICROSTRUCTURE.

Much much later, Michael re-programmed this code and introduced the effect of liquid water. He extended the Adams/Sato model and hoped that he would not loose contact with Keegan, even he was not going to fulfill the explicit wishes of his Grandma. The model was now being used from Finland to the US. We will also conquer the southern hemis- sphere.

Version
8.10 (??)
Parameters
Edata
dvdzWind velocity gradient (s-1)
show_warningsIf warnings are produced, show them (default=true)
Returns
Thermal conductivity of snow (W K-1 m-1)
double SnLaws::compSnowViscosity ( const std::string &  variant,
const std::string &  i_viscosity_model,
const std::string &  i_watertransport_model,
ElementData Edata,
const mio::Date &  date 
)
static
double SnLaws::compSoilThermalConductivity ( const ElementData Edata,
const double &  dvdz 
)
static

Heat conduction in soil. The formulation is based on curve fitting, the frozen soil data from Kersten in "Geotechnical Engeneering for Cold Regions" article by Harlan and Nixon, the water influence deduced from deVries and Afgan in "Heat and Mass Transfer in the Biosphere".

Version
11.03: thermal conductivity made temperature dependent.
Parameters
Edata
dvdzWind velocity gradient (s-1)
Returns
Soil thermal conductivity (W K-1 m-1)
double SnLaws::compWindGradientSnow ( const ElementData Edata,
double &  v_pump 
)
static

Computes the wind gradient near the snow-cover surface.

Parameters
Edata
v_pumpWind velocity at element depth (m s-1)
Returns
Wind pumping velocity gradient (s-1)
double SnLaws::compWindPumpingDisplacement ( const SnowStation Xdata)
static

Computes the displacement depth in case of ventilation.

Version
10.01
Parameters
Xdata
Returns
Displacement depth (m)
double SnLaws::compWindPumpingVelocity ( const CurrentMeteo Mdata,
const double &  d_pump 
)
static

Computes the wind pumping velocity at the surface.

Version
10.01
Parameters
Mdata
d_pumpDisplacement depth (m)
Returns
Wind pumping velocity (m s-1)
static double SnLaws::conductivity_air ( void  )
static
double SnLaws::conductivity_ice ( const double &  Temperature)
static
double SnLaws::conductivity_water ( const double &  Temperature)
static
double SnLaws::loadingRateStressCALIBRATION ( ElementData Edata,
const mio::Date &  date 
)
static
double SnLaws::loadingRateStressDEFAULT ( ElementData Edata,
const mio::Date &  date 
)
static
double SnLaws::NewSnowViscosityLehning ( const ElementData Edata)
static

NEW SNOW VISCOSITY (dendritic snow, i.e., dd > 0.)
Actual version : ml_lw_VS_Lehning from r7.7
This is Michael's viscosity routine, which is not a function of micro-structure, but which is nonetheless pretty important because it is numerically STABLE and does predict decent settling rates, sometimes a bit too high. This routine was (is) used for NEW or WET snow.

Version
9Y.mm
Returns
Viscosity of new snow (Pa s)
double SnLaws::parameterizedSnowAlbedo ( const std::string &  i_albedo,
const std::string &  i_albedo_parameterization,
const std::string &  i_albAverageSchmucki,
const double &  i_hn_albedo_fixedValue,
const ElementData Edata,
const double &  Tss,
const CurrentMeteo Mdata,
const bool &  ageAlbedo = true 
)
static
double SnLaws::snowViscosityCALIBRATION ( ElementData Edata,
const mio::Date &  date 
)
static

Calibrate snow viscosity NOTE This is the test or playground version for calibrating settling.

Version
10.11
Parameters
Edata
datecurrent
Returns
Snow viscosity (Pa s)
double SnLaws::snowViscosityDEFAULT ( ElementData Edata)
static

SNOW VISCOSITY (all types of snow)

double SnLaws::snowViscosityFudgeCALIBRATION ( const ElementData Edata,
const mio::Date &  date 
)
static

To calibrate the fudge factor for viscosity.

Note
This is the fudge playground for calibrations used in SnowViscosityCALIBRATION()
Version
10.11
Parameters
Edata
datecurrent date
Returns
Fudge factor for snow viscosity
double SnLaws::snowViscosityFudgeDEFAULT ( const ElementData Edata)
static

Determines the fudge factor for viscosity
This fudge factor takes into account bond-ice imperfections and the effect of liquid water.

Version
11.06
Parameters
Edata
Returns
Fudge factor for snow viscosity
double SnLaws::snowViscosityKOJIMA ( const ElementData Edata)
static

SNOW VISCOSITY according to formulation by Kojima.

Version
9.10
Parameters
Edata
Returns
Snow viscosity (Pa s)
double SnLaws::SnowViscosityMSU ( const ElementData Edata)
static

MONTANA snow viscosity (non-dendritic snow, i.e. if dd=0.); From bb_lw_VS_Montana() (Laws.c r7.7). Bob Brown's MICRO-STRUCTURE law. Clearly the BEST law we have right now but also the most UNSTABLE: note that the viscosity is not only a function of the grain dimensions, but also a function of the overburden stress. A series of equations that collectively give the viscosity Vis = S/eDot. The microstructure parameters rb and rg are obtained through Edata pointer and are in mm. The secondary microstructure parameters L and rc are also calculated in mm. This means that the dimensions of rg, rb, L, & rc are in mm since they show up in the following equations as ratios to give dimensionless numbers. NOTE: The theory is NOT valid for NEW SNOW or WET SNOW. However, we try it for wet snow, since it makes sense for wet snow and is related to the wet snow bond growth (Pressure Sintering) If the snow is new, however, then use LEHNING's law, or any other law ... No, do not use any other law, they don't work.

Author
Guess!
Version
Antediluvienne
Parameters
*Edata
Returns
Snow viscosity Montana style
double SnLaws::snowViscosityTemperatureTerm ( const double &  Te)
static

Computes the temperature term of viscosity.

Version
11.06
Parameters
TeElement temperature (K)
Returns
Temperature term of snow viscosity

Member Data Documentation

double SnLaws::event_wind_lowlim = 0.0
static
const double SnLaws::field_capacity_soil = 0.15
static

Field capacity of the soil (1). Above this levels, water begins to drain.

const bool SnLaws::jordy_new_snow = false
static

To use J. Hendrikx's parameterization for wind speeds > 2.9 m s-1.

double SnLaws::max_hn_density = 250.0
static
double SnLaws::min_hn_density = 30.
static
const double SnLaws::smallest_viscosity = 1.0e6
static

Defines the smallest allowable viscosity (Pa s) that a viscosity law will return
Value is DAMM SMALL – smaller values than this are pretty unrealistic.

const bool SnLaws::wind_pump = true
static

Switch on or off wind pumping in snow.

const bool SnLaws::wind_pump_soil = true
static

Switch on or off wind pumping in soil.


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