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_reduce_domain.cpp

    r918 r933  
    1111#include "axis.hpp" 
    1212#include "domain.hpp" 
     13#include "grid.hpp" 
     14#include "grid_transformation_factory_impl.hpp" 
    1315 
    1416#include "sum.hpp" 
    1517 
    1618namespace xios { 
     19CGenericAlgorithmTransformation* CAxisAlgorithmReduceDomain::create(CGrid* gridDst, CGrid* gridSrc, 
     20                                                                   CTransformation<CAxis>* transformation, 
     21                                                                   int elementPositionInGrid, 
     22                                                                   std::map<int, int>& elementPositionInGridSrc2ScalarPosition, 
     23                                                                   std::map<int, int>& elementPositionInGridSrc2AxisPosition, 
     24                                                                   std::map<int, int>& elementPositionInGridSrc2DomainPosition, 
     25                                                                   std::map<int, int>& elementPositionInGridDst2ScalarPosition, 
     26                                                                   std::map<int, int>& elementPositionInGridDst2AxisPosition, 
     27                                                                   std::map<int, int>& elementPositionInGridDst2DomainPosition) 
     28{ 
     29  std::vector<CAxis*> axisListDestP = gridDst->getAxis(); 
     30  std::vector<CDomain*> domainListSrcP = gridSrc->getDomains(); 
     31 
     32  CReduceDomainToAxis* reduceDomain = dynamic_cast<CReduceDomainToAxis*> (transformation); 
     33  int axisDstIndex   = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 
     34  int domainSrcIndex = elementPositionInGridSrc2DomainPosition[elementPositionInGrid]; 
     35 
     36  return (new CAxisAlgorithmReduceDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], reduceDomain)); 
     37} 
     38 
     39bool CAxisAlgorithmReduceDomain::registerTrans() 
     40{ 
     41  CGridTransformationFactory<CAxis>::registerTransformation(TRANS_REDUCE_DOMAIN_TO_AXIS, create); 
     42} 
     43 
    1744 
    1845CAxisAlgorithmReduceDomain::CAxisAlgorithmReduceDomain(CAxis* axisDestination, CDomain* domainSource, CReduceDomainToAxis* algo) 
Note: See TracChangeset for help on using the changeset viewer.