PISM, A Parallel Ice Sheet Model 2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
|
#include <SSA.hh>
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. | |
![]() | |
ShallowStressBalance (std::shared_ptr< const Grid > g) | |
virtual | ~ShallowStressBalance () |
void | init () |
const array::Vector1 & | velocity () const |
Get the thickness-advective 2D velocity. | |
const array::Scalar & | basal_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::FlowLaw > | flow_law () const |
EnthalpyConverter::Ptr | enthalpy_converter () const |
const IceBasalResistancePlasticLaw * | sliding_law () const |
double | flow_enhancement_factor () const |
![]() | |
Component (std::shared_ptr< const Grid > grid) | |
virtual | ~Component ()=default |
DiagnosticList | diagnostics () const |
TSDiagnosticList | ts_diagnostics () const |
std::shared_ptr< const Grid > | grid () const |
const Time & | time () const |
const Profiling & | profiling () 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 | |
SSAStrengthExtension * | strength_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 |
![]() | |
virtual DiagnosticList | diagnostics_impl () const |
![]() | |
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 |
![]() | |
IceBasalResistancePlasticLaw * | m_basal_sliding_law |
std::shared_ptr< rheology::FlowLaw > | m_flow_law |
EnthalpyConverter::Ptr | m_EC |
array::Vector2 | m_velocity |
array::Scalar | m_basal_frictional_heating |
double | m_e_factor |
flow enhancement factor | |
![]() | |
const std::shared_ptr< const Grid > | m_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 | |
![]() | |
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... | |
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.