Ignore:
Timestamp:
09/15/15 17:30:55 (9 years ago)
Author:
mhnguyen
Message:

Implementing auto-generate rectilinear domain

+) Add a new special transformation to generate (complete) rectilinear domain

Test
+) On Curie
+) test_new_feature passed

File:
1 edited

Legend:

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

    r676 r687  
    1717#include "distribution_client.hpp" 
    1818#include "grid_transformation.hpp" 
     19#include "grid_generate.hpp" 
    1920 
    2021namespace xios { 
     
    11681169        pDom->solveRefInheritance(apply); 
    11691170        pDom->solveBaseReference(); 
     1171        pDom->solveSrcInheritance(); 
    11701172        pDom->solveInheritanceTransformation(); 
    11711173        if ((!pDom->domain_ref.isEmpty()) && (pDom->name.isEmpty())) 
     
    12031205  { 
    12041206    return transformations_; 
     1207  } 
     1208 
     1209  /*! 
     1210     Complete all the necessary (and lacking) attributes of a grid 
     1211     This function is similar to gridTransformation but works only (till now) on generate_rectilinear_domain transformation 
     1212  */ 
     1213  void CGrid::completeGrid(CGrid* transformGridSrc) 
     1214  { 
     1215    if (axis_domain_order.numElements() != transformGridSrc->axis_domain_order.numElements()) 
     1216    { 
     1217      ERROR("CGrid::transformGrid(CGrid* transformGridSrc)", 
     1218           << "Two grids have different dimension size" 
     1219           << "Dimension of grid destination " << this->getId() << " is " << axis_domain_order.numElements() << std::endl 
     1220           << "Dimension of grid source " << transformGridSrc->getId() << " is " << transformGridSrc->axis_domain_order.numElements()); 
     1221    } 
     1222    else 
     1223    { 
     1224      int ssize = axis_domain_order.numElements(); 
     1225      for (int i = 0; i < ssize; ++i) 
     1226        if (axis_domain_order(i) != (transformGridSrc->axis_domain_order)(i)) 
     1227          ERROR("CGrid::transformGrid(CGrid* transformGridSrc)", 
     1228                << "Grids " << this->getId() << " and " << transformGridSrc->getId() 
     1229                << " don't have elements in the same order"); 
     1230    } 
     1231 
     1232    CGridGenerate gridGenerate(this, transformGridSrc); 
     1233    gridGenerate.completeGrid(); 
    12051234  } 
    12061235 
Note: See TracChangeset for help on using the changeset viewer.