19 #ifndef _PISMHYDROLOGY_H_
20 #define _PISMHYDROLOGY_H_
22 #include "pism/util/array/Vector.hh"
23 #include "pism/util/Component.hh"
202 double max_thickness,
203 double ocean_water_thickness,
A class defining a common interface for most PISM sub-models.
High-level PISM I/O class.
"Cell type" mask. Adds convenience methods to array::Scalar.
array::Scalar m_flow_change
const array::Scalar & till_water_thickness() const
Return the effective thickness of the water stored in till.
void restart(const File &input_file, int record)
Hydrology(std::shared_ptr< const Grid > g)
array::Scalar m_flow_change_incremental
virtual void bootstrap_impl(const File &input_file, const array::Scalar &ice_thickness)
array::Scalar m_surface_input_rate
array::Scalar m_total_change
virtual void define_model_state_impl(const File &output) const
The default (empty implementation).
void bootstrap(const File &input_file, const array::Scalar &ice_thickness)
array::Scalar m_grounding_line_change
const array::Scalar & mass_change_at_domain_boundary() const
const array::Scalar & surface_input_rate() const
virtual void initialization_message() const =0
void enforce_bounds(const array::CellType &cell_type, const array::Scalar *no_model_mask, double max_thickness, double ocean_water_thickness, array::Scalar &water_thickness, array::Scalar &grounded_margin_change, array::Scalar &grounding_line_change, array::Scalar &conservation_error_change, array::Scalar &no_model_mask_change)
Correct the new water thickness based on boundary requirements.
const array::Scalar & subglacial_water_thickness() const
Return the effective thickness of the transportable basal water layer.
array::Scalar m_basal_melt_rate
const array::Scalar & mass_change_due_to_lateral_flow() const
virtual void init_impl(const array::Scalar &W_till, const array::Scalar &W, const array::Scalar &P)
const array::Scalar & mass_change_due_to_conservation_error() const
array::Scalar1 m_W
effective thickness of transportable basal water
void compute_overburden_pressure(const array::Scalar &ice_thickness, array::Scalar &result) const
Update the overburden pressure from ice thickness.
const array::Scalar & mass_change_at_grounded_margin() const
virtual void restart_impl(const File &input_file, int record)
array::Scalar m_input_change
void update(double t, double dt, const Inputs &inputs)
array::Scalar m_Wtill
effective thickness of basal water stored in till
const array::Scalar & overburden_pressure() const
virtual void update_impl(double t, double dt, const Inputs &inputs)=0
const array::Scalar & mass_change_due_to_input() const
array::Scalar m_Pover
overburden pressure
virtual std::map< std::string, Diagnostic::Ptr > diagnostics_impl() const
virtual void write_model_state_impl(const File &output) const
The default (empty implementation).
virtual ~Hydrology()=default
const array::Vector & flux() const
void compute_basal_melt_rate(const array::CellType &mask, const array::Scalar &basal_melt_rate, array::Scalar &result)
array::Scalar m_grounded_margin_change
const array::Scalar & mass_change_at_grounding_line() const
array::Scalar m_no_model_mask_change
void compute_surface_input_rate(const array::CellType &mask, const array::Scalar *surface_input_rate, array::Scalar &result)
void init(const array::Scalar &W_till, const array::Scalar &W, const array::Scalar &P)
const array::Scalar & mass_change() const
array::Scalar m_conservation_error_change
The PISM subglacial hydrology model interface.
void check_bounds(const array::Scalar &W, double W_max)