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

    r833 r933  
    88 */ 
    99#include "domain_algorithm_zoom.hpp" 
     10#include "zoom_domain.hpp" 
     11#include "domain.hpp" 
     12#include "grid.hpp" 
     13#include "grid_transformation_factory_impl.hpp" 
    1014 
    1115namespace xios { 
     16CGenericAlgorithmTransformation* CDomainAlgorithmZoom::create(CGrid* gridDst, CGrid* gridSrc, 
     17                                                             CTransformation<CDomain>* 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<CDomain*> domainListDestP = gridDst->getDomains(); 
     27  std::vector<CDomain*> domainListSrcP  = gridSrc->getDomains(); 
     28 
     29  CZoomDomain* zoomDomain = dynamic_cast<CZoomDomain*> (transformation); 
     30  int domainDstIndex = elementPositionInGridDst2DomainPosition[elementPositionInGrid]; 
     31  int domainSrcIndex = elementPositionInGridSrc2DomainPosition[elementPositionInGrid]; 
     32 
     33  return (new CDomainAlgorithmZoom(domainListDestP[domainDstIndex], domainListSrcP[domainSrcIndex], zoomDomain)); 
     34} 
     35 
     36bool CDomainAlgorithmZoom::registerTrans() 
     37{ 
     38  CGridTransformationFactory<CDomain>::registerTransformation(TRANS_ZOOM_DOMAIN, create); 
     39} 
    1240 
    1341CDomainAlgorithmZoom::CDomainAlgorithmZoom(CDomain* domainDestination, CDomain* domainSource, CZoomDomain* zoomDomain) 
     
    3967           << "Zoom size is " << zoomNj_ ); 
    4068  } 
    41  
    42 //  computeIndexSourceMapping(); 
    4369} 
    4470 
     
    75101  TransformationWeightMap& transWeight = this->transformationWeight_[0]; 
    76102 
    77 //  std::map<int, std::vector<int> >& transMap = this->transformationMapping_; 
    78 //  std::map<int, std::vector<double> >& transWeight = this->transformationWeight_; 
    79103  int domainGlobalIndex; 
    80104  for (int j = 0; j < nj; ++j) 
Note: See TracChangeset for help on using the changeset viewer.