source: XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_reduce_axis.hpp @ 2291

Last change on this file since 2291 was 2291, checked in by ymipsl, 2 years ago

Improve reduction transformation

  • make the difference between reduction over geometry or reduction between process.
  • geometrical reduction :

domain -> axis
axis -> scalar
domain -> scalar

  • reduction across processes for redondant geometrical cell :

axis -> axis
scalar -> scalar

Reduction can be local (only for the geometrical cell owned by current process) or global, using the "local" attribute (bool) over the reduction.

YM

  • Property svn:executable set to *
File size: 1.9 KB
Line 
1/*!
2   \file axis_algorithm_reduce_axis.hpp
3   \author Ha NGUYEN
4   \since 23 June 2016
5   \date 23 June 2016
6
7   \brief Algorithm for reduce an axis to a axis
8 */
9#ifndef __XIOS_AXIS_ALGORITHM_REDUCE_AXIS_HPP__
10#define __XIOS_AXIS_ALGORITHM_REDUCE_AXIS_HPP__
11
12#include "algorithm_transformation_reduce.hpp"
13#include "transformation.hpp"
14
15namespace xios {
16
17class CAxis;
18class CReduceAxisToAxis;
19class CReductionAlgorithm;
20
21/*!
22  \class CAxisAlgorithmReduceAxis
23  Reduce a axis to an axis
24*/
25class CAxisAlgorithmReduceAxis : public CAlgorithmTransformationReduce
26{
27public:
28  CAxisAlgorithmReduceAxis(bool isSource, CAxis* axisDestination, CAxis* axisSource, CReduceAxisToAxis* algo);
29
30 
31  virtual ~CAxisAlgorithmReduceAxis();
32
33  static bool registerTrans();
34  virtual StdString getAlgoName() {return "\\nreduce_axis_to_axis";}
35
36public:
37  static shared_ptr<CGenericAlgorithmTransformation> create(bool isSource, CGrid* gridDst, CGrid* gridSrc,
38                                                CTransformation<CAxis>* transformation,
39                                                int elementPositionInGrid,
40                                                std::map<int, int>& elementPositionInGridSrc2ScalarPosition,
41                                                std::map<int, int>& elementPositionInGridSrc2AxisPosition,
42                                                std::map<int, int>& elementPositionInGridSrc2DomainPosition,
43                                                std::map<int, int>& elementPositionInGridDst2ScalarPosition,
44                                                std::map<int, int>& elementPositionInGridDst2AxisPosition,
45                                                std::map<int, int>& elementPositionInGridDst2DomainPosition);
46
47  virtual shared_ptr<CGridAlgorithm> createGridAlgorithm(CGrid* gridSrc, CGrid* gridDst, int pos);
48  static bool dummyRegistered_;
49};
50
51}
52#endif // __XIOS_AXIS_ALGORITHM_REDUCE_AXIS_HPP__
Note: See TracBrowser for help on using the repository browser.