19 #include "pism/earth/BedDef.hh"
20 #include "pism/util/Grid.hh"
21 #include "pism/util/Time.hh"
22 #include "pism/util/ConfigInterface.hh"
23 #include "pism/util/Vars.hh"
24 #include "pism/util/MaxTimestep.hh"
30 :
BedDef(grid), m_load_last(m_grid,
"load_last") {
38 "* Initializing the pointwise isostasy bed deformation model...\n");
66 double t,
double dt) {
70 mantle_density =
m_config->get_number(
"bed_deformation.mantle_density"),
71 load_density =
m_config->get_number(
"constants.ice.density"),
72 ocean_density =
m_config->get_number(
"constants.sea_water.density"),
73 ice_density =
m_config->get_number(
"constants.ice.density"),
74 f = load_density / mantle_density;
79 &ice_thickness, &sea_level_elevation, &
m_load_last};
83 for (
auto p =
m_grid->points(); p; p.next()) {
84 const int i = p.i(), j = p.j();
88 sea_level_elevation(i, j),
89 ice_density, ocean_density);
const Config::ConstPtr m_config
configuration database used by this component
const Logger::ConstPtr m_log
logger (for easy access)
const std::shared_ptr< const Grid > m_grid
grid used by this component
Combines the max. time step with the flag indicating if a restriction is active. Makes is possible to...
void failed()
Indicates a failure of a parallel section.
Makes sure that we call begin_access() and end_access() for all accessed array::Arrays.
void copy_from(const Array2D< T > &source)
void inc_state_counter()
Increment the object state counter.
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)
array::Scalar2 m_topg_last
bed elevation at the time of the last update
array::Scalar2 m_topg
current bed elevation
virtual void init_impl(const InputOptions &opts, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
Initialize from the context (input file and the "variables" database).
array::Scalar m_uplift
bed uplift rate
const array::Scalar & bed_elevation() const
void compute_uplift(const array::Scalar &bed, const array::Scalar &bed_last, double dt, array::Scalar &result)
Compute bed uplift (dt is in seconds).
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)
array::Scalar m_load_last
last ice load (ice-equivalent thickness)
MaxTimestep max_timestep_impl(double t) const
PointwiseIsostasy(std::shared_ptr< const Grid > g)
void update_impl(const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation, double t, double dt)
Updates the pointwise isostasy model.
void init_impl(const InputOptions &opts, const array::Scalar &ice_thickness, const array::Scalar &sea_level_elevation)
Initialize from the context (input file and the "variables" database).
double compute_load(double bed, double ice_thickness, double sea_level, double ice_density, double ocean_density)