22#include "pism/util/Component.hh"
30double compute_load(
double bed,
double ice_thickness,
double sea_level,
31 double ice_density,
double ocean_density);
33void accumulate_load(
const array::Scalar &bed_elevation,
const array::Scalar &ice_thickness,
34 const array::Scalar &sea_level_elevation,
double C, array::Scalar &result);
39 BedDef(std::shared_ptr<const Grid>
g,
const std::string &model_name);
65 double t,
double dt) = 0;
106 Null(std::shared_ptr<const Grid>
g);
A class defining a common interface for most PISM sub-models.
High-level PISM I/O class.
Combines the max. time step with the flag indicating if a restriction is active. Makes is possible to...
std::string m_time_name
Name of the variable used to store the last update time.
array::Scalar m_load_accumulator
virtual void write_model_state_impl(const File &output) const
The default (empty implementation).
virtual DiagnosticList diagnostics_impl() const
array::Scalar m_topg_last
bed elevation at the time of the last update
virtual void define_model_state_impl(const File &output) const
The default (empty implementation).
virtual void update_impl(const array::Scalar &load, double t, double dt)=0
void init(const InputOptions &opts, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
virtual MaxTimestep max_timestep_impl(double t) const
void update(const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation, double t, double dt)
double m_update_interval
Update interval in seconds.
void bootstrap(const array::Scalar &bed_elevation, const array::Scalar &bed_uplift, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
Initialize using provided bed elevation and uplift.
virtual ~BedDef()=default
array::Scalar2 m_topg
current bed elevation
virtual void bootstrap_impl(const array::Scalar &bed_elevation, const array::Scalar &bed_uplift, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)=0
array::Scalar m_uplift
bed uplift rate
const array::Scalar & uplift() const
const array::Scalar & bed_elevation() const
virtual void init_impl(const InputOptions &opts, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)=0
double m_t_last
time of the last bed deformation update
static void apply_topg_offset(const std::string &filename, array::Scalar &bed_topography)
double m_t_eps
Temporal resolution to use when checking whether it's time to update.
PISM bed deformation model (base class).
void bootstrap_impl(const array::Scalar &bed_elevation, const array::Scalar &bed_uplift, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
MaxTimestep max_timestep_impl(double t) const
void init_impl(const InputOptions &opts, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
void update_impl(const array::Scalar &load, double t, double dt)
void bootstrap_impl(const array::Scalar &bed_elevation, const array::Scalar &bed_uplift, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
array::Scalar m_load_last
last ice load (ice-equivalent thickness)
virtual ~PointwiseIsostasy()=default
void init_impl(const InputOptions &opts, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
void update_impl(const array::Scalar &load, double t, double dt)
Updates the pointwise isostasy model.
Point-wise isostasy bed deformation model.
void accumulate_load(const array::Scalar &bed_elevation, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation, double C, array::Scalar &result)
double compute_load(double bed, double ice_thickness, double sea_level, double ice_density, double ocean_density)
std::map< std::string, Diagnostic::Ptr > DiagnosticList