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_extract_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* CAxisAlgorithmExtractDomain::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  CExtractDomainToAxis* extractDomain = dynamic_cast<CExtractDomainToAxis*> (transformation); 
     33  int axisDstIndex = elementPositionInGridDst2AxisPosition[elementPositionInGrid]; 
     34  int domainSrcIndex = elementPositionInGridSrc2DomainPosition[elementPositionInGrid]; 
     35 
     36  return (new CAxisAlgorithmExtractDomain(axisListDestP[axisDstIndex], domainListSrcP[domainSrcIndex], extractDomain)); 
     37} 
     38 
     39//bool CAxisAlgorithmExtractDomain::_dummyRegistered = CAxisAlgorithmExtractDomain::registerTrans(); 
     40bool CAxisAlgorithmExtractDomain::registerTrans() 
     41{ 
     42  CGridTransformationFactory<CAxis>::registerTransformation(TRANS_EXTRACT_DOMAIN_TO_AXIS, create); 
     43} 
     44 
    1745 
    1846CAxisAlgorithmExtractDomain::CAxisAlgorithmExtractDomain(CAxis* axisDestination, CDomain* domainSource, CExtractDomainToAxis* algo) 
Note: See TracChangeset for help on using the changeset viewer.