tScalarForcing.hh - pism - [fork] customized build of PISM, the parallel ice sh… | |
git clone git://src.adamsgaard.dk/pism | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
tScalarForcing.hh (1922B) | |
--- | |
1 // Copyright (C) 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 PISM Aut… | |
2 // | |
3 // This file is part of PISM. | |
4 // | |
5 // PISM is free software; you can redistribute it and/or modify it under… | |
6 // terms of the GNU General Public License as published by the Free Soft… | |
7 // Foundation; either version 3 of the License, or (at your option) any … | |
8 // version. | |
9 // | |
10 // PISM is distributed in the hope that it will be useful, but WITHOUT A… | |
11 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FIT… | |
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… | |
18 | |
19 #ifndef _SCALARFORCING_H_ | |
20 #define _SCALARFORCING_H_ | |
21 | |
22 #include <memory> // std::unique_ptr | |
23 | |
24 #include "pism/util/Context.hh" | |
25 | |
26 namespace pism { | |
27 | |
28 class Timeseries; | |
29 | |
30 /*! | |
31 * This class helps with loading and using scalar forcings such as scala… | |
32 * offsets. | |
33 * | |
34 * It processes command-line options, reads data from a file, and gets d… | |
35 * to a time interval [t, t+dt]. | |
36 */ | |
37 class ScalarForcing { | |
38 public: | |
39 ScalarForcing(Context::ConstPtr ctx, | |
40 const std::string &option_prefix, | |
41 const std::string &offset_name, | |
42 const std::string &units, | |
43 const std::string &glaciological_units, | |
44 const std::string &long_name); | |
45 ~ScalarForcing(); | |
46 | |
47 void init(); | |
48 void update(double t, double dt); | |
49 | |
50 double value() const; | |
51 double value(double t) const; | |
52 protected: | |
53 Context::ConstPtr m_ctx; | |
54 | |
55 std::unique_ptr<Timeseries> m_data; | |
56 | |
57 std::string m_prefix; | |
58 | |
59 // in years | |
60 unsigned int m_period; | |
61 // in seconds | |
62 double m_reference_time; | |
63 | |
64 double m_current; | |
65 }; | |
66 | |
67 | |
68 } // end of namespace pism | |
69 | |
70 #endif /* _SCALARFORCING_H_ */ |