Loading [MathJax]/extensions/tex2jax.js
PISM, A Parallel Ice Sheet Model 2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Runoff_SMB.hh
Go to the documentation of this file.
1// Copyright (C) 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2021 PISM Authors
2//
3// This file is part of PISM.
4//
5// PISM is free software; you can redistribute it and/or modify it under the
6// terms of the GNU General Public License as published by the Free Software
7// Foundation; either version 3 of the License, or (at your option) any later
8// version.
9//
10// PISM is distributed in the hope that it will be useful, but WITHOUT ANY
11// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13// details.
14//
15// You should have received a copy of the GNU General Public License
16// along with PISM; if not, write to the Free Software
17// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19#ifndef _PO_RUNOFF_SMB_H_
20#define _PO_RUNOFF_SMB_H_
21
22#include "pism/coupler/OceanModel.hh"
23
24namespace pism {
25
26class ScalarForcing;
27
28namespace ocean {
29
30/** Modify the shelf base mass flux using a function of air temperature changes.
31 *
32 * This modifier multiplies the input shelf base mass flux by a factor
33 * @f$ F @f$, which depends on the change in the global average
34 * near-surface air temperature =delta_T= read from an input file.
35 *
36 * The parameterization described below is inspired by [@ref Xu2013]
37 * with the relationship between air temperatures and subglacial
38 * runoff flux parameterized using a linear function (a fit to
39 * results of GCM simulations).
40 *
41 * @f[ F(\Delta T) = 1 + B \times (a \Delta T)^\alpha \times (\Delta T)^\beta. @f]
42 *
43 * Here @f$ a @f$, @f$ B @f$, @f$ \alpha @f$, and @f$ \beta @f$ are constants.
44 *
45 * The paper [@ref Xu2013] approximates the sub-shelf melt rate as a
46 * function of *ocean* temperature above the freezing point and the
47 * subglacial runoff.
48 *
49 * We assume that the lag between the air and ocean temperatures is
50 * negligible and a change in air temperature is directly translated
51 * into a change in ocean temperature.
52 */
53class Runoff_SMB : public OceanModel
54{
55public:
56 Runoff_SMB(std::shared_ptr<const Grid> g, std::shared_ptr<OceanModel> in);
57 virtual ~Runoff_SMB();
58
59private:
60 void init_impl(const Geometry &geometry);
61
62 void update_impl(const Geometry &geometry, double t, double dt);
63
64 void mass_flux(double delta_T, array::Scalar &result) const;
65
66 // @brief constant in the parameterization of the subglacial
67 // runoff flux as a function of air temperature
69
70 // Constants in the parameterization of the sub-shelf melt rate.
74
75 std::shared_ptr<array::Scalar> m_shelf_base_mass_flux;
76 std::unique_ptr<ScalarForcing> m_forcing;
77};
78
79} // end of namespace ocean
80} // end of namespace pism
81
82#endif /* _PO_RUNOFF_SMB_H_ */
A very rudimentary PISM ocean model.
Definition OceanModel.hh:33
std::unique_ptr< ScalarForcing > m_forcing
Definition Runoff_SMB.hh:76
double m_runoff_to_ocean_melt_power_beta
Definition Runoff_SMB.hh:73
void mass_flux(double delta_T, array::Scalar &result) const
Definition Runoff_SMB.cc:65
double m_runoff_to_ocean_melt_power_alpha
Definition Runoff_SMB.hh:72
std::shared_ptr< array::Scalar > m_shelf_base_mass_flux
Definition Runoff_SMB.hh:75
void update_impl(const Geometry &geometry, double t, double dt)
Definition Runoff_SMB.cc:59
void init_impl(const Geometry &geometry)
Definition Runoff_SMB.cc:50
bool ocean(int M)
An ocean cell (floating ice or ice-free).
Definition Mask.hh:40
static const double g
Definition exactTestP.cc:36