MeteoIODoc  MeteoIODoc-2.6.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ProcPSUMDistribute.h
Go to the documentation of this file.
1 /***********************************************************************************/
2 /* Copyright 2014 WSL Institute for Snow and Avalanche Research SLF-DAVOS */
3 /***********************************************************************************/
4 /* This file is part of MeteoIO.
5  MeteoIO 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  MeteoIO 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 MeteoIO. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef PROCPSUMDISTIBUTE_H
19 #define PROCPSUMDISTIBUTE_H
20 
22 #include <vector>
23 #include <string>
24 
25 namespace mio {
26 
49  public:
50  ProcPSUMDistribute(const std::vector<std::string>& vec_args, const std::string& name);
51 
52  virtual void process(const unsigned int& param, const std::vector<MeteoData>& ivec,
53  std::vector<MeteoData>& ovec);
54 
55  static void SmartDistributePSUM(const double& precip, const size_t& start_idx, const size_t& end_idx, const size_t& paramindex, std::vector<MeteoData>& vecM);
56  static void CstDistributePSUM(const double& precip, const size_t& start_idx, const size_t& end_idx, const size_t& paramindex, std::vector<MeteoData>& vecM);
57  private:
58  void parse_args(std::vector<std::string> vec_args);
59  static size_t findNextAccumulation(const unsigned int& param, const std::vector<MeteoData>& ivec, const Date& endDate, size_t ii);
60  static void fillInterval(const unsigned int& param, std::vector<MeteoData>& ivec, const size_t& start, const size_t& end, const double value);
61 
62  static const double thresh_rh, thresh_Dt;
63  double measured_period;
64  bool is_soft;
65 };
66 
67 } //end namespace
68 
69 #endif
virtual void process(const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)
Distributes a precipitation sum over the most probable preceeding time steps. This works by looking a...
Definition: ProcPSUMDistribute.cc:50
ProcPSUMDistribute(const std::vector< std::string > &vec_args, const std::string &name)
Definition: ProcPSUMDistribute.cc:28
static void CstDistributePSUM(const double &precip, const size_t &start_idx, const size_t &end_idx, const size_t &paramindex, std::vector< MeteoData > &vecM)
Definition: ProcPSUMDistribute.cc:159
An abstract class.
Definition: ProcessingBlock.h:63
static void SmartDistributePSUM(const double &precip, const size_t &start_idx, const size_t &end_idx, const size_t &paramindex, std::vector< MeteoData > &vecM)
Definition: ProcPSUMDistribute.cc:181
A class to handle timestamps. This class handles conversion between different time display formats (I...
Definition: Date.h:79
Distributes precipitation on the preceeding timesteps in a physically plausible way This assumes that...
Definition: ProcPSUMDistribute.h:48