Ignore:
Timestamp:
09/22/16 10:58:32 (8 years ago)
Author:
mhnguyen
Message:

Improving transformation selection. Instead of modifying directly grid_transformation
we only need to register a new transformation with the framework

+) Update all transformations with this new method

Test
+) On Curie
+) Basic tests pass

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/transformation/scalar_algorithm_reduce_axis.cpp

    r918 r933  
    1212#include "reduce_axis_to_scalar.hpp" 
    1313#include "sum.hpp" 
     14#include "grid.hpp" 
     15#include "grid_transformation_factory_impl.hpp" 
    1416 
    1517namespace xios { 
     18CGenericAlgorithmTransformation* CScalarAlgorithmReduceScalar::create(CGrid* gridDst, CGrid* gridSrc, 
     19                                                                     CTransformation<CScalar>* transformation, 
     20                                                                     int elementPositionInGrid, 
     21                                                                     std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 
     22                                                                     std::map<int, int>& elementPositionInGridSrc2AxisPosition, 
     23                                                                     std::map<int, int>& elementPositionInGridSrc2DomainPosition, 
     24                                                                     std::map<int, int>& elementPositionInGridDst2ScalarPosition, 
     25                                                                     std::map<int, int>& elementPositionInGridDst2AxisPosition, 
     26                                                                     std::map<int, int>& elementPositionInGridDst2DomainPosition) 
     27{ 
     28  std::vector<CScalar*> scalarListDestP = gridDst->getScalars(); 
     29  std::vector<CAxis*> axisListSrcP  = gridSrc->getAxis(); 
     30 
     31  CReduceAxisToScalar* reduceAxis = dynamic_cast<CReduceAxisToScalar*> (transformation); 
     32  int scalarDstIndex = elementPositionInGridDst2ScalarPosition[elementPositionInGrid]; 
     33  int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid]; 
     34 
     35  return (new CScalarAlgorithmReduceScalar(scalarListDestP[scalarDstIndex], axisListSrcP[axisSrcIndex], reduceAxis)); 
     36} 
     37 
     38bool CScalarAlgorithmReduceScalar::registerTrans() 
     39{ 
     40  CGridTransformationFactory<CScalar>::registerTransformation(TRANS_REDUCE_AXIS_TO_SCALAR, create); 
     41} 
    1642 
    1743CScalarAlgorithmReduceScalar::CScalarAlgorithmReduceScalar(CScalar* scalarDestination, CAxis* axisSource, CReduceAxisToScalar* algo) 
Note: See TracChangeset for help on using the changeset viewer.