SNOWPACK  20230213.7108bd0
Go to the documentation of this file.
1 /*
2  * SNOWPACK stand-alone
3  *
4  * Copyright WSL Institute for Snow and Avalanche Research SLF, DAVOS, SWITZERLAND
5 */
6 /* This file is part of Snowpack.
7  Snowpack is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
12  Snowpack is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  GNU General Public License for more details.
17  You should have received a copy of the GNU General Public License
18  along with Snowpack. If not, see <>.
19 */
20 #ifndef STABILITY_H
21 #define STABILITY_H
24 #include <snowpack/DataClasses.h>
26 #include <map>
27 #include <string>
29 class InstabilityData;
31 typedef double (*StabMemFn)(const ElementData&, const double&);
32 typedef bool (*StabFnShearStrength)(const double&, const double&, const mio::Date&,
49 class Stability {
50  public:
51  Stability (const SnowpackConfig& i_cfg, const bool& i_classify_profile=false);
53  void checkStability(const CurrentMeteo& Mdata, SnowStation& Xdata);
56  static const double min_depth_ssi, skier_depth, min_thick_crust;
57  static const int sh_mod, prof_classi;
58  static const size_t nmax_lemon;
60  private:
61  void initStability(SnowStation& Xdata);
62  static double initStructuralStabilityIndex(const ElementData& Edata_lower, const ElementData& Edata_upper,
63  const double& Sk, unsigned short &n_lemon);
65  static void findWeakLayer(const double& Pk, std::vector<unsigned short>& n_lemon, SnowStation& Xdata, double &Swl_ssi, double &Swl_Sk38, size_t &Swl_lemon);
67  static const bool __init;
68  static bool initStaticData();
69  static std::map<std::string, StabMemFn> mapHandHardness;
70  static std::map<std::string, StabFnShearStrength> mapShearStrength;
72  std::string strength_model, hardness_parameterization;
73  double hoar_density_buried;
74  bool plastic;
75  bool classify_profile, multi_layer_sk38, RTA_ssi;
76 };
78 #endif //End of Stability.h
bool(* StabFnShearStrength)(const double &, const double &, const mio::Date &, ElementData &, NodeData &, StabilityData &)
Definition: Stability.h:32
double(* StabMemFn)(const ElementData &, const double &)
Definition: Stability.h:31
CurrentMeteo is the class of interpolated meteo data for the current calculation time step It contai...
Definition: DataClasses.h:83
ELEMENT DATA used as a pointer in the SnowStation structure NOTE on M below: this is the mass of an e...
Definition: DataClasses.h:285
NODAL DATA used as a pointer in the SnowStation structure.
Definition: DataClasses.h:392
Definition: DataClasses.h:604
Definition: SnowpackConfig.h:28
Layer shear strength evaluation parameters. This class contains layer properties useful for the shear...
Definition: StabilityAlgorithms.h:32
This class contains the stability routines for the snowpack model. Stability is found for each LAYER ...
Definition: Stability.h:49
static const double ground_rough
The first GROUND_ROUGH m of snow will not be unstable due to ground roughness.
Definition: Stability.h:55
static const int sh_mod
Defines regression model for surface hoar shear strength.
Definition: Stability.h:57
static const double min_depth_ssi
MIN_DEPTH_SSI m of snow must be left after discarding penetration depth.
Definition: Stability.h:56
static const double minimum_slab
Minimum slab thickness for natural and deformation stability index (m)
Definition: Stability.h:55
static const size_t nmax_lemon
Maximum number of structural instabilities looked at ("lemons")
Definition: Stability.h:58
void checkStability(const CurrentMeteo &Mdata, SnowStation &Xdata)
The stability information is based on a very empirical principle. First a distinction is made between...
static const int prof_classi
Defines classification scheme for snow profiles.
Definition: Stability.h:57
Stability(const SnowpackConfig &i_cfg, const bool &i_classify_profile=false)
static const double max_stability
Upper stability limit.
Definition: Stability.h:55
static const double skier_depth
Skiers will not trigger failures SKIER_DEPTH m below penetration depth.
Definition: Stability.h:56
static const double min_thick_crust
Minimum thickness for a supporting melt-freeze crust (perp to slope, in m)
Definition: Stability.h:56
static const double psi_ref
Reference slope angle.
Definition: Stability.h:55