19 #ifndef _SHALLOWSTRESSBALANCE_H_
20 #define _SHALLOWSTRESSBALANCE_H_
22 #include "pism/util/Component.hh"
23 #include "pism/util/iceModelVec.hh"
24 #include "pism/util/IceModelVec2V.hh"
25 #include "pism/util/EnthalpyConverter.hh"
33 class IceBasalResistancePlasticLaw;
34 class IceModelVec2CellType;
36 namespace stressbalance {
67 std::shared_ptr<const rheology::FlowLaw>
flow_law()
const;
101 virtual void update(
const Inputs &inputs,
bool full_update);
110 virtual void update(
const Inputs &inputs,
bool full_update);
A class defining a common interface for most PISM sub-models.
std::shared_ptr< EnthalpyConverter > Ptr
Class containing physical constants and the constitutive relation describing till for SSA.
std::shared_ptr< const IceGrid > ConstPtr
"Cell type" mask. Adds convenience methods to IceModelVec2Int.
PrescribedSliding(IceGrid::ConstPtr g)
virtual void update(const Inputs &inputs, bool full_update)
Update the trivial shallow stress balance object.
virtual ~PrescribedSliding()=default
IceModelVec2S m_basal_frictional_heating
std::shared_ptr< const rheology::FlowLaw > flow_law() const
virtual DiagnosticList diagnostics_impl() const
double m_e_factor
flow enhancement factor
double flow_enhancement_factor() const
std::shared_ptr< rheology::FlowLaw > m_flow_law
IceBasalResistancePlasticLaw * m_basal_sliding_law
const IceBasalResistancePlasticLaw * sliding_law() const
virtual void update(const Inputs &inputs, bool full_update)=0
void compute_basal_frictional_heating(const IceModelVec2V &velocity, const IceModelVec2S &tauc, const IceModelVec2CellType &mask, IceModelVec2S &result) const
Compute the basal frictional heating.
virtual ~ShallowStressBalance()
virtual std::string stdout_report() const
Produce a report string for the standard output.
ShallowStressBalance(IceGrid::ConstPtr g)
const IceModelVec2S & basal_frictional_heating()
Get the basal frictional heating (for the adaptive energy time-stepping).
EnthalpyConverter::Ptr m_EC
EnthalpyConverter::Ptr enthalpy_converter() const
const IceModelVec2V & velocity() const
Get the thickness-advective 2D velocity.
Shallow stress balance (such as the SSA).
virtual void update(const Inputs &inputs, bool full_update)
Update the trivial shallow stress balance object.
ZeroSliding(IceGrid::ConstPtr g)
virtual ~ZeroSliding()=default
Returns zero velocity field, zero friction heating, and zero for D^2.
std::map< std::string, Diagnostic::Ptr > DiagnosticList