Ignore:
Timestamp:
04/08/16 15:00:45 (8 years ago)
Author:
mhnguyen
Message:

Exposing transformation to Fortran interface

+) Export zoom and axis transformation to Fortran interface

Test
+) On Curie
+) All work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/node/domain.cpp

    r829 r836  
    5656     CDomain* domain = CDomainGroup::get("domain_definition")->createChild(); 
    5757     return domain; 
     58   } 
     59 
     60   std::map<StdString, ETranformationType> CDomain::transformationMapList_ = std::map<StdString, ETranformationType>(); 
     61   bool CDomain::_dummyTransformationMapList = CDomain::initializeTransformationMap(CDomain::transformationMapList_); 
     62 
     63   bool CDomain::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 
     64   { 
     65     m["zoom_domain"] = TRANS_ZOOM_DOMAIN; 
     66     m["interpolate_domain"] = TRANS_INTERPOLATE_DOMAIN; 
     67     m["generate_rectilinear_domain"] = TRANS_GENERATE_RECTILINEAR_DOMAIN; 
    5868   } 
    5969 
     
    19061916  } 
    19071917 
     1918  CTransformation<CDomain>* CDomain::addTransformation(ETranformationType transType, const StdString& id) 
     1919  { 
     1920    transformationMap_.push_back(std::make_pair(transType, CTransformation<CDomain>::createTransformation(transType,id))); 
     1921    return transformationMap_.back().second; 
     1922  } 
     1923 
    19081924  /*! 
    19091925    Check whether a domain has transformation 
     
    19872003    if (node.goToChildElement()) 
    19882004    { 
    1989       StdString zoomDomainDefRoot("zoom_domain_definition"); 
    1990       StdString zoom("zoom_domain"); 
    1991       StdString interpDomainDefRoot("interpolate_domain_definition"); 
    1992       StdString interpFromFile("interpolate_domain"); 
    1993       StdString generateRectilinearDefRoot("generate_rectilinear_domain_definition"); 
    1994       StdString generateRectilinear("generate_rectilinear_domain"); 
     2005      StdString nodeElementName; 
    19952006      do 
    19962007      { 
     
    19992010        { nodeId = node.getAttributes()["id"]; } 
    20002011 
    2001         if (node.getElementName() == zoom) { 
    2002           CZoomDomain* tmp = (CZoomDomainGroup::get(zoomDomainDefRoot))->createChild(nodeId); 
    2003           tmp->parse(node); 
    2004           transformationMap_.push_back(std::make_pair(TRANS_ZOOM_DOMAIN,tmp)); 
    2005         } 
    2006         else if (node.getElementName() == interpFromFile) 
     2012        nodeElementName = node.getElementName(); 
     2013        std::map<StdString, ETranformationType>::const_iterator ite = transformationMapList_.end(), it; 
     2014        it = transformationMapList_.find(nodeElementName); 
     2015        if (ite != it) 
    20072016        { 
    2008           CInterpolateDomain* tmp = (CInterpolateDomainGroup::get(interpDomainDefRoot))->createChild(nodeId); 
    2009           tmp->parse(node); 
    2010           transformationMap_.push_back(std::make_pair(TRANS_INTERPOLATE_DOMAIN,tmp)); 
    2011         } 
    2012         else if (node.getElementName() == generateRectilinear) 
    2013         { 
    2014           CGenerateRectilinearDomain* tmp = (CGenerateRectilinearDomainGroup::get(generateRectilinearDefRoot))->createChild(nodeId); 
    2015           tmp->parse(node); 
    2016           transformationMap_.push_back(std::make_pair(TRANS_GENERATE_RECTILINEAR_DOMAIN,tmp)); 
     2017          transformationMap_.push_back(std::make_pair(it->second, CTransformation<CDomain>::createTransformation(it->second, 
     2018                                                                                                                nodeId, 
     2019                                                                                                                &node))); 
    20172020        } 
    20182021      } while (node.goToNextElement()) ; 
Note: See TracChangeset for help on using the changeset viewer.