Alpine3D  Alpine3D-3.1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
MeteoObj.h
Go to the documentation of this file.
1 /***********************************************************************************/
2 /* Copyright 2009-2015 WSL Institute for Snow and Avalanche Research SLF-DAVOS */
3 /***********************************************************************************/
4 /* This file is part of Alpine3D.
5  Alpine3D is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  Alpine3D is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with Alpine3D. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef METEOOBJ_H
19 #define METEOOBJ_H
20 
21 #include <meteoio/MeteoIO.h>
22 #include <snowpack/libsnowpack.h>
23 
24 #include <alpine3d/MPIControl.h>
25 #include <alpine3d/Glaciers.h>
26 
27 class MeteoObj
28 {
29  public:
30  MeteoObj(const mio::Config& config, const mio::DEMObject& in_dem);
31  ~MeteoObj();
32 
33  void setSkipWind(const bool& i_skipWind);
34  void prepare(const mio::Date& in_date);
35  void get(const mio::Date& in_date,
36  mio::Grid2DObject& ta,
37  mio::Grid2DObject& rh,
38  mio::Grid2DObject& psum,
39  mio::Grid2DObject& psum_ph,
40  mio::Grid2DObject& vw,
41  mio::Grid2DObject& p,
42  mio::Grid2DObject& ilwr);
43  void get(const mio::Date& in_date, std::vector<mio::MeteoData>& o_vecMeteo);
44  void checkMeteoForcing(const mio::Date& calcDate);
45  void setGlacierMask(const mio::Grid2DObject& glacierMask);
46  double getTiming() const;
47 
48  private:
49  static void checkLapseRate(const std::vector<mio::MeteoData>& i_vecMeteo, const mio::MeteoData::Parameters& param);
50  static void checkGridRange(const mio::Date& calcDate, const mio::Grid2DObject& grid, const mio::MeteoData::Parameters& param);
51  static void checkInputsRequirements(std::vector<mio::MeteoData>& vecData);
52  void fillMeteoGrids(const mio::Date& calcDate);
53  void getMeteo(const mio::Date& calcDate);
54 
55  mio::Timer timer;
56  const mio::Config &config;
57  mio::IOManager io;
58  const mio::DEMObject &dem;
59  mio::Grid2DObject ta, rh, psum, psum_ph, vw, p, ilwr;
60  mio::Grid2DObject sum_ta, sum_rh, sum_rh_psum, sum_psum, sum_psum_ph, sum_vw, sum_ilwr;
61  std::vector<mio::MeteoData> vecMeteo;
62  mio::Date date;
63  Glaciers *glaciers;
64  unsigned int count_sums, count_precip;
65  bool skipWind;
66 };
67 
68 #endif
void setGlacierMask(const mio::Grid2DObject &glacierMask)
Definition: MeteoObj.cc:233
void checkMeteoForcing(const mio::Date &calcDate)
Definition: MeteoObj.cc:243
void prepare(const mio::Date &in_date)
Definition: MeteoObj.cc:39
MeteoObj(const mio::Config &config, const mio::DEMObject &in_dem)
Definition: MeteoObj.cc:23
Definition: MeteoObj.h:27
Definition: Glaciers.h:47
void setSkipWind(const bool &i_skipWind)
Definition: MeteoObj.cc:35
~MeteoObj()
Definition: MeteoObj.cc:30
double getTiming() const
Definition: MeteoObj.cc:109