21 #include "pism/rheology/FlowLawFactory.hh"
22 #include "pism/util/ConfigInterface.hh"
23 #include "pism/util/error_handling.hh"
25 #include "pism/rheology/IsothermalGlen.hh"
26 #include "pism/rheology/PatersonBudd.hh"
27 #include "pism/rheology/GPBLD.hh"
28 #include "pism/rheology/Hooke.hh"
29 #include "pism/rheology/PatersonBuddCold.hh"
30 #include "pism/rheology/PatersonBuddWarm.hh"
31 #include "pism/rheology/GoldsbyKohlstedt.hh"
48 return new (
GPBLD)(pre, config, EC);
53 return new (
Hooke)(pre, config, EC);
74 : m_config(conf), m_EC(my_EC) {
78 assert(not prefix.empty());
115 "but we shouldn't be able to get here anyway",
#define ICE_GOLDSBY_KOHLSTEDT
#define ICE_ISOTHERMAL_GLEN
std::shared_ptr< const Config > ConstPtr
A class for storing and accessing PISM configuration flags and parameters.
std::shared_ptr< EnthalpyConverter > Ptr
static RuntimeError formatted(const ErrorLocation &location, const char format[],...) __attribute__((format(printf
build a RuntimeError with a formatted message
std::map< std::string, FlowLawCreator > m_flow_laws
std::shared_ptr< FlowLaw > create()
void remove(const std::string &name)
const Config::ConstPtr m_config
FlowLawFactory(const std::string &prefix, Config::ConstPtr conf, EnthalpyConverter::Ptr my_EC)
EnthalpyConverter::Ptr m_EC
void set_default(const std::string &name)
void add(const std::string &name, FlowLawCreator)
Glen (1955) and Paterson-Budd (1982) flow law with additional water fraction factor from Lliboutry & ...
A hybrid of Goldsby-Kohlstedt (2001) ice (constitutive form) and Paterson-Budd (1982)-Glen (viscosity...
Isothermal Glen ice allowing extra customization.
Cold case of Paterson-Budd.
Warm case of Paterson-Budd.
Derived class of FlowLaw for Paterson-Budd (1982)-Glen ice.
#define PISM_ERROR_LOCATION
FlowLaw * create_gpbld(const std::string &pre, const Config &config, EnthalpyConverter::Ptr EC)
FlowLaw *(* FlowLawCreator)(const std::string &, const Config &, EnthalpyConverter::Ptr)
FlowLaw * create_hooke(const std::string &pre, const Config &config, EnthalpyConverter::Ptr EC)
FlowLaw * create_arr(const std::string &pre, const Config &config, EnthalpyConverter::Ptr EC)
FlowLaw * create_isothermal_glen(const std::string &pre, const Config &config, EnthalpyConverter::Ptr EC)
FlowLaw * create_goldsby_kohlstedt(const std::string &pre, const Config &config, EnthalpyConverter::Ptr EC)
FlowLaw * create_pb(const std::string &pre, const Config &config, EnthalpyConverter::Ptr EC)
FlowLaw * create_arrwarm(const std::string &pre, const Config &config, EnthalpyConverter::Ptr EC)