PISM, A Parallel Ice Sheet Model
stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
|
The PISM subglacial hydrology model for a distributed linked-cavity system. More...
#include <Distributed.hh>
Public Member Functions | |
Distributed (std::shared_ptr< const Grid > g) | |
virtual | ~Distributed ()=default |
const array::Scalar & | subglacial_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::Scalar & | subglacial_water_pressure () const |
const array::Staggered & | velocity_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::Scalar & | till_water_thickness () const |
Return the effective thickness of the water stored in till. More... | |
const array::Scalar & | subglacial_water_thickness () const |
Return the effective thickness of the transportable basal water layer. More... | |
const array::Scalar & | overburden_pressure () const |
const array::Scalar & | surface_input_rate () const |
const array::Vector & | flux () const |
const array::Scalar & | mass_change () const |
const array::Scalar & | mass_change_at_grounded_margin () const |
const array::Scalar & | mass_change_at_grounding_line () const |
const array::Scalar & | mass_change_at_domain_boundary () const |
const array::Scalar & | mass_change_due_to_conservation_error () const |
const array::Scalar & | mass_change_due_to_input () const |
const array::Scalar & | mass_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 Grid > | grid () const |
const Time & | time () const |
const Profiling & | profiling () 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::Ptr > | ts_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::Ptr > | diagnostics_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) |
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... | |
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.