/*! \file scalar_algorithm_reduce_scalar.hpp \brief Algorithm for reduce an scalar to a scalar */ #ifndef __XIOS_SCALAR_ALGORITHM_REDUCE_SCALAR_HPP__ #define __XIOS_SCALAR_ALGORITHM_REDUCE_SCALAR_HPP__ #include "algorithm_transformation_reduce.hpp" #include "transformation.hpp" namespace xios { class CScalar; class CReduceScalarToScalar; class CReductionAlgorithm; /*! \class CScalarAlgorithmReduceScalar Reducing an scalar to a scalar */ class CScalarAlgorithmReduceScalar : public CAlgorithmTransformationReduce { public: CScalarAlgorithmReduceScalar(bool isSource, CScalar* scalarDestination, CScalar* scalarSource, CReduceScalarToScalar* algo); virtual ~CScalarAlgorithmReduceScalar(); static bool registerTrans(); virtual StdString getAlgoName() {return "\\nreduce_scalar";} protected: public: static shared_ptr create(bool isSource, CGrid* gridDst, CGrid* gridSrc, CTransformation* transformation, int elementPositionInGrid, std::map& elementPositionInGridSrc2ScalarPosition, std::map& elementPositionInGridSrc2AxisPosition, std::map& elementPositionInGridSrc2DomainPosition, std::map& elementPositionInGridDst2ScalarPosition, std::map& elementPositionInGridDst2AxisPosition, std::map& elementPositionInGridDst2DomainPosition); virtual shared_ptr createGridAlgorithm(CGrid* gridSrc, CGrid* gridDst, int pos); static bool dummyRegistered_; }; } #endif // __XIOS_SCALAR_ALGORITHM_REDUCE_SCALAR_HPP__