Ignore:
Timestamp:
02/16/18 15:08:48 (6 years ago)
Author:
ymipsl
Message:

Bug fix in computeLocalMask domain function.
Bad interaction with data index and domain index. When using domain defined with i_index and j_index, spurious missing data may apear after a transformation.

YM

File:
1 edited

Legend:

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

    r1427 r1429  
    11711171   void CDomain::computeLocalMask(void) 
    11721172   { 
    1173      localMask.resize(ni*nj) ; 
     1173     localMask.resize(i_index.numElements()) ; 
    11741174     localMask=false ; 
    11751175     size_t zoom_ibegin= global_zoom_ibegin ; 
     
    11891189          i=data_i_index(k)+data_ibegin ; 
    11901190          j=data_j_index(k)+data_jbegin ; 
     1191          if (i>=0 && i<ni && j>=0 && j<nj) 
     1192          { 
     1193            ind=j*ni+i ; 
     1194            if (i_index(ind)>=zoom_ibegin && i_index(ind)<=zoom_iend && j_index(ind)>=zoom_jbegin && j_index(ind)<=zoom_jend) 
     1195            { 
     1196              localMask(ind)=domainMask(ind) ; 
     1197            } 
     1198          } 
    11911199       } 
    11921200       else 
    11931201       { 
    1194           i=(data_i_index(k)+data_ibegin)%ni ; 
    1195           j=(data_i_index(k)+data_ibegin)/ni ; 
     1202          i=data_i_index(k)+data_ibegin ; 
     1203          if (i>=0 && i<i_index.numElements()) 
     1204          { 
     1205            ind=i ; 
     1206            if (i_index(ind)>=zoom_ibegin && i_index(ind)<=zoom_iend && j_index(ind)>=zoom_jbegin && j_index(ind)<=zoom_jend) 
     1207            { 
     1208              localMask(ind)=domainMask(ind) ; 
     1209            } 
     1210          } 
    11961211       } 
    1197  
    1198        if (i>=0 && i<ni && j>=0 && j<nj) 
    1199          if (i+ibegin>=zoom_ibegin && i+ibegin<=zoom_iend && j+jbegin>=zoom_jbegin && j+jbegin<=zoom_jend) 
    1200          { 
    1201            ind=i+ni*j ; 
    1202            localMask(ind)=domainMask(ind) ; 
    1203          } 
    12041212     } 
    12051213   } 
Note: See TracChangeset for help on using the changeset viewer.