URI:
       tMohrCoulombPointwise.hh - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
  HTML git clone git://src.adamsgaard.dk/pism
   DIR Log
   DIR Files
   DIR Refs
   DIR LICENSE
       ---
       tMohrCoulombPointwise.hh (2884B)
       ---
            1 /* Copyright (C) 2019 PISM Authors
            2  *
            3  * This file is part of PISM.
            4  *
            5  * PISM is free software; you can redistribute it and/or modify it under the
            6  * terms of the GNU General Public License as published by the Free Software
            7  * Foundation; either version 3 of the License, or (at your option) any later
            8  * version.
            9  *
           10  * PISM is distributed in the hope that it will be useful, but WITHOUT ANY
           11  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
           12  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
           13  * details.
           14  *
           15  * You should have received a copy of the GNU General Public License
           16  * along with PISM; if not, write to the Free Software
           17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
           18  */
           19 #ifndef MOHRCOULOMBPOINTWISE_H
           20 #define MOHRCOULOMBPOINTWISE_H
           21 
           22 #include "pism/util/Config.hh"
           23 
           24 namespace pism {
           25 
           26 /*!
           27  * Implementation of the Mohr-Coulomb basal yield stress model *at a point*.
           28  */
           29 class MohrCoulombPointwise {
           30 public:
           31   MohrCoulombPointwise(Config::ConstPtr config);
           32 
           33   /*!
           34    * Compute basal yield stress
           35    *
           36    * @param[in] delta fraction of overburden pressure
           37    * @param[in] P_overburden overburden pressure (Pa)
           38    * @param[in] water_thickness till water thickness (m)
           39    * @param[in] phi till friction angle (degrees)
           40    *
           41    * returns basal yield stress in Pascal
           42    */
           43   double yield_stress(double delta,
           44                       double P_overburden,
           45                       double water_thickness,
           46                       double phi) const;
           47 
           48   /*!
           49    * Inverse of `yield_stress()`.
           50    *
           51    * @param[in] delta fraction of overburden pressure
           52    * @param[in] P_overburden overburden pressure (Pa)
           53    * @param[in] water_thickness till water thickness
           54    * @param[in] yield_stress basal yield stress (Pa)
           55    *
           56    * returns till friction angle in degrees
           57    */
           58   double till_friction_angle(double delta,
           59                              double P_overburden,
           60                              double water_thickness,
           61                              double yield_stress) const;
           62 
           63   /*!
           64    * Compute effective pressure on till
           65    *
           66    * Used in `yield_stress()` and `till_friction_angle()`.
           67    *
           68    * @param[in] delta fraction of overburden pressure
           69    * @param[in] P_overburden overburden pressure (Pa)
           70    * @param[in] water_thickness till water thickness
           71    */
           72   double effective_pressure(double delta,
           73                             double P_overburden,
           74                             double water_thickness) const;
           75 private:
           76   //! Maximum till water thickness
           77   double m_W_till_max;
           78   //! Cohesion of till
           79   double m_till_cohesion;
           80   //! Reference effective pressure
           81   double m_reference_effective_pressure;
           82   //! Reference void ratio
           83   double m_reference_void_ratio;
           84   //! Coefficient of compressibility of till
           85   double m_compressibility_coefficient;
           86 };
           87 
           88 } // end of namespace pism
           89 
           90 
           91 #endif /* MOHRCOULOMBPOINTWISE_H */