Ignore:
Timestamp:
12/06/20 22:14:56 (3 years ago)
Author:
ymipsl
Message:

intermediate commit for new tranformation engine?
YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/domain.cpp

    r1974 r1984  
    11#include "domain.hpp" 
    2  
    32#include "attribute_template.hpp" 
    43#include "object_template.hpp" 
     
    2524#include "grid_scatterer_connector.hpp" 
    2625#include "grid_gatherer_connector.hpp" 
     26#include "transformation_path.hpp" 
    2727 
    2828 
     
    7777     CDomain* domain = CDomainGroup::get("domain_definition")->createChild(); 
    7878     return domain; 
    79    } 
    80    CATCH 
    81  
    82    std::map<StdString, ETranformationType> CDomain::transformationMapList_ = std::map<StdString, ETranformationType>(); 
    83    bool CDomain::_dummyTransformationMapList = CDomain::initializeTransformationMap(CDomain::transformationMapList_); 
    84  
    85    bool CDomain::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 
    86    TRY 
    87    { 
    88      m["zoom_domain"] = TRANS_ZOOM_DOMAIN; 
    89      m["interpolate_domain"] = TRANS_INTERPOLATE_DOMAIN; 
    90      m["generate_rectilinear_domain"] = TRANS_GENERATE_RECTILINEAR_DOMAIN; 
    91      m["compute_connectivity_domain"] = TRANS_COMPUTE_CONNECTIVITY_DOMAIN; 
    92      m["expand_domain"] = TRANS_EXPAND_DOMAIN; 
    93      m["reorder_domain"] = TRANS_REORDER_DOMAIN; 
    94      m["extract_domain"] = TRANS_EXTRACT_DOMAIN; 
    9579   } 
    9680   CATCH 
     
    21792163  CATCH_DUMP_ATTR 
    21802164 
    2181   
     2165///////////////////////////////////////////////////////////////////////// 
     2166///////////////             TRANSFORMATIONS                    ////////// 
     2167///////////////////////////////////////////////////////////////////////// 
     2168 
     2169  std::map<StdString, ETranformationType> CDomain::transformationMapList_ = std::map<StdString, ETranformationType>(); 
     2170  bool CDomain::dummyTransformationMapList_ = CDomain::initializeTransformationMap(CDomain::transformationMapList_); 
     2171 
     2172  bool CDomain::initializeTransformationMap(std::map<StdString, ETranformationType>& m) 
     2173  TRY 
     2174  { 
     2175    m["zoom_domain"] = TRANS_ZOOM_DOMAIN; 
     2176    m["interpolate_domain"] = TRANS_INTERPOLATE_DOMAIN; 
     2177    m["generate_rectilinear_domain"] = TRANS_GENERATE_RECTILINEAR_DOMAIN; 
     2178    m["compute_connectivity_domain"] = TRANS_COMPUTE_CONNECTIVITY_DOMAIN; 
     2179    m["expand_domain"] = TRANS_EXPAND_DOMAIN; 
     2180    m["reorder_domain"] = TRANS_REORDER_DOMAIN; 
     2181    m["extract_domain"] = TRANS_EXTRACT_DOMAIN; 
     2182  } 
     2183  CATCH 
     2184 
     2185 
    21822186  CTransformation<CDomain>* CDomain::addTransformation(ETranformationType transType, const StdString& id) 
    21832187  TRY 
     
    21882192  CATCH_DUMP_ATTR 
    21892193 
     2194  CTransformation<CDomain>* CDomain::addTransformation(ETranformationType transType, CTransformation<CDomain>* transformation) 
     2195  TRY 
     2196  { 
     2197    transformationMap_.push_back(std::make_pair(transType, transformation)); 
     2198    return transformationMap_.back().second; 
     2199  } 
     2200  CATCH_DUMP_ATTR 
    21902201  /*! 
    21912202    Check whether a domain has transformation 
     
    22342245   * Go through the hierarchy to find the domain from which the transformations must be inherited 
    22352246   */ 
    2236   void CDomain::solveInheritanceTransformation() 
     2247  void CDomain::solveInheritanceTransformation_old() 
    22372248  TRY 
    22382249  { 
     
    22532264  } 
    22542265  CATCH_DUMP_ATTR 
     2266 
     2267 
     2268  void CDomain::solveInheritanceTransformation() 
     2269  TRY 
     2270  { 
     2271    if (solveInheritanceTransformation_done_) return; 
     2272    else solveInheritanceTransformation_done_=true ; 
     2273 
     2274    CDomain* domain = this; 
     2275    CDomain* Lastdomain ; 
     2276    std::list<CDomain*> refDomains; 
     2277    bool out=false ; 
     2278    vector<StdString> excludedAttr; 
     2279    excludedAttr.push_back("domain_ref"); 
     2280     
     2281    refDomains.push_front(domain) ; 
     2282    while (domain->hasDirectDomainReference() && !out) 
     2283    { 
     2284      CDomain* lastDomain=domain ; 
     2285      domain = domain->getDirectDomainReference(); 
     2286      domain->solveRefInheritance() ; 
     2287      if (!domain->SuperClass::isEqual(lastDomain,excludedAttr)) out=true ; 
     2288      refDomains.push_front(domain) ; 
     2289    } 
     2290 
     2291    CTransformationPaths::TPath path ; 
     2292    auto& pathList = std::get<2>(path) ; 
     2293    std::get<0>(path) = EElement::DOMAIN ; 
     2294    std::get<1>(path) = refDomains.front()->getId() ; 
     2295    for (auto& domain : refDomains) 
     2296    { 
     2297      CDomain::TransMapTypes transformations = domain->getAllTransformations(); 
     2298      for(auto& transformation : transformations) pathList.push_back({transformation.second->getTransformationType(),  
     2299                                                                      transformation.second->getId()}) ; 
     2300    } 
     2301    transformationPaths_.addPath(path) ; 
     2302 
     2303  } 
     2304  CATCH_DUMP_ATTR 
     2305   
     2306///////////////////////////////////////////////////////////////////////////////////////////// 
     2307/////////////////////////////////////////////////////////////////////////////////////////////  
    22552308 
    22562309  void CDomain::setContextClient(CContextClient* contextClient) 
Note: See TracChangeset for help on using the changeset viewer.