PISM, A Parallel Ice Sheet Model  stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
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. More...
 
void set_initial_guess (const array::Vector &guess)
 Set the initial guess of the SSA velocity. More...
 
virtual std::string stdout_report () const
 Produce a report string for the standard output. More...
 
const array::Vectordriving_stress () const
 
- 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. More...
 
const array::Scalarbasal_frictional_heating ()
 Get the basal frictional heating (for the adaptive energy time-stepping). More...
 
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. More...
 
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. More...
 
void write_model_state (const File &output) const
 Write model state variables to an output file. More...
 
MaxTimestep max_timestep (double t) const
 Reports the maximum time-step the model can take at time t. More...
 

Public Attributes

SSAStrengthExtensionstrength_extension
 

Protected Member Functions

virtual void define_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
virtual void write_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
virtual void init_impl ()
 Initialize a generic regular-grid SSA solver. More...
 
virtual DiagnosticList diagnostics_impl () const
 
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. More...
 
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::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

array::CellType2 m_mask
 
array::Vector m_taud
 
std::string m_stdout_ssa
 
std::shared_ptr< petsc::DMm_da
 
array::Vector m_velocity_global
 
int m_event_ssa
 
- 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 More...
 
- Protected Attributes inherited from pism::Component
const std::shared_ptr< const Gridm_grid
 grid used by this component More...
 
const Config::ConstPtr m_config
 configuration database used by this component More...
 
const units::System::Ptr m_sys
 unit system used by this component More...
 
const Logger::ConstPtr m_log
 logger (for easy access) More...
 

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: