Changeset 1566


Ignore:
Timestamp:
08/06/18 17:41:50 (6 years ago)
Author:
oabramkina
Message:

Bugfix for masked distributed axis.

Previously mask wasn't working at all, an exception was thrown.

Location:
XIOS
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • XIOS/branchs/xios-2.5/src/node/axis.cpp

    r1421 r1566  
    12831283    globalLocalIndexMap_.rehash(std::ceil(index.numElements()/globalLocalIndexMap_.max_load_factor())); 
    12841284    nbIndexGlob = 0; 
     1285    int nbIndLoc = 0; 
    12851286    for (idx = 0; idx < nbReceived; ++idx) 
    12861287    { 
     
    12891290      { 
    12901291         gloInd = tmp(ind); 
     1292         nbIndLoc = (gloInd % n_glo) - begin; 
    12911293         if (0 == globalLocalIndexMap_.count(gloInd)) 
    12921294         { 
    1293            index(nbIndexGlob) = gloInd % n_glo;            
    1294            globalLocalIndexMap_[gloInd] = nbIndexGlob 
     1295           index(nbIndLoc) = gloInd % n_glo;            
     1296           globalLocalIndexMap_[gloInd] = nbIndLoc 
    12951297           ++nbIndexGlob; 
    12961298         }  
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/axis.cpp

    r1421 r1566  
    12831283    globalLocalIndexMap_.rehash(std::ceil(index.numElements()/globalLocalIndexMap_.max_load_factor())); 
    12841284    nbIndexGlob = 0; 
     1285    int nbIndLoc = 0; 
    12851286    for (idx = 0; idx < nbReceived; ++idx) 
    12861287    { 
     
    12891290      { 
    12901291         gloInd = tmp(ind); 
     1292         nbIndLoc = (gloInd % n_glo) - begin; 
    12911293         if (0 == globalLocalIndexMap_.count(gloInd)) 
    12921294         { 
    1293            index(nbIndexGlob) = gloInd % n_glo;            
    1294            globalLocalIndexMap_[gloInd] = nbIndexGlob 
     1295           index(nbIndLoc) = gloInd % n_glo;            
     1296           globalLocalIndexMap_[gloInd] = nbIndLoc 
    12951297           ++nbIndexGlob; 
    12961298         }  
  • XIOS/trunk/src/node/axis.cpp

    r1561 r1566  
    792792          const int begin = serverIndexBegin[*itRank][orderPositionInGrid]; 
    793793          const int ni    = serverDimensionSizes[*itRank][orderPositionInGrid]; 
    794           const int end   = begin + ni - 1;           
    795794 
    796795          msgs.push_back(CMessage()); 
    797796          CMessage& msg = msgs.back(); 
    798797          msg << this->getId(); 
    799           msg << ni << begin << end;           
     798          msg << ni << begin; 
    800799          msg << isCompressible_;                     
    801800 
     
    826825  void CAxis::recvDistributionAttribute(CBufferIn& buffer) 
    827826  { 
    828     int ni_srv, begin_srv, end_srv; 
    829     buffer >> ni_srv >> begin_srv >> end_srv;     
     827    int ni_srv, begin_srv; 
     828    buffer >> ni_srv >> begin_srv; 
    830829    buffer >> isCompressible_;             
    831830 
     
    11381137    globalLocalIndexMap_.rehash(std::ceil(index.numElements()/globalLocalIndexMap_.max_load_factor())); 
    11391138    nbIndexGlob = 0; 
     1139    int nbIndLoc = 0; 
    11401140    for (idx = 0; idx < nbReceived; ++idx) 
    11411141    { 
     
    11441144      { 
    11451145         gloInd = tmp(ind); 
     1146         nbIndLoc = (gloInd % n_glo)-begin; 
    11461147         if (0 == globalLocalIndexMap_.count(gloInd)) 
    11471148         { 
    1148            index(nbIndexGlob) = gloInd % n_glo;            
    1149            globalLocalIndexMap_[gloInd] = nbIndexGlob;   
     1149           index(nbIndLoc) = gloInd % n_glo; 
     1150           globalLocalIndexMap_[gloInd] = nbIndLoc; 
    11501151           ++nbIndexGlob; 
    11511152         }  
Note: See TracChangeset for help on using the changeset viewer.