Ignore:
Timestamp:
01/03/21 18:00:43 (3 years ago)
Author:
ymipsl
Message:

Adapt transformation algorithm to new infrastructure (on going...)

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/transformation/axis_algorithm/axis_algorithm_reduce_axis.cpp

    r1988 r1999  
    1212#include "grid.hpp" 
    1313#include "grid_transformation_factory_impl.hpp" 
    14 #include "reduction.hpp" 
     14 
    1515 
    1616namespace xios { 
     
    4747 
    4848CAxisAlgorithmReduceAxis::CAxisAlgorithmReduceAxis(bool isSource, CAxis* axisDestination, CAxis* axisSource, CReduceAxisToAxis* algo) 
    49  : CAxisAlgorithmTransformation(isSource, axisDestination, axisSource), reduction_(0) 
     49 : CAlgorithmTransformationReduce(isSource) 
    5050TRY 
    5151{ 
    5252  eliminateRedondantSrc_= false ; 
    5353  algo->checkValid(axisDestination, axisSource); 
    54   StdString op; 
     54 
    5555  switch (algo->operation) 
    5656  { 
    5757    case CReduceAxisToAxis::operation_attr::sum: 
    58       op = "sum"; 
     58      operator_ = EReduction::sum; 
    5959      break; 
    6060    case CReduceAxisToAxis::operation_attr::min: 
    61       op = "min"; 
     61      operator_ = EReduction::min; 
    6262      break; 
    6363    case CReduceAxisToAxis::operation_attr::max: 
    64       op = "max"; 
     64      operator_ = EReduction::max; 
    6565      break; 
    6666    case CReduceAxisToAxis::operation_attr::average: 
    67       op = "average"; 
     67      operator_ = EReduction::average; 
    6868      break; 
    6969    default: 
     
    7373         << "Axis destination " << axisDestination->getId()); 
    7474 
     75    TransformationIndexMap& transMap = this->transformationMapping_; 
     76    CArray<int,1>& axisDstIndex = axisDestination->index; 
     77    int nbAxisIdx = axisDstIndex.numElements(); 
     78    for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis) 
     79    { 
     80      int globalAxisIdx = axisDstIndex(idxAxis); 
     81      transMap[globalAxisIdx].resize(1); 
     82      transMap[globalAxisIdx][0]=globalAxisIdx ;       
     83    } 
     84 
    7585  } 
    76  
    77   reduction_ = CReductionAlgorithm::createOperation(CReductionAlgorithm::ReductionOperations[op]); 
     86  
     87  axisDestination->checkAttributes() ; 
     88  this->computeAlgorithm(axisSource->getLocalView(CElementView::WORKFLOW), axisDestination->getLocalView(CElementView::WORKFLOW)) ; 
    7889} 
    7990CATCH 
    8091 
    81 void CAxisAlgorithmReduceAxis::apply(const std::vector<std::pair<int,double> >& localIndex, 
    82                                        const double* dataInput, 
    83                                        CArray<double,1>& dataOut, 
    84                                        std::vector<bool>& flagInitial,                      
    85                                        bool ignoreMissingValue, bool firstPass) 
    86 TRY 
    87 { 
    88   reduction_->apply(localIndex, dataInput, dataOut, flagInitial, ignoreMissingValue, firstPass); 
    89 } 
    90 CATCH 
    91  
    92 void CAxisAlgorithmReduceAxis::updateData(CArray<double,1>& dataOut) 
    93 TRY 
    94 { 
    95   reduction_->updateData(dataOut); 
    96 } 
    97 CATCH 
    9892 
    9993CAxisAlgorithmReduceAxis::~CAxisAlgorithmReduceAxis() 
    10094TRY 
    10195{ 
    102   if (0 != reduction_) delete reduction_; 
     96  
    10397} 
    10498CATCH 
    10599 
    106 void CAxisAlgorithmReduceAxis::computeIndexSourceMapping_(const std::vector<CArray<double,1>* >& dataAuxInputs) 
    107 TRY 
    108 { 
    109   this->transformationMapping_.resize(1); 
    110   this->transformationWeight_.resize(1); 
    111  
    112   TransformationIndexMap& transMap = this->transformationMapping_[0]; 
    113   TransformationWeightMap& transWeight = this->transformationWeight_[0]; 
    114   CArray<int,1>& axisDstIndex = axisDest_->index; 
    115   int nbAxisIdx = axisDstIndex.numElements(); 
    116   for (int idxAxis = 0; idxAxis < nbAxisIdx; ++idxAxis) 
    117   { 
    118     int globalAxisIdx = axisDstIndex(idxAxis); 
    119     transMap[globalAxisIdx].resize(1); 
    120     transWeight[globalAxisIdx].resize(1); 
    121     transMap[globalAxisIdx][0]=globalAxisIdx ;       
    122     transWeight[globalAxisIdx][0] = 1.0 ;       
    123   } 
    124 } 
    125 CATCH 
    126100 
    127101} 
Note: See TracChangeset for help on using the changeset viewer.