22 #include "pism/stressbalance/ShallowStressBalance.hh"
23 #include "pism/util/array/CellType.hh"
29 namespace stressbalance {
77 typedef SSA * (*SSAFactory)(std::shared_ptr<const Grid>);
112 SSA(std::shared_ptr<const Grid>
g);
117 virtual void update(
const Inputs &inputs,
bool full_update);
149 std::shared_ptr<petsc::DM>
m_da;
A class for storing and accessing PISM configuration flags and parameters.
High-level PISM I/O class.
double get_notional_strength() const
Returns strength = (viscosity times thickness).
void set_min_thickness(double my_min_thickness)
Set minimum thickness to trigger use of extension.
SSAStrengthExtension(const Config &c)
double get_min_thickness() const
Returns minimum thickness to trigger use of extension.
void set_notional_strength(double my_nuH)
Set strength = (viscosity times thickness).
Gives an extension coefficient to maintain ellipticity of SSA where ice is thin.
void set_initial_guess(const array::Vector &guess)
Set the initial guess of the SSA velocity.
virtual void update(const Inputs &inputs, bool full_update)
Update the SSA solution.
virtual DiagnosticList diagnostics_impl() const
virtual void solve(const Inputs &inputs)=0
SSA(std::shared_ptr< const Grid > g)
virtual void compute_driving_stress(const array::Scalar &ice_thickness, const array::Scalar1 &surface_elevation, const array::CellType1 &cell_type, const array::Scalar1 *no_model_mask, array::Vector &result) const
Compute the gravitational driving stress.
array::Vector m_velocity_global
void extrapolate_velocity(const array::CellType1 &cell_type, array::Vector1 &velocity) const
virtual void define_model_state_impl(const File &output) const
The default (empty implementation).
SSAStrengthExtension * strength_extension
virtual std::string stdout_report() const
Produce a report string for the standard output.
std::shared_ptr< petsc::DM > m_da
const array::Vector & driving_stress() const
virtual void write_model_state_impl(const File &output) const
The default (empty implementation).
virtual void init_impl()
Initialize a generic regular-grid SSA solver.
const array::Vector1 & velocity() const
Get the thickness-advective 2D velocity.
Shallow stress balance (such as the SSA).
std::map< std::string, Diagnostic::Ptr > DiagnosticList