source: XIOS3/trunk/src/transformation/algorithm_transformation_reduce.hpp @ 2426

Last change on this file since 2426 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.2 KB
Line 
1#ifndef __XIOS_ALGORITHM_TRANSFORMATION_REDUCE_HPP__
2#define __XIOS_ALGORITHM_TRANSFORMATION_REDUCE_HPP__
3
4#include "generic_algorithm_transformation.hpp"
5#include "array_new.hpp"
6#include "local_view.hpp"
7#include "transform_connector.hpp"
8#include "reduce_transform_connector.hpp"
9
10namespace xios
11{
12
13  class CAlgorithmTransformationReduce : public CGenericAlgorithmTransformation
14  {
15    public:
16
17      CAlgorithmTransformationReduce(bool isSource) : CGenericAlgorithmTransformation(isSource) {}
18      virtual ~CAlgorithmTransformationReduce() {};
19      virtual void apply(int dimBefore, int dimAfter, const CArray<double,1>& dataIn, CArray<double,1>& dataOut);
20      virtual void computeRecvElement(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ;
21     
22    protected:
23      virtual void computeAlgorithm(shared_ptr<CLocalView> srcView, shared_ptr<CLocalView> dstView) ;
24       
25      //! Map between global index of destination element and source element
26      EReduction operator_ ;
27      TransformationIndexMap transformationMapping_;
28      shared_ptr<CReduceTransformConnector> reduceTransformConnector_ ;
29      bool detectMissingValue_=true ;
30  };
31
32}
33#endif //__XIOS_ALGORITHM_TRANSFORMATION_REDUCE_HPP__
Note: See TracBrowser for help on using the repository browser.