PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
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 (std::shared_ptr< const Grid > g)
 
virtual ~Distributed ()=default
 
const array::Scalarsubglacial_water_pressure () const
 Copies the P state variable which is the modeled water pressure. More...
 
- Public Member Functions inherited from pism::hydrology::Routing
 Routing (std::shared_ptr< const Grid > g)
 
virtual ~Routing ()=default
 
const array::Scalarsubglacial_water_pressure () const
 
const array::Staggeredvelocity_staggered () const
 
- Public Member Functions inherited from pism::hydrology::Hydrology
 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 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 (array::Scalar &P, const array::Scalar &P_o, bool enforce_upper)
 
void P_from_W_steady (const array::Scalar &W, const array::Scalar &P_overburden, const array::Scalar &sliding_speed, array::Scalar &result)
 Compute functional relationship P(W) which applies only in steady state. More...
 
void update_P (double dt, const array::CellType &cell_type, const array::Scalar &sliding_speed, const array::Scalar &surface_input_rate, const array::Scalar &basal_melt_rate, const array::Scalar &P_overburden, const array::Scalar &Wtill, const array::Scalar &Wtill_new, const array::Scalar &P, const array::Scalar1 &W, const array::Staggered1 &Ws, const array::Staggered1 &K, const array::Staggered1 &Q, array::Scalar &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 array::Scalar &W, const array::CellType1 &mask, array::Staggered &result)
 Average the regular grid water thickness to values at the center of cell edges. More...
 
void compute_conductivity (const array::Staggered &W, const array::Scalar &P, const array::Scalar &bed, array::Staggered &result, double &maxKW) const
 Compute the nonlinear conductivity at the center of cell edges. More...
 
void compute_velocity (const array::Staggered &W, const array::Scalar &P, const array::Scalar &bed, const array::Staggered &K, const array::Scalar1 *no_model_mask, array::Staggered &result) const
 Get the advection velocity V at the center of cell edges. More...
 
void advective_fluxes (const array::Staggered &V, const array::Scalar &W, array::Staggered &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 array::Scalar1 &W, const array::Staggered1 &Wstag, const array::Staggered1 &K, const array::Staggered1 &Q, array::Scalar &result)
 
void update_W (double dt, const array::Scalar &surface_input_rate, const array::Scalar &basal_melt_rate, const array::Scalar1 &W, const array::Staggered1 &Wstag, const array::Scalar &Wtill, const array::Scalar &Wtill_new, const array::Staggered1 &K, const array::Staggered1 &Q, array::Scalar &W_new)
 The computation of Wnew, called by update(). More...
 
void update_Wtill (double dt, const array::Scalar &Wtill, const array::Scalar &surface_input_rate, const array::Scalar &basal_melt_rate, array::Scalar &Wtill_new)
 The computation of Wtillnew, called by update(). More...
 
- Protected Member Functions inherited from pism::hydrology::Hydrology
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
 
void regrid (const std::string &module_name, array::Array &variable, RegriddingFlag flag=NO_REGRID_WITHOUT_REGRID_VARS)
 

Protected Attributes

array::Scalar1 m_P
 
array::Scalar m_Pnew
 
- Protected Attributes inherited from pism::hydrology::Routing
array::Staggered1 m_Qstag
 
array::Staggered1 m_Qstag_average
 
array::Staggered m_Vstag
 
array::Staggered1 m_Wstag
 
array::Staggered1 m_Kstag
 
array::Scalar m_Wnew
 
array::Scalar m_Wtillnew
 
array::Scalar1 m_R
 
double m_dx
 
double m_dy
 
double m_rg
 
array::Scalar1 m_bottom_surface
 
- Protected Attributes inherited from pism::hydrology::Hydrology
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

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: