source: XIOS/dev/dev_trunk_omp/src/transformation/scalar_algorithm_reduce_scalar.hpp @ 1724

Last change on this file since 1724 was 1680, checked in by yushan, 5 years ago

MARK: Dynamic workflow graph developement. Branch up to date with trunk @1676. Arithmetic filter unified

File size: 2.3 KB
Line 
1/*!
2   \file scalar_algorithm_reduce_scalar.hpp
3   \brief Algorithm for reduce an scalar to a scalar
4 */
5#ifndef __XIOS_SCALAR_ALGORITHM_REDUCE_SCALAR_HPP__
6#define __XIOS_SCALAR_ALGORITHM_REDUCE_SCALAR_HPP__
7
8#include "scalar_algorithm_transformation.hpp"
9#include "transformation.hpp"
10#include "reduction.hpp"
11
12namespace xios {
13
14class CScalar;
15class CReduceScalarToScalar;
16class CReductionAlgorithm;
17
18/*!
19  \class CScalarAlgorithmReduceScalar
20  Reducing an scalar to a scalar
21*/
22class CScalarAlgorithmReduceScalar : public CScalarAlgorithmTransformation, public CReductionAlgorithm
23{
24public:
25  CScalarAlgorithmReduceScalar(CScalar* scalarDestination, CScalar* scalarSource, CReduceScalarToScalar* algo);
26
27  virtual void apply(const std::vector<std::pair<int,double> >& localIndex,
28                     const double* dataInput,
29                     CArray<double,1>& dataOut,
30                     std::vector<bool>& flagInitial,
31                     bool ignoreMissingValue, bool firstPass);
32
33  virtual void updateData(CArray<double,1>& dataOut);
34 
35  virtual ~CScalarAlgorithmReduceScalar();
36
37  static bool registerTrans();
38
39  virtual StdString getName() {return "Scalar Trans. Filter \\n Reduce Scalar";}
40
41protected:
42  void computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs);
43
44protected:
45  CReductionAlgorithm* reduction_;
46
47private:
48
49  static CGenericAlgorithmTransformation* create(CGrid* gridDst, CGrid* gridSrc,
50                                                CTransformation<CScalar>* transformation,
51                                                int elementPositionInGrid,
52                                                std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
53                                                std::map<int, int>& elementPositionInGridSrc2AxisPosition,
54                                                std::map<int, int>& elementPositionInGridSrc2DomainPosition,
55                                                std::map<int, int>& elementPositionInGridDst2ScalarPosition,
56                                                std::map<int, int>& elementPositionInGridDst2AxisPosition,
57                                                std::map<int, int>& elementPositionInGridDst2DomainPosition);
58};
59
60}
61#endif // __XIOS_SCALAR_ALGORITHM_REDUCE_SCALAR_HPP__
Note: See TracBrowser for help on using the repository browser.