tNullTransport.hh - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
HTML git clone git://src.adamsgaard.dk/pism
DIR Log
DIR Files
DIR Refs
DIR LICENSE
---
tNullTransport.hh (2501B)
---
1 // Copyright (C) 2012-2018 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 "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(IceGrid::ConstPtr g);
43 virtual ~NullTransport();
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 IceModelVec2S &ice_thickness);
50
51 virtual void init_impl(const IceModelVec2S &W_till,
52 const IceModelVec2S &W,
53 const IceModelVec2S &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:
63 double m_diffuse_tillwat;
64 double m_diffusion_time;
65 double m_diffusion_distance;
66 double m_tillwat_max;
67 double m_tillwat_decay_rate;
68
69 IceModelVec2S m_Wtill_old;
70
71 void initialization_message() const;
72 };
73
74 } // end of namespace hydrology
75 } // end of namespace pism
76
77 #endif /* _NULLTRANSPORT_H_ */