Changeset 894 for XIOS


Ignore:
Timestamp:
07/08/16 15:28:10 (8 years ago)
Author:
ymipsl
Message:

Bug fix due to introduction of scalar elements.

MHN

File:
1 edited

Legend:

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

    r887 r894  
    906906        std::vector<CAxis*> vecAxis; 
    907907        std::vector<CScalar*> vecScalar; 
    908  
     908        std::vector<int> axisDomainOrderTmp; 
     909         
    909910        if (!domain_ref.isEmpty()) 
    910911        { 
    911912          StdString tmp = domain_ref.getValue(); 
    912913          if (CDomain::has(domain_ref)) 
     914          { 
    913915            vecDom.push_back(CDomain::get(domain_ref)); 
     916            axisDomainOrderTmp.push_back(2); 
     917          } 
    914918          else 
    915919            ERROR("CField::solveGridReference(void)", 
     
    920924        { 
    921925          if (CAxis::has(axis_ref)) 
     926          { 
    922927            vecAxis.push_back(CAxis::get(axis_ref)); 
     928            axisDomainOrderTmp.push_back(1); 
     929          } 
    923930          else 
    924931            ERROR("CField::solveGridReference(void)", 
     
    929936        { 
    930937          if (CScalar::has(scalar_ref)) 
     938          { 
    931939            vecScalar.push_back(CScalar::get(scalar_ref)); 
     940            axisDomainOrderTmp.push_back(0); 
     941          } 
    932942          else 
    933943            ERROR("CField::solveGridReference(void)", 
    934944                  << "Invalid reference to scalar '" << scalar_ref.getValue() << "'."); 
    935945        } 
     946         
     947        CArray<int,1> axisDomainOrder(axisDomainOrderTmp.size()); 
     948        for (int idx = 0; idx < axisDomainOrderTmp.size(); ++idx) 
     949        { 
     950          axisDomainOrder(idx) = axisDomainOrderTmp[idx]; 
     951        } 
    936952 
    937953        // Warning: the gridId shouldn't be set as the grid_ref since it could be inherited 
    938         StdString gridId = CGrid::generateId(vecDom, vecAxis, vecScalar); 
     954        StdString gridId = CGrid::generateId(vecDom, vecAxis, vecScalar,axisDomainOrder); 
    939955        if (CGrid::has(gridId)) 
    940956          this->grid = CGrid::get(gridId); 
    941957        else 
    942           this->grid = CGrid::createGrid(gridId, vecDom, vecAxis, vecScalar); 
     958          this->grid = CGrid::createGrid(gridId, vecDom, vecAxis, vecScalar,axisDomainOrder); 
    943959      } 
    944960      else 
Note: See TracChangeset for help on using the changeset viewer.