PISM, A Parallel Ice Sheet Model  stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
NullTransport.hh
Go to the documentation of this file.
1 // Copyright (C) 2012-2018, 2021, 2022, 2023 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 _NULLTRANSPORT_H_
20 #define _NULLTRANSPORT_H_
21 
22 #include "pism/hydrology/Hydrology.hh"
23 
24 namespace pism {
25 
26 namespace hydrology {
27 
28 //! The PISM minimal model has till, but water that exceeds the capacity of the till is
29 //! not conserved. There is no model for lateral transport.
30 /*!
31  This is the minimum functional derived class. It updates till water thickness.
32  It implements a version of the "undrained plastic bed" model of [\ref Tulaczyketal2000b],
33  but with non-conserved drainage.
34 
35  This model can give no meaningful report on conservation errors.
36 
37  This talk illustrates a "till-can" metaphor applicable to this model:
38  http://www2.gi.alaska.edu/snowice/glaciers/iceflow/bueler-igs-fairbanks-june2012.pdf
39 */
40 class NullTransport : public Hydrology {
41 public:
42  NullTransport(std::shared_ptr<const Grid> g);
43  virtual ~NullTransport() = default;
44 
45 protected:
46  virtual void restart_impl(const File &input_file, int record);
47 
48  virtual void bootstrap_impl(const File &input_file,
49  const array::Scalar &ice_thickness);
50 
51  virtual void init_impl(const array::Scalar &W_till,
52  const array::Scalar &W,
53  const array::Scalar &P);
54 
55  virtual MaxTimestep max_timestep_impl(double t) const;
56 
57  //! Solves an implicit step of a highly-simplified ODE.
58  virtual void update_impl(double t, double dt, const Inputs& inputs);
59 
60  void diffuse_till_water(double dt);
61 
62 private:
66  double m_tillwat_max;
68 
70 
71  void initialization_message() const;
72 };
73 
74 } // end of namespace hydrology
75 } // end of namespace pism
76 
77 #endif /* _NULLTRANSPORT_H_ */
High-level PISM I/O class.
Definition: File.hh:56
Combines the max. time step with the flag indicating if a restriction is active. Makes is possible to...
Definition: MaxTimestep.hh:31
The PISM subglacial hydrology model interface.
Definition: Hydrology.hh:109
virtual void restart_impl(const File &input_file, int record)
virtual void init_impl(const array::Scalar &W_till, const array::Scalar &W, const array::Scalar &P)
virtual ~NullTransport()=default
virtual void bootstrap_impl(const File &input_file, const array::Scalar &ice_thickness)
virtual void update_impl(double t, double dt, const Inputs &inputs)
Solves an implicit step of a highly-simplified ODE.
virtual MaxTimestep max_timestep_impl(double t) const
NullTransport(std::shared_ptr< const Grid > g)
static const double g
Definition: exactTestP.cc:36