PISM, A Parallel Ice Sheet Model
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
pism::hydrology::Distributed Class Reference

The PISM subglacial hydrology model for a distributed linked-cavity system. More...

#include <Distributed.hh>

+ Inheritance diagram for pism::hydrology::Distributed:

Public Member Functions

 Distributed (IceGrid::ConstPtr g)
 
virtual ~Distributed ()=default
 
const IceModelVec2Ssubglacial_water_pressure () const
 Copies the P state variable which is the modeled water pressure. More...
 
- Public Member Functions inherited from pism::hydrology::Routing
 Routing (IceGrid::ConstPtr g)
 
virtual ~Routing ()=default
 
const IceModelVec2Ssubglacial_water_pressure () const
 
const IceModelVec2Stagvelocity_staggered () const
 
- Public Member Functions inherited from pism::hydrology::Hydrology
 Hydrology (IceGrid::ConstPtr g)
 
virtual ~Hydrology ()=default
 
void restart (const File &input_file, int record)
 
void bootstrap (const File &input_file, const IceModelVec2S &ice_thickness)
 
void init (const IceModelVec2S &W_till, const IceModelVec2S &W, const IceModelVec2S &P)
 
void update (double t, double dt, const Inputs &inputs)
 
const IceModelVec2Still_water_thickness () const
 Return the effective thickness of the water stored in till. More...
 
const IceModelVec2Ssubglacial_water_thickness () const
 Return the effective thickness of the transportable basal water layer. More...
 
const IceModelVec2Soverburden_pressure () const
 
const IceModelVec2Ssurface_input_rate () const
 
const IceModelVec2Vflux () const
 
const IceModelVec2Smass_change () const
 
const IceModelVec2Smass_change_at_grounded_margin () const
 
const IceModelVec2Smass_change_at_grounding_line () const
 
const IceModelVec2Smass_change_at_domain_boundary () const
 
const IceModelVec2Smass_change_due_to_conservation_error () const
 
const IceModelVec2Smass_change_due_to_input () const
 
const IceModelVec2Smass_change_due_to_lateral_flow () const
 
- Public Member Functions inherited from pism::Component
 Component (IceGrid::ConstPtr g)
 
virtual ~Component ()=default
 
DiagnosticList diagnostics () const
 
TSDiagnosticList ts_diagnostics () const
 
IceGrid::ConstPtr grid () 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 IceModelVec2S &ice_thickness)
 
virtual void init_impl (const IceModelVec2S &W_till, const IceModelVec2S &W, const IceModelVec2S &P)
 
virtual double max_timestep_P_diff (double phi0, double dt_diff_w) const
 
void update_impl (double t, double dt, const Inputs &inputs)
 Update the model state variables W,P by running the subglacial hydrology model. More...
 
std::map< std::string, TSDiagnostic::Ptrts_diagnostics_impl () const
 
void define_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
void write_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
void check_P_bounds (IceModelVec2S &P, const IceModelVec2S &P_o, bool enforce_upper)
 
void P_from_W_steady (const IceModelVec2S &W, const IceModelVec2S &P_overburden, const IceModelVec2S &sliding_speed, IceModelVec2S &result)
 Compute functional relationship P(W) which applies only in steady state. More...
 
void update_P (double dt, const IceModelVec2CellType &cell_type, const IceModelVec2S &sliding_speed, const IceModelVec2S &surface_input_rate, const IceModelVec2S &basal_melt_rate, const IceModelVec2S &P_overburden, const IceModelVec2S &Wtill, const IceModelVec2S &Wtill_new, const IceModelVec2S &P, const IceModelVec2S &W, const IceModelVec2Stag &Ws, const IceModelVec2Stag &K, const IceModelVec2Stag &Q, IceModelVec2S &P_new) const
 
- Protected Member Functions inherited from pism::hydrology::Routing
virtual std::map< std::string, Diagnostic::Ptrdiagnostics_impl () const
 
double max_timestep_W_diff (double KW_max) const
 
double max_timestep_W_cfl () const
 
void water_thickness_staggered (const IceModelVec2S &W, const IceModelVec2CellType &mask, IceModelVec2Stag &result)
 Average the regular grid water thickness to values at the center of cell edges. More...
 
void compute_conductivity (const IceModelVec2Stag &W, const IceModelVec2S &P, const IceModelVec2S &bed, IceModelVec2Stag &result, double &maxKW) const
 Compute the nonlinear conductivity at the center of cell edges. More...
 
void compute_velocity (const IceModelVec2Stag &W, const IceModelVec2S &P, const IceModelVec2S &bed, const IceModelVec2Stag &K, const IceModelVec2Int *no_model_mask, IceModelVec2Stag &result) const
 Get the advection velocity V at the center of cell edges. More...
 
void advective_fluxes (const IceModelVec2Stag &V, const IceModelVec2S &W, IceModelVec2Stag &result) const
 Compute Q = V W at edge-centers (staggered grid) by first-order upwinding. More...
 
void W_change_due_to_flow (double dt, const IceModelVec2S &W, const IceModelVec2Stag &Wstag, const IceModelVec2Stag &K, const IceModelVec2Stag &Q, IceModelVec2S &result)
 
void update_W (double dt, const IceModelVec2S &surface_input_rate, const IceModelVec2S &basal_melt_rate, const IceModelVec2S &W, const IceModelVec2Stag &Wstag, const IceModelVec2S &Wtill, const IceModelVec2S &Wtill_new, const IceModelVec2Stag &K, const IceModelVec2Stag &Q, IceModelVec2S &W_new)
 The computation of Wnew, called by update(). More...
 
void update_Wtill (double dt, const IceModelVec2S &Wtill, const IceModelVec2S &surface_input_rate, const IceModelVec2S &basal_melt_rate, IceModelVec2S &Wtill_new)
 The computation of Wtillnew, called by update(). More...
 
- Protected Member Functions inherited from pism::hydrology::Hydrology
void compute_overburden_pressure (const IceModelVec2S &ice_thickness, IceModelVec2S &result) const
 Update the overburden pressure from ice thickness. More...
 
void compute_surface_input_rate (const IceModelVec2CellType &mask, const IceModelVec2S *surface_input_rate, IceModelVec2S &result)
 
void compute_basal_melt_rate (const IceModelVec2CellType &mask, const IceModelVec2S &basal_melt_rate, IceModelVec2S &result)
 
void enforce_bounds (const IceModelVec2CellType &cell_type, const IceModelVec2Int *no_model_mask, double max_thickness, double ocean_water_thickness, IceModelVec2S &water_thickness, IceModelVec2S &grounded_margin_change, IceModelVec2S &grounding_line_change, IceModelVec2S &conservation_error_change, IceModelVec2S &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 void regrid (const std::string &module_name, IceModelVec &variable, RegriddingFlag flag=NO_REGRID_WITHOUT_REGRID_VARS)
 

Protected Attributes

IceModelVec2S m_P
 
IceModelVec2S m_Pnew
 
- Protected Attributes inherited from pism::hydrology::Routing
IceModelVec2Stag m_Qstag
 
IceModelVec2Stag m_Qstag_average
 
IceModelVec2Stag m_Vstag
 
IceModelVec2Stag m_Wstag
 
IceModelVec2Stag m_Kstag
 
IceModelVec2S m_Wnew
 
IceModelVec2S m_Wtillnew
 
IceModelVec2S m_R
 
double m_dx
 
double m_dy
 
double m_rg
 
IceModelVec2S m_bottom_surface
 
- Protected Attributes inherited from pism::hydrology::Hydrology
IceModelVec2V m_Q
 
IceModelVec2S m_Wtill
 effective thickness of basal water stored in till More...
 
IceModelVec2S m_W
 effective thickness of transportable basal water More...
 
IceModelVec2S m_Pover
 overburden pressure More...
 
IceModelVec2S m_surface_input_rate
 
IceModelVec2S m_basal_melt_rate
 
IceModelVec2S m_flow_change_incremental
 
IceModelVec2S m_conservation_error_change
 
IceModelVec2S m_grounded_margin_change
 
IceModelVec2S m_grounding_line_change
 
IceModelVec2S m_input_change
 
IceModelVec2S m_no_model_mask_change
 
IceModelVec2S m_total_change
 
IceModelVec2S m_flow_change
 
- Protected Attributes inherited from pism::Component
const IceGrid::ConstPtr m_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

void initialization_message () const
 

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 for a distributed linked-cavity system.

This class implements the model documented in [BuelervanPeltDRAFT].

Unlike hydrology::Routing, the water pressure \(P\) is a state variable, and there are modeled mechanisms for cavity geometry evolution, including creep closure and opening through sliding ("cavitation"). Because of cavitation, this model needs access to a StressBalance object. Background references for this kind of model includes especially [Kamb1987, Schoofetal2012], but see also [Hewitt2011, Hewittetal2012, Hewitt2013].

In addition to the actions within the null strip taken by hydrology::Routing, this model also sets the staggered grid values of the gradient of the hydraulic potential to zero if either regular grid neighbor is in the null strip.

Definition at line 43 of file Distributed.hh.


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