|
static double | conductivity_air (void) |
|
|
Based on master thesis of Tobias Hipp, who used relationships by Ling & Zhang (2004).
- Version
- 11.03
- Parameters
-
Temperature | Temperature (K) |
- Returns
- Thermal conductivity of ice
|
static double | conductivity_ice (const double &Temperature) |
|
|
Based on master thesis of Tobias Hipp, who used relationships by Ling & Zhang (2004).
- Version
- 11.03
- Parameters
-
Temperature | Temperature (K) |
- Returns
- Thermal conductivity of water
|
static double | conductivity_water (const double &Temperature) |
|
|
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_albedo | type of albedo computation () |
i_albedo_parameterization | (see above) |
i_albAverageSchmucki | |
i_albedo_fixed_value | to use |
Edata | compute albedo for this element |
Tss | Snow 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 std::string soil_evaporation, 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 std::string soil_evaporation, 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 key SNOWPACK_ADVANCED::soil_evaporation is defined 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, const std::string &soil_thermal_conductivity) |
| 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 | soilVaporDiffusivity (const ElementData &Edata) |
| Water vapor diffusion coefficient in soil. The formulation is based on Saito et al., 2006 "Numerical analysis of coupled water vapor
and heat transport in the vadose zone", see eq. [14] and [15]. It is defined as the product of the tortuosity factor (-) as defined by Millington and Quirck (1961), the air-filled porosity (m3 m-3) and the diffusivity of water vapor in air (m2 s-1). More...
|
|
static double | compEnhanceWaterVaporTransportSoil (const ElementData &Edata, const double &clay_fraction) |
| Computes the enhancement factor for water vapor transport in soil. Derived from Cass et al., 1984 "Enhancement of thermal water vapor diffusion in soil", see eq. [19]. Describe the increase in thermal vapor flux as a result of liquid islands and increased temperature gradients in the air phase. More...
|
|
static double | compSoilThermalVaporConductivity (const ElementData &Edata_bot, const ElementData &Edata_top, const double &Te_bot, const double &Te_top, const double &clay_fraction) |
| Computes the soil THERMAL vapor hydraulic conductivity. Requires the use of RE to determine pressure head (Edata.h) and saturated water content (theta_s). The THERMAL vapor hydraulic conductivy formulation is based on Saito et al., 2006 "Numerical analysis of coupled water, vapor, and heat transport in the vadose zone", see eq. [13]. It is used to determine the flux density of water vapor in soil due to THERMAL gradient: q_vT = -Kvapor_T*gradT. The enhancement factor is used to describe the increase in the thermal vapor flux as a result of liquid islands and increased temperature gradients in the air phase (Philip and de Vries, 1957) The relative humidity is calculated from the pressure head (h), using a thermodynamic relationship between liquid water and water vapour in soil pores (Philip and de Vries, 1957) More...
|
|
static double | compSoilIsothermalVaporConductivity (const ElementData &Edata_bot, const ElementData &Edata_top, const double &Te_bot, const double &Te_top, const double &T_node) |
| Computes the soil ISOTHERMAL vapor hydraulic conductivity. The ISOTHERMAL vapor hydraulic conductivy formulation is based on Saito et al., 2006 "Numerical analysis of coupled water, vapor, and heat transport in the vadose zone", see eq. [12]. It is used to determine the flux density of water vapor in soil due to MOISTURE gradient: q_vh = -Kvapor_h*gradH. 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_albNIED_av, 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...
|
|
static double | newSnowDensityPara (const std::string &i_hn_model, double TA, double TSS, double RH, double VW, double HH) |
| Parameterized new-snow density. More...
|
|
static double | newSnowDensityEvent (const std::string &variant, const SnLaws::EventType &i_event, const CurrentMeteo &Mdata) |
| Event driven new-snow density. More...
|
|
static double | newSnowDensityHendrikx (const double ta, const double tss, const double rh, const double vw) |
| Jordy Hendrikx' new snow density parameterization for strong winds (> 2.9 m s-1) More...
|
|
|
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_density | type of density computation |
i_hn_density_parameterization | to use |
i_hn_density_fixedValue | to use |
Mdata | Meteorological input |
Xdata | Snow cover data |
tss | Snow surface temperature (K) |
variant | which 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 The modifications for POLAR variant are described in: Steger CR, Reijmer CH, van den Broeke MR, Wever N, Forster RR, Koenig LS, Kuipers Munneke P, Lehning M, Lhermitte S, Ligtenberg SRM, Miège C and Noël BPY (2017) Firn Meltwater Retention on the Greenland Ice Sheet: A Model Comparison. Front. Earth Sci. 5:3. doi: 10.3389/feart.2017.00003: "To improve the agreement with observations, the tunable factors in the snow
viscosity scheme (Groot Zwaaftink et al., 2013) for the activation energy of snow Qs and the critical exponent
β are set to 16,080 J mol−1 and 0.3, respectively.". 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...
|
|
|
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
-
variant | see VARIANT |
i_viscosity_model | to use |
Edata | |
date | current |
|
static TempDependence | t_term = SnLaws::t_term_arrhenius_critical |
|
static ViscosityVersion | visc = SnLaws::visc_cal |
|
static double | visc_ice_fudge = 1. |
|
static double | visc_sp_fudge = 1. |
|
static double | visc_water_fudge = 0. |
|
static bool | setfix = false |
|
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, const bool &max_limit=true) |
| 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...
|
|