Changeset 1311


Ignore:
Timestamp:
10/24/17 11:03:29 (4 years ago)
Author:
ymipsl
Message:

Fix conflict between for domain mask_1d and mask_2d when inheritance is done after transformation. Now class attribute "domainMask" is fill either by mask_1d or mask_2d and will be used instead of mask_1d in code.
This is a temporary fix which will solve later by reconstructing a cleanear grid graph.

YM

Location:
XIOS/dev/XIOS_DEV_CMIP6/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/distribution_client.cpp

    r1250 r1311  
    108108  for (int i = 0; i < domainNum_;++i) 
    109109  { 
    110     domainMasks_[i].resize(domList[i]->mask_1d.numElements()); 
    111     domainMasks_[i] = domList[i]->mask_1d; 
     110    domainMasks_[i].resize(domList[i]->domainMask.numElements()); 
     111    domainMasks_[i] = domList[i]->domainMask; 
    112112  } 
    113113 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.cpp

    r1305 r1311  
    10401040      if (!mask_2d.isEmpty()) 
    10411041      { 
    1042         mask_1d.resize(mask_2d.extent(0) * mask_2d.extent(1)); 
     1042        domainMask.resize(mask_2d.extent(0) * mask_2d.extent(1)); 
    10431043        for (int j = 0; j < nj; ++j) 
    1044           for (int i = 0; i < ni; ++i) mask_1d(i+j*ni) = mask_2d(i,j); 
    1045         mask_2d.reset(); 
     1044          for (int i = 0; i < ni; ++i) domainMask(i+j*ni) = mask_2d(i,j); 
     1045//        mask_2d.reset(); 
    10461046      } 
    10471047      else if (mask_1d.isEmpty()) 
    10481048      { 
    1049         mask_1d.resize(i_index.numElements()); 
    1050         for (int i = 0; i < i_index.numElements(); ++i) mask_1d(i) = true; 
     1049        domainMask.resize(i_index.numElements()); 
     1050        for (int i = 0; i < i_index.numElements(); ++i) domainMask(i) = true; 
    10511051      } 
    10521052   } 
     
    11971197         { 
    11981198           ind=i+ni*j ; 
    1199            localMask(ind)=mask_1d(ind) ; 
     1199           localMask(ind)=domainMask(ind) ; 
    12001200         } 
    12011201     } 
     
    21862186        { 
    21872187          idx = static_cast<int>(it->second[n]); 
    2188           list_mask.back()(n) = mask_1d(globalLocalIndexMap_[idx]); 
     2188          list_mask.back()(n) = domainMask(globalLocalIndexMap_[idx]); 
    21892189        } 
    21902190 
     
    26602660    nbMaskInd = globalLocalIndexMap_.size(); 
    26612661    mask_1d.resize(nbMaskInd); 
     2662    domainMask.resize(nbMaskInd); 
    26622663    mask_1d = false; 
    26632664     
     
    26722673          mask_1d(lInd) = tmp(ind); 
    26732674      } 
    2674     }     
     2675    } 
     2676    domainMask=mask_1d ; 
    26752677  } 
    26762678 
     
    30123014         dataJIndex(lInd) = (-1 == dataJIndex(lInd)) ? tmpJ(ind) : dataJIndex(lInd);   
    30133015 
    3014          if (!mask_1d(lInd))   // Include mask info into data index on the RECEIVE getServerDimensionSizes     
     3016         if (!domainMask(lInd))   // Include mask info into data index on the RECEIVE getServerDimensionSizes     
    30153017         { 
    30163018           dataIIndex(lInd) = dataJIndex(lInd) = -1; 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/domain.hpp

    r1291 r1311  
    142142         CArray<size_t,1> localIndexToWriteOnServer;          
    143143 
    144          CArray<bool, 1> localMask; 
     144         CArray<bool, 1> domainMask; // mask_1d, mask_2d -> domainMask 
     145         CArray<bool, 1> localMask; // domainMask + indexing 
    145146         bool isCurvilinear ; 
    146147         bool hasBounds ; 
  • XIOS/dev/XIOS_DEV_CMIP6/src/node/grid.cpp

    r1294 r1311  
    362362 
    363363      std::vector<CArray<bool,1>* > domainMasks(domainP.size()); 
    364       for (int i = 0; i < domainMasks.size(); ++i) domainMasks[i] = &(domainP[i]->mask_1d); 
     364      for (int i = 0; i < domainMasks.size(); ++i) domainMasks[i] = &(domainP[i]->domainMask); 
    365365      std::vector<CArray<bool,1>* > axisMasks(axisP.size()); 
    366366      for (int i = 0; i < axisMasks.size(); ++i) axisMasks[i] = &(axisP[i]->mask); 
     
    404404 
    405405      std::vector<CArray<bool,1>* > domainMasks(domainP.size()); 
    406       for (int i = 0; i < domainMasks.size(); ++i) domainMasks[i] = &(domainP[i]->mask_1d); 
     406      for (int i = 0; i < domainMasks.size(); ++i) domainMasks[i] = &(domainP[i]->domainMask); 
    407407      std::vector<CArray<bool,1>* > axisMasks(axisP.size()); 
    408408      for (int i = 0; i < axisMasks.size(); ++i) axisMasks[i] = &(axisP[i]->mask); 
     
    17751775                                        const CArray<int,1>& axisDomainOrder) 
    17761776  { 
    1777     globalDim.resize(domains.size()*2+axis.size()+scalars.size()); 
     1777 //   globalDim.resize(domains.size()*2+axis.size()+scalars.size()); 
     1778    globalDim.resize(domains.size()*2+axis.size()); 
    17781779    int positionDimensionDistributed = 1; 
    17791780    int idx = 0, idxDomain = 0, idxAxis = 0, idxScalar = 0; 
     
    18051806      else 
    18061807      { 
    1807         globalDim[idx] = 1; 
     1808//        globalDim[idx] = 1; 
    18081809        ++idxScalar; 
    1809         ++idx; 
     1810//        ++idx; 
    18101811      } 
    18111812    } 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/axis_algorithm_interpolate.cpp

    r937 r1311  
    313313    for (size_t idx = 0; idx < vecAxisValueSize; ++idx) 
    314314    { 
    315       if (dom->mask_1d(idx)) ++vecAxisValueSizeWithMask; 
     315      if (dom->domainMask(idx)) ++vecAxisValueSizeWithMask; 
    316316    } 
    317317 
     
    324324      for (size_t idx = 0; idx < vecAxisValueSize; ++idx) 
    325325      { 
    326         if (dom->mask_1d(idx)) 
     326        if (dom->domainMask(idx)) 
    327327        { 
    328328          transPosition_[indexMask].resize(1); 
     
    345345    for (size_t idx = 0; idx < vecAxisValueSize; ++idx) 
    346346    { 
    347       if (dom->mask_1d(idx)) 
     347      if (dom->domainMask(idx)) 
    348348      { 
    349349        size_t axisValueSize = 0; 
  • XIOS/dev/XIOS_DEV_CMIP6/src/transformation/domain_algorithm_expand.cpp

    r1300 r1311  
    168168  int njSrc = domainSource->nj, jbegin = domainSource->jbegin; 
    169169  int dataDimSrc = domainSource->data_dim; 
    170   CArray<bool,1>& mask_1d_src = domainSource->mask_1d; 
     170  CArray<bool,1>& mask_1d_src = domainSource->domainMask; 
    171171  CArray<int,1>& i_index_src = domainSource->i_index; 
    172172  CArray<int,1>& j_index_src = domainSource->j_index; 
     
    231231  domainDestination->global_zoom_nj.setValue(domainSource->global_zoom_nj+2); 
    232232 
    233   CArray<bool,1>& mask_1d_dst = domainDestination->mask_1d; 
     233  CArray<bool,1>& mask_1d_dst = domainDestination->domainMask; 
    234234  CArray<int,1>& i_index_dst  = domainDestination->i_index; 
    235235  CArray<int,1>& j_index_dst  = domainDestination->j_index;   
     
    453453     domainDestination->latvalue_1d = (lat_dst); 
    454454  } 
     455   domainDestination->mask_1d.resize(domainDestination->domainMask.numElements()) ; 
     456   domainDestination->mask_1d=domainDestination->domainMask ; 
    455457   domainDestination->computeLocalMask() ; 
    456458} 
     
    485487  // Now extend domain destination 
    486488  int niGlob = domainSource->ni_glo; 
    487   CArray<bool,1>& mask_1d_src = domainSource->mask_1d; 
     489  CArray<bool,1>& mask_1d_src = domainSource->domainMask; 
    488490  CArray<int,1>& i_index_src = domainSource->i_index; 
    489491  CArray<double,1>& lon_src = domainSource->lonvalue_1d; 
     
    508510  } 
    509511 
    510   CArray<bool,1>& mask_1d_dst = domainDestination->mask_1d; 
     512  CArray<bool,1>& mask_1d_dst = domainDestination->domainMask; 
    511513  CArray<int,1>& i_index_dst = domainDestination->i_index; 
    512514  CArray<int,1>& j_index_dst = domainDestination->j_index; 
     
    665667  // Update ni 
    666668  domainDestination->ni.setValue(newNbLocalDst); 
     669  domainDestination->mask_1d.resize(domainDestination->domainMask.numElements()) ; 
     670  domainDestination->mask_1d=domainDestination->domainMask ; 
    667671  domainDestination->computeLocalMask() ; 
    668672} 
Note: See TracChangeset for help on using the changeset viewer.