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/axis_algorithm_zoom.cpp

    r833 r933  
    88 */ 
    99#include "axis_algorithm_zoom.hpp" 
     10#include "axis.hpp" 
     11#include "grid.hpp" 
     12#include "grid_transformation_factory_impl.hpp" 
     13#include "zoom_axis.hpp" 
    1014 
    1115namespace xios { 
     16CGenericAlgorithmTransformation* CAxisAlgorithmZoom::create(CGrid* gridDst, CGrid* gridSrc, 
     17                                                           CTransformation<CAxis>* transformation, 
     18                                                           int elementPositionInGrid, 
     19                                                           std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 
     20                                                           std::map<int, int>& elementPositionInGridSrc2AxisPosition, 
     21                                                           std::map<int, int>& elementPositionInGridSrc2DomainPosition, 
     22                                                           std::map<int, int>& elementPositionInGridDst2ScalarPosition, 
     23                                                           std::map<int, int>& elementPositionInGridDst2AxisPosition, 
     24                                                           std::map<int, int>& elementPositionInGridDst2DomainPosition) 
     25{ 
     26  std::vector<CAxis*> axisListDestP = gridDst->getAxis(); 
     27  std::vector<CAxis*> axisListSrcP  = gridSrc->getAxis(); 
     28 
     29  CZoomAxis* zoomAxis = dynamic_cast<CZoomAxis*> (transformation); 
     30  int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 
     31  int axisSrcIndex = elementPositionInGridSrc2AxisPosition[elementPositionInGrid]; 
     32 
     33  return (new CAxisAlgorithmZoom(axisListDestP[axisDstIndex], axisListSrcP[axisSrcIndex], zoomAxis)); 
     34} 
     35bool CAxisAlgorithmZoom::registerTrans() 
     36{ 
     37  CGridTransformationFactory<CAxis>::registerTransformation(TRANS_ZOOM_AXIS, create); 
     38} 
    1239 
    1340CAxisAlgorithmZoom::CAxisAlgorithmZoom(CAxis* axisDestination, CAxis* axisSource, CZoomAxis* zoomAxis) 
     
    2653           << "Zoom size is " << zoomSize_ ); 
    2754  } 
    28  
    29 //  computeIndexSourceMapping(); 
    3055} 
    3156 
Note: See TracChangeset for help on using the changeset viewer.