20 #ifndef _PBLINGLECLARK_H_
21 #define _PBLINGLECLARK_H_
25 #include "pism/earth/BedDef.hh"
30 class LingleClarkSerial;
High-level PISM I/O class.
Combines the max. time step with the flag indicating if a restriction is active. Makes is possible to...
const array::Scalar & bed_elevation() const
PISM bed deformation model (base class).
void step(const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation, double dt)
std::shared_ptr< petsc::Vec > m_elastic_displacement0
rank 0 storage for the elastic displacement
MaxTimestep max_timestep_impl(double t) const
void bootstrap_impl(const array::Scalar &bed_elevation, const array::Scalar &bed_uplift, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
void init_impl(const InputOptions &opts, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
double m_t_eps
Temporal resolution to use when checking whether it's time to update.
std::shared_ptr< petsc::Vec > m_work0
array::Scalar m_elastic_displacement
Elastic bed displacement (part of the model state)
const array::Scalar & elastic_displacement() const
std::shared_ptr< Grid > m_extended_grid
extended grid for the viscous plate displacement
std::string m_time_name
Name of the variable used to store the last update time.
virtual void write_model_state_impl(const File &output) const
The default (empty implementation).
std::shared_ptr< array::Scalar > m_viscous_displacement
Viscous displacement on the extended grid (part of the model state).
double m_t_last
time of the last bed deformation update
array::Scalar m_relief
Bed relief relative to the bed displacement.
virtual void define_model_state_impl(const File &output) const
The default (empty implementation).
std::shared_ptr< petsc::Vec > m_viscous_displacement0
rank 0 storage using the extended grid
const array::Scalar & relief() const
LingleClark(std::shared_ptr< const Grid > g)
DiagnosticList diagnostics_impl() const
std::unique_ptr< LingleClarkSerial > m_serial_model
Serial viscoelastic bed deformation model.
const array::Scalar & total_displacement() const
array::Scalar m_total_displacement
Total (viscous and elastic) bed displacement.
const array::Scalar & viscous_displacement() const
void update_impl(const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation, double t, double dt)
Update the Lingle-Clark bed deformation model.
double m_update_interval
Update interval in seconds.
std::shared_ptr< array::Scalar > elastic_load_response_matrix() const
array::Scalar m_load_thickness
Ice-equivalent load thickness.
A wrapper class around LingleClarkSerial.
std::map< std::string, Diagnostic::Ptr > DiagnosticList