19 #ifndef _SHALLOWSTRESSBALANCE_H_
20 #define _SHALLOWSTRESSBALANCE_H_
22 #include "pism/util/Component.hh"
23 #include "pism/util/array/Vector.hh"
24 #include "pism/util/EnthalpyConverter.hh"
32 class IceBasalResistancePlasticLaw;
34 namespace stressbalance {
65 std::shared_ptr<const rheology::FlowLaw>
flow_law()
const;
99 virtual void update(
const Inputs &inputs,
bool full_update);
108 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.
"Cell type" mask. Adds convenience methods to array::Scalar.
PrescribedSliding(std::shared_ptr< const Grid > g)
virtual void update(const Inputs &inputs, bool full_update)
Update the trivial shallow stress balance object.
virtual ~PrescribedSliding()=default
const array::Vector1 & velocity() const
Get the thickness-advective 2D velocity.
void compute_basal_frictional_heating(const array::Vector &velocity, const array::Scalar &tauc, const array::CellType &mask, array::Scalar &result) const
Compute the basal frictional heating.
array::Scalar 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
ShallowStressBalance(std::shared_ptr< const Grid > g)
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
virtual ~ShallowStressBalance()
virtual std::string stdout_report() const
Produce a report string for the standard output.
const array::Scalar & basal_frictional_heating()
Get the basal frictional heating (for the adaptive energy time-stepping).
EnthalpyConverter::Ptr m_EC
EnthalpyConverter::Ptr enthalpy_converter() const
array::Vector2 m_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(std::shared_ptr< const Grid > g)
virtual ~ZeroSliding()=default
Returns zero velocity field, zero friction heating, and zero for D^2.
std::map< std::string, Diagnostic::Ptr > DiagnosticList