/*! \file axis_algorithm_extract.hpp \brief Algorithm for extracting an axis. */ #ifndef __XIOS_AXIS_ALGORITHM_EXTRACT_HPP__ #define __XIOS_AXIS_ALGORITHM_EXTRACT_HPP__ #include "axis_algorithm_transformation.hpp" #include "transformation.hpp" namespace xios { class CAxis; class CExtractAxis; /*! \class CAxisAlgorithmExtract Implementing extract on axis A extracted region can be considered as region that isn't masked. Only this extracted region is extracted to write on Netcdf. */ class CAxisAlgorithmExtract : public CAxisAlgorithmTransformation { public: CAxisAlgorithmExtract(CAxis* axisDestination, CAxis* axisSource, CExtractAxis* extractAxis); virtual ~CAxisAlgorithmExtract() {} static bool registerTrans(); virtual StdString getName() {return "extract_axis";} protected: void computeIndexSourceMapping_(const std::vector* >& dataAuxInputs); private: private: //! Global extract begin on axis StdSize extractBegin_; //! Global extract end on axis StdSize extractEnd_; //! Global extract size on axis StdSize extractN_; std::vector extractIndex_; private: static CGenericAlgorithmTransformation* create(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); }; } #endif // __XIOS_AXIS_ALGORITHM_EXTRACT_HPP__