Alpine3D  Alpine3D-3.1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
EnergyBalance.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 ENERGYBALANCE_H
19 #define ENERGYBALANCE_H
20 
21 #include <string>
22 #include <meteoio/MeteoIO.h>
23 
24 class SnowpackInterface;
25 
26 #include <alpine3d/MPIControl.h>
30 
70 {
71  public:
72  EnergyBalance( const unsigned int& i_nbworkers, const mio::Config& cfg, const mio::DEMObject &dem_in);
74  ~EnergyBalance( );
75 
77 
78  void setSnowPack(SnowpackInterface &mysnowpack );
79  void setAlbedo( const mio::Grid2DObject &in_albedo );
80 
81  void setMeteo(const mio::Grid2DObject& in_ilwr,
82  const mio::Grid2DObject& in_ta, const mio::Grid2DObject& in_rh, const mio::Grid2DObject& in_p, const mio::Date timestamp);
83 
84  void setStations(const std::vector<mio::MeteoData>& in_vecMeteo);
85  double getTiming() const;
86  void Destroy();
87  std::string getGridsRequirements() const;
88 
89  private:
90  SnowpackInterface *snowpack;
91  TerrainRadiationAlgorithm *terrain_radiation;
92  std::vector<RadiationField*> radfields;
93  mio::DEMObject dem;
94  std::vector<mio::MeteoData> vecMeteo;
95  mio::Grid2DObject albedo;
96  mio::Array2D<double> direct, diffuse, reflected;
97  mio::Timer timer;
98 
99  size_t dimx, dimy;
100  unsigned int nbworkers;
101 };
102 
103 #endif
Definition: TerrainRadiationAlgorithm.h:35
EnergyBalance & operator=(const EnergyBalance &)
Assignement operator, required because of pointer member.
Definition: EnergyBalance.cc:61
void setStations(const std::vector< mio::MeteoData > &in_vecMeteo)
Definition: EnergyBalance.cc:112
Definition: EnergyBalance.h:69
void Destroy()
Definition: EnergyBalance.cc:85
Definition: SnowpackInterface.h:121
double getTiming() const
Definition: EnergyBalance.cc:176
~EnergyBalance()
Definition: EnergyBalance.cc:57
void setMeteo(const mio::Grid2DObject &in_ilwr, const mio::Grid2DObject &in_ta, const mio::Grid2DObject &in_rh, const mio::Grid2DObject &in_p, const mio::Date timestamp)
Definition: EnergyBalance.cc:121
void setAlbedo(const mio::Grid2DObject &in_albedo)
Definition: EnergyBalance.cc:103
EnergyBalance(const unsigned int &i_nbworkers, const mio::Config &cfg, const mio::DEMObject &dem_in)
Definition: EnergyBalance.cc:23
std::string getGridsRequirements() const
Definition: EnergyBalance.cc:80
void setSnowPack(SnowpackInterface &mysnowpack)
Definition: EnergyBalance.cc:98