PISM, A Parallel Ice Sheet Model
stable v2.0.6 committed by Constantine Khrulev on 2023-01-23 15:14:38 -0900
|
The PISM subglacial hydrology model for a distributed linked-cavity system. More...
#include <Distributed.hh>
Public Member Functions | |
Distributed (IceGrid::ConstPtr g) | |
virtual | ~Distributed ()=default |
const IceModelVec2S & | subglacial_water_pressure () const |
Copies the P state variable which is the modeled water pressure. More... | |
![]() | |
Routing (IceGrid::ConstPtr g) | |
virtual | ~Routing ()=default |
const IceModelVec2S & | subglacial_water_pressure () const |
const IceModelVec2Stag & | velocity_staggered () const |
![]() | |
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 IceModelVec2S & | till_water_thickness () const |
Return the effective thickness of the water stored in till. More... | |
const IceModelVec2S & | subglacial_water_thickness () const |
Return the effective thickness of the transportable basal water layer. More... | |
const IceModelVec2S & | overburden_pressure () const |
const IceModelVec2S & | surface_input_rate () const |
const IceModelVec2V & | flux () const |
const IceModelVec2S & | mass_change () const |
const IceModelVec2S & | mass_change_at_grounded_margin () const |
const IceModelVec2S & | mass_change_at_grounding_line () const |
const IceModelVec2S & | mass_change_at_domain_boundary () const |
const IceModelVec2S & | mass_change_due_to_conservation_error () const |
const IceModelVec2S & | mass_change_due_to_input () const |
const IceModelVec2S & | mass_change_due_to_lateral_flow () const |
![]() | |
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::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 (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 |
![]() | |
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 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... | |
![]() | |
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... | |
![]() | |
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) |
Private Member Functions | |
void | initialization_message () const |
Additional Inherited Members | |
![]() | |
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.