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 interface. More...
#include <Hydrology.hh>
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::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 void | update_impl (double t, double dt, const Inputs &inputs)=0 |
virtual std::map< std::string, Diagnostic::Ptr > | diagnostics_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 Grid > | 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 | |
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... | |
The PISM subglacial hydrology model interface.
This is a virtual base class.
The purpose of this class and its derived classes is to provide
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
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.