19 #ifndef _PISMSTRESSBALANCE_H_
20 #define _PISMSTRESSBALANCE_H_
24 #include "pism/util/Component.hh"
25 #include "pism/util/iceModelVec.hh"
26 #include "pism/stressbalance/timestepping.hh"
30 class IceModelVec2CellType;
38 namespace stressbalance {
40 class ShallowStressBalance;
66 void dump(
const char *filename)
const;
84 std::shared_ptr<ShallowStressBalance> sb,
85 std::shared_ptr<SSB_Modifier> ssb_mod);
149 std::shared_ptr<StressBalance>
create(
const std::string &model_name,
A class defining a common interface for most PISM sub-models.
High-level PISM I/O class.
std::shared_ptr< const IceGrid > ConstPtr
"Cell type" mask. Adds convenience methods to IceModelVec2Int.
A simple class "hiding" the fact that the mask is stored as floating-point scalars (instead of intege...
A class for storing and accessing internal staggered-grid 2D fields. Uses dof=2 storage....
A virtual class collecting methods common to ice and bedrock 3D fields.
Shallow stress balance modifier (such as the non-sliding SIA).
Shallow stress balance (such as the SSA).
const IceModelVec3 & velocity_u() const
Get components of the the 3D velocity field.
IceModelVec3 m_strain_heating
StressBalance(IceGrid::ConstPtr g, std::shared_ptr< ShallowStressBalance > sb, std::shared_ptr< SSB_Modifier > ssb_mod)
std::shared_ptr< SSB_Modifier > m_modifier
virtual void write_model_state_impl(const File &output) const
The default (empty implementation).
const IceModelVec2S & basal_frictional_heating() const
Get the basal frictional heating.
const IceModelVec3 & volumetric_strain_heating() const
CFLData max_timestep_cfl_3d() const
virtual void define_model_state_impl(const File &output) const
The default (empty implementation).
const IceModelVec2V & advective_velocity() const
Get the thickness-advective (SSA) 2D velocity.
const SSB_Modifier * modifier() const
Returns a pointer to a stress balance modifier implementation.
virtual TSDiagnosticList ts_diagnostics_impl() const
virtual void compute_volumetric_strain_heating(const Inputs &inputs)
Computes the volumetric strain heating using horizontal velocity.
std::shared_ptr< ShallowStressBalance > m_shallow_stress_balance
CFLData max_timestep_cfl_2d() const
double max_diffusivity() const
Get the max diffusivity (for the adaptive time-stepping).
virtual void compute_vertical_velocity(const IceModelVec2CellType &mask, const IceModelVec3 &u, const IceModelVec3 &v, const IceModelVec2S *bmr, IceModelVec3 &result)
Compute vertical velocity using incompressibility of the ice.
void init()
Initialize the StressBalance object.
virtual DiagnosticList diagnostics_impl() const
const ShallowStressBalance * shallow() const
Returns a pointer to a shallow stress balance solver implementation.
std::string stdout_report() const
Produce a report string for the standard output.
void update(const Inputs &inputs, bool full_update)
Update all the fields if (full_update), only update diffusive flux and max. diffusivity otherwise.
const IceModelVec2Stag & diffusive_flux() const
Get the diffusive (SIA) vertically-averaged flux on the staggered grid.
const IceModelVec3 & velocity_v() const
const IceModelVec3 & velocity_w() const
The class defining PISM's interface to the shallow stress balance code.
std::shared_ptr< StressBalance > create(const std::string &model, IceGrid::ConstPtr grid, bool regional)
void compute_2D_stresses(const rheology::FlowLaw &flow_law, const IceModelVec2V &velocity, const IceModelVec2S &hardness, const IceModelVec2CellType &cell_type, IceModelVec3 &result)
Compute 2D deviatoric stresses.
void compute_2D_principal_strain_rates(const IceModelVec2V &V, const IceModelVec2CellType &mask, IceModelVec3 &result)
Compute eigenvalues of the horizontal, vertically-integrated strain rate tensor.
std::map< std::string, TSDiagnostic::Ptr > TSDiagnosticList
std::map< std::string, Diagnostic::Ptr > DiagnosticList