PISM, A Parallel Ice Sheet Model  stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
pism::hydrology::Hydrology Class Referenceabstract

The PISM subglacial hydrology model interface. More...

#include <Hydrology.hh>

+ Inheritance diagram for pism::hydrology::Hydrology:

Public Member Functions

 Hydrology (std::shared_ptr< const Grid > g)
 
virtual ~Hydrology ()=default
 
void restart (const File &input_file, int record)
 
void bootstrap (const File &input_file, const array::Scalar &ice_thickness)
 
void init (const array::Scalar &W_till, const array::Scalar &W, const array::Scalar &P)
 
void update (double t, double dt, const Inputs &inputs)
 
const array::Scalartill_water_thickness () const
 Return the effective thickness of the water stored in till. More...
 
const array::Scalarsubglacial_water_thickness () const
 Return the effective thickness of the transportable basal water layer. More...
 
const array::Scalaroverburden_pressure () const
 
const array::Scalarsurface_input_rate () const
 
const array::Vectorflux () const
 
const array::Scalarmass_change () const
 
const array::Scalarmass_change_at_grounded_margin () const
 
const array::Scalarmass_change_at_grounding_line () const
 
const array::Scalarmass_change_at_domain_boundary () const
 
const array::Scalarmass_change_due_to_conservation_error () const
 
const array::Scalarmass_change_due_to_input () const
 
const array::Scalarmass_change_due_to_lateral_flow () const
 
- Public Member Functions inherited from pism::Component
 Component (std::shared_ptr< const Grid > grid)
 
virtual ~Component ()=default
 
DiagnosticList diagnostics () const
 
TSDiagnosticList ts_diagnostics () const
 
std::shared_ptr< const Gridgrid () const
 
const Timetime () const
 
const Profilingprofiling () const
 
void define_model_state (const File &output) const
 Define model state variables in an output file. More...
 
void write_model_state (const File &output) const
 Write model state variables to an output file. More...
 
MaxTimestep max_timestep (double t) const
 Reports the maximum time-step the model can take at time t. More...
 

Protected Member Functions

virtual void restart_impl (const File &input_file, int record)
 
virtual void bootstrap_impl (const File &input_file, const array::Scalar &ice_thickness)
 
virtual void init_impl (const array::Scalar &W_till, const array::Scalar &W, const array::Scalar &P)
 
virtual void update_impl (double t, double dt, const Inputs &inputs)=0
 
virtual std::map< std::string, Diagnostic::Ptrdiagnostics_impl () const
 
virtual void define_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
virtual void write_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
void compute_overburden_pressure (const array::Scalar &ice_thickness, array::Scalar &result) const
 Update the overburden pressure from ice thickness. More...
 
void compute_surface_input_rate (const array::CellType &mask, const array::Scalar *surface_input_rate, array::Scalar &result)
 
void compute_basal_melt_rate (const array::CellType &mask, const array::Scalar &basal_melt_rate, array::Scalar &result)
 
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. More...
 
- Protected Member Functions inherited from pism::Component
virtual MaxTimestep max_timestep_impl (double t) const
 
virtual TSDiagnosticList ts_diagnostics_impl () const
 
void regrid (const std::string &module_name, array::Array &variable, RegriddingFlag flag=NO_REGRID_WITHOUT_REGRID_VARS)
 

Protected Attributes

array::Vector m_Q
 
array::Scalar m_Wtill
 effective thickness of basal water stored in till More...
 
array::Scalar1 m_W
 effective thickness of transportable basal water More...
 
array::Scalar m_Pover
 overburden pressure More...
 
array::Scalar m_surface_input_rate
 
array::Scalar m_basal_melt_rate
 
array::Scalar m_flow_change_incremental
 
array::Scalar m_conservation_error_change
 
array::Scalar m_grounded_margin_change
 
array::Scalar m_grounding_line_change
 
array::Scalar m_input_change
 
array::Scalar m_no_model_mask_change
 
array::Scalar m_total_change
 
array::Scalar m_flow_change
 
- Protected Attributes inherited from pism::Component
const std::shared_ptr< const Gridm_grid
 grid used by this component More...
 
const Config::ConstPtr m_config
 configuration database used by this component More...
 
const units::System::Ptr m_sys
 unit system used by this component More...
 
const Logger::ConstPtr m_log
 logger (for easy access) More...
 

Private Member Functions

virtual void initialization_message () const =0
 

Additional Inherited Members

- Protected Types inherited from pism::Component
enum  RegriddingFlag { REGRID_WITHOUT_REGRID_VARS , NO_REGRID_WITHOUT_REGRID_VARS }
 This flag determines whether a variable is read from the -regrid_file file even if it is not listed among variables in -regrid_vars. More...
 

Detailed Description

The PISM subglacial hydrology model interface.

This is a virtual base class.

The purpose of this class and its derived classes is to provide

subglacial_water_pressure()
const array::Scalar & till_water_thickness() const
Return the effective thickness of the water stored in till.
Definition: Hydrology.cc:501
const array::Scalar & subglacial_water_thickness() const
Return the effective thickness of the transportable basal water layer.
Definition: Hydrology.cc:506

These correspond to state variables \(W\), \(P\), and \(W_{\text{till}}\) in [BuelervanPeltDRAFT], though not all derived classes of Hydrology have all of them as state variables.

Additional modeled fields, for diagnostic purposes, are

overburden_pressure(array::Scalar &result)
wall_melt(array::Scalar &result)
const array::Scalar & overburden_pressure() const
Definition: Hydrology.cc:496
void wall_melt(const Routing &model, const array::Scalar &bed_elevation, array::Scalar &result)
Compute the wall melt rate which comes from (turbulent) dissipation of flow energy.
Definition: Routing.cc:527

This interface is appropriate to subglacial hydrology models which track a two-dimensional water layer with a well-defined thickness and pressure at each map-plane location. The methods subglacial_water_thickness() and subglacial_water_pressure() return amount and pressure of the transportable water, that is, the subglacial water which moves along a modeled hydraulic head gradient, in contrast to the water stored in the till.

The transportable water moves through a subglacial morphology which is not determined in this base class.

The Hydrology models have separate, but potentially-coupled, water which is held in local till storage. Thus the transportable water (bwat) and till water (tillwat) thicknesses are different. Published models with till storage include [BBssasliding, SchoofTill, TrufferEchelmeyerHarrison2001, Tulaczyketal2000b, vanderWeletal2013].

The till water thickness is can be used, via the theory of [Tulaczyketal2000], to compute an effective pressure for the water in the pore spaces of the till, which can then be used by the Mohr-Coulomb criterion to provide a yield stress. Class MohrCoulombYieldStress does this calculation. Here in Hydrology only the till water thickness tillwat is computed.

Hydrology is a timestepping component. Because of the short physical timescales associated to liquid water moving under a glacier, Hydrology (and derived) classes generally take many substeps in PISM's major ice dynamics time steps. Thus when an update() method in a Hydrology class is called it will advance its internal time to the new goal t+dt using its own internal time steps.

Generally Hydrology classes use the ice geometry, the basal melt rate, and the basal sliding velocity in determining the evolution of the hydrology state variables. Note that the basal melt rate is an energy-conservation-derived field and the basal-sliding velocity is derived from the solution of a stress balance. The basal melt rate and sliding velocity fields therefore generally come from IceModel and StressBalance, respectively.

Additional, time-dependent and spatially-variable water input to the basal layer, taken directly from a file, is possible too.

Ice geometry and energy fields are normally treated as constant in time during the update() call for the interval [t,t+dt]. Thus the coupling is one-way during the update() call.

Definition at line 109 of file Hydrology.hh.


The documentation for this class was generated from the following files: