#include "reduce_axis_to_axis.hpp" #include "axis_algorithm_reduce_axis.hpp" #include "type.hpp" #include "axis.hpp" namespace xios { /// ////////////////////// Définitions ////////////////////// /// CReduceAxisToAxis::CReduceAxisToAxis(void) : CObjectTemplate(), CReduceAxisToAxisAttributes(), CTransformation() { /* Ne rien faire de plus */ } CReduceAxisToAxis::CReduceAxisToAxis(const StdString & id) : CObjectTemplate(id), CReduceAxisToAxisAttributes(), CTransformation() { /* Ne rien faire de plus */ } CReduceAxisToAxis::~CReduceAxisToAxis(void) {} CTransformation* CReduceAxisToAxis::create(const StdString& id, xml::CXMLNode* node) { CReduceAxisToAxis* reduceAxis = CReduceAxisToAxisGroup::get("reduce_axis_to_axis_definition")->createChild(id); if (node) reduceAxis->parse(*node); return static_cast*>(reduceAxis); } bool CReduceAxisToAxis::registerTrans() { return registerTransformation(TRANS_REDUCE_AXIS_TO_AXIS, {create, getTransformation}); } bool CReduceAxisToAxis::_dummyRegistered = CReduceAxisToAxis::registerTrans(); //---------------------------------------------------------------- StdString CReduceAxisToAxis::GetName(void) { return StdString("reduce_axis_to_axis"); } StdString CReduceAxisToAxis::GetDefName(void) { return StdString("reduce_axis_to_axis"); } ENodeType CReduceAxisToAxis::GetType(void) { return eReduceAxisToAxis; } void CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc) { if (this->operation.isEmpty()) ERROR("CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)", << "An operation must be defined." << "Axis source " <getId() << std::endl << "Axis destination " << axisDst->getId()); if (axisDst->n_glo != axisSrc->n_glo) ERROR("CReduceAxisToAxis::checkValid(CAxis* axisDst, CAxis* axisSrc)", << "both axis should have same n_glo" << "Axis source " <getId() << " has n_glo " << axisSrc->n_glo << std::endl << "Axis destination " << axisDst->getId() << " has n_glo " << axisDst->n_glo); } shared_ptr CReduceAxisToAxis::createAlgorithm(bool isSource, CGrid* gridDst, CGrid* gridSrc, int elementPositionInGrid, std::map& elementPositionInGridSrc2ScalarPosition, std::map& elementPositionInGridSrc2AxisPosition, std::map& elementPositionInGridSrc2DomainPosition, std::map& elementPositionInGridDst2ScalarPosition, std::map& elementPositionInGridDst2AxisPosition, std::map& elementPositionInGridDst2DomainPosition) { return CAxisAlgorithmReduceAxis::create(isSource, gridDst, gridSrc, this, elementPositionInGrid, elementPositionInGridSrc2ScalarPosition, elementPositionInGridSrc2AxisPosition, elementPositionInGridSrc2DomainPosition, elementPositionInGridDst2ScalarPosition, elementPositionInGridDst2AxisPosition, elementPositionInGridDst2DomainPosition); } }