19#ifndef __flowlaw_factory
20#define __flowlaw_factory
26#include "pism/rheology/FlowLaw.hh"
27#include "pism/util/Config.hh"
32#define ICE_ISOTHERMAL_GLEN "isothermal_glen"
34#define ICE_GPBLD "gpbld"
35#define ICE_HOOKE "hooke"
37#define ICE_GOLDSBY_KOHLSTEDT "gk"
38#define ICE_ARRWARM "arrwarm"
45 std::shared_ptr<EnthalpyConverter> my_EC);
48 void remove(
const std::string &name);
49 std::shared_ptr<FlowLaw>
create(
const std::string &type_name,
double exponent);
53 std::shared_ptr<EnthalpyConverter>
m_EC;
A class for storing and accessing PISM configuration flags and parameters.
std::shared_ptr< const Config > m_config
std::map< std::string, FlowLawCreator > m_flow_laws
~FlowLawFactory()=default
void remove(const std::string &name)
std::shared_ptr< FlowLaw > create(const std::string &type_name, double exponent)
std::shared_ptr< EnthalpyConverter > m_EC
void add(const std::string &name, FlowLawCreator)
FlowLaw *(* FlowLawCreator)(double, const Config &, std::shared_ptr< EnthalpyConverter >)