Loading [MathJax]/extensions/TeX/AMSmath.js
PISM, A Parallel Ice Sheet Model 2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
pism::stressbalance::SSA Class Referenceabstract

PISM's SSA solver. More...

#include <SSA.hh>

+ Inheritance diagram for pism::stressbalance::SSA:

Public Member Functions

 SSA (std::shared_ptr< const Grid > g)
 
virtual ~SSA ()
 
virtual void update (const Inputs &inputs, bool full_update)
 Update the SSA solution.
 
virtual std::string stdout_report () const
 Produce a report string for the standard output.
 
- Public Member Functions inherited from pism::stressbalance::ShallowStressBalance
 ShallowStressBalance (std::shared_ptr< const Grid > g)
 
virtual ~ShallowStressBalance ()
 
void init ()
 
const array::Vector1velocity () const
 Get the thickness-advective 2D velocity.
 
const array::Scalarbasal_frictional_heating ()
 Get the basal frictional heating (for the adaptive energy time-stepping).
 
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.
 
std::shared_ptr< const rheology::FlowLawflow_law () const
 
EnthalpyConverter::Ptr enthalpy_converter () const
 
const IceBasalResistancePlasticLawsliding_law () const
 
double flow_enhancement_factor () const
 
- Public Member Functions inherited from pism::Component
 Component (std::shared_ptr< const Grid > grid)
 
virtual ~Component ()=default
 
DiagnosticList diagnostics () const
 
TSDiagnosticList ts_diagnostics () const
 
std::shared_ptr< const Gridgrid () const
 
const Timetime () const
 
const Profilingprofiling () const
 
void define_model_state (const File &output) const
 Define model state variables in an output file.
 
void write_model_state (const File &output) const
 Write model state variables to an output file.
 
MaxTimestep max_timestep (double t) const
 Reports the maximum time-step the model can take at time t.
 

Public Attributes

SSAStrengthExtensionstrength_extension
 

Protected Member Functions

virtual void define_model_state_impl (const File &output) const
 The default (empty implementation).
 
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.
 
virtual void solve (const Inputs &inputs)=0
 
void extrapolate_velocity (const array::CellType1 &cell_type, array::Vector1 &velocity) const
 
- Protected Member Functions inherited from pism::stressbalance::ShallowStressBalance
virtual DiagnosticList diagnostics_impl () const
 
- Protected Member Functions inherited from pism::Component
virtual MaxTimestep max_timestep_impl (double t) const
 
virtual TSDiagnosticList ts_diagnostics_impl () const
 
void regrid (const std::string &module_name, array::Array &variable, RegriddingFlag flag=NO_REGRID_WITHOUT_REGRID_VARS)
 

Protected Attributes

std::string m_stdout_ssa
 
array::Vector m_velocity_global
 
- Protected Attributes inherited from pism::stressbalance::ShallowStressBalance
IceBasalResistancePlasticLawm_basal_sliding_law
 
std::shared_ptr< rheology::FlowLawm_flow_law
 
EnthalpyConverter::Ptr m_EC
 
array::Vector2 m_velocity
 
array::Scalar m_basal_frictional_heating
 
double m_e_factor
 flow enhancement factor
 
- Protected Attributes inherited from pism::Component
const std::shared_ptr< const Gridm_grid
 grid used by this component
 
const Config::ConstPtr m_config
 configuration database used by this component
 
const units::System::Ptr m_sys
 unit system used by this component
 
const Logger::ConstPtr m_log
 logger (for easy access)
 

Additional Inherited Members

- Protected Types inherited from pism::Component
enum  RegriddingFlag { REGRID_WITHOUT_REGRID_VARS , NO_REGRID_WITHOUT_REGRID_VARS }
 This flag determines whether a variable is read from the -regrid_file file even if it is not listed among variables in -regrid_vars. More...
 

Detailed Description

PISM's SSA solver.

An object of this type solves equations for the vertically-constant horizontal velocity of ice that is sliding over land or is floating. The equations are, in their clearest divergence form

- \frac{\partial T_{ij}}{\partial x_j} - \tau_{(b)i} = f_i

where i,j range over x,y, T_{ij} is a depth-integrated viscous stress tensor (i.e. equation (2.6) in [SchoofStream]). These equations determine velocity in a more-or-less elliptic manner. Here \tau_{(b)i} are the components of the basal shear stress applied to the base of the ice. The right-hand side f_i is the driving shear stress,

f_i = - \rho g H \frac{\partial h}{\partial x_i}.

Here H is the ice thickness and h is the elevation of the surface of the ice. More concretely, the SSA equations are

\begin{align*} - 2 \left[\nu H \left(2 u_x + v_y\right)\right]_x - \left[\nu H \left(u_y + v_x\right)\right]_y - \tau_{(b)1} &= - \rho g H h_x, \\ - \left[\nu H \left(u_y + v_x\right)\right]_x - 2 \left[\nu H \left(u_x + 2 v_y\right)\right]_y - \tau_{(b)2} &= - \rho g H h_y, \end{align*}

where u is the x-component of the velocity and v is the y-component of the velocity [MacAyeal, Morland, WeisGreveHutter].

Derived classes actually implement numerical methods to solve these equations. This class is virtual, but it actually implements some helper functions believed to be common to all implementations (i.e. regular grid implementations) and it provides the basic fields.

Definition at line 110 of file SSA.hh.


The documentation for this class was generated from the following files: