20 #include "pism/rheology/GoldsbyKohlstedt.hh"
33 m_name =
"Goldsby-Kohlstedt / Paterson-Budd (hybrid)";
72 double pressure,
double grainsize)
const {
73 double temp =
m_EC->temperature(E, pressure);
83 T_pa =
m_EC->pressure_adjusted_temperature(enthalpy, pressure),
90 throw std::runtime_error(
"double GoldsbyKohlstedt::softness is not implemented");
103 double pressure,
double gs)
const {
104 double eps_diff, eps_disl, eps_basal, eps_gbs, diff_D_b;
106 if (fabs(stress) < 1e-10) {
119 (diff_D_v + M_PI *
m_diff_delta * diff_D_b / gs) / (RT*(gs*gs));
137 return eps_diff + eps_disl + (eps_basal * eps_gbs) / (eps_basal + eps_gbs);
145 double gs, eps_diff, eps_disl, eps_basal, eps_gbs, diff_D_b;
148 if (fabs(stress) < 1e-10) {
164 (diff_D_v + M_PI *
m_diff_delta * diff_D_b / gs) / (RT*(gs*gs));
186 p.
eps_total=eps_diff + eps_disl + (eps_basal * eps_gbs) / (eps_basal + eps_gbs);
195 m_name =
"Goldsby-Kohlstedt / Paterson-Budd (hybrid, simplified)";
205 double eps_disl, eps_basal, eps_gbs;
207 if (fabs(stress) < 1e-10) {
232 return eps_disl + (eps_basal * eps_gbs) / (eps_basal + eps_gbs);
A class for storing and accessing PISM configuration flags and parameters.
std::shared_ptr< EnthalpyConverter > Ptr
double softness_paterson_budd(double T_pa) const
Return the softness parameter A(T) for a given temperature T.
double m_standard_gravity
acceleration due to gravity
double m_hardness_power
; used to compute hardness
double m_beta_CC_grad
Clausius-Clapeyron gradient.
double m_ideal_gas_constant
ideal gas constant
EnthalpyConverter::Ptr m_EC
virtual double flow_from_temp(double stress, double temp, double pressure, double gs) const
double m_d_grain_size_stripped
GoldsbyKohlstedtStripped(const std::string &prefix, const Config &config, EnthalpyConverter::Ptr EC)
virtual double flow_impl(double stress, double E, double pressure, double grainsize) const
double hardness_impl(double E, double p) const
double softness_impl(double E, double p) const __attribute__((noreturn))
GKparts flowParts(double stress, double temp, double pressure) const
virtual double flow_from_temp(double stress, double temp, double pressure, double gs) const
GoldsbyKohlstedt(const std::string &prefix, const Config &config, EnthalpyConverter::Ptr EC)
A hybrid of Goldsby-Kohlstedt (2001) ice (constitutive form) and Paterson-Budd (1982)-Glen (viscosity...