Ignore:
Timestamp:
02/08/18 15:40:25 (6 years ago)
Author:
oabramkina
Message:

Bugfix in case of a hole defined on an axis.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/io/nc4_data_output.cpp

    r1415 r1421  
    12851285            int nbWritten = indexToWrite.numElements(); 
    12861286            CArray<double,1> axis_value(indexToWrite.numElements()); 
    1287             for (int i = 0; i < nbWritten; i++) axis_value(i) = axis->value(indexToWrite(i)); 
     1287            for (int i = 0; i < nbWritten; i++) 
     1288            { 
     1289              if (i < axis->value.numElements()) 
     1290                axis_value(i) = axis->value(indexToWrite(i)); 
     1291              else 
     1292                axis_value(i) = 0.; 
     1293            } 
     1294 
    12881295            CArray<double,2> axis_bounds; 
    12891296            CArray<string,1> axis_label; 
     
    12911298            { 
    12921299              axis_label.resize(indexToWrite.numElements()); 
    1293               for (int i = 0; i < nbWritten; i++) axis_label(i) = axis->label(indexToWrite(i)); 
     1300              for (int i = 0; i < nbWritten; i++) 
     1301              { 
     1302                if (i < axis->label.numElements()) 
     1303                  axis_label(i) = axis->label(indexToWrite(i)); 
     1304                else 
     1305                  axis_label(i) = boost::lexical_cast<string>(0);  // Write 0 as a label 
     1306              } 
    12941307            } 
    12951308 
     
    13061319                    for (int i = 0; i < nbWritten; ++i) 
    13071320                    { 
    1308                       axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 
    1309                       axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 
     1321                      if (i < axis->bounds.columns()) 
     1322                      { 
     1323                        axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 
     1324                        axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 
     1325                      } 
     1326                      else 
     1327                      { 
     1328                        axis_bounds(0, i) = 0.; 
     1329                        axis_bounds(1, i) = 0.; 
     1330 
     1331                      } 
    13101332                    } 
    13111333 
     
    13371359                  for (int i = 0; i < nbWritten; ++i) 
    13381360                  { 
    1339                     axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 
    1340                     axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 
     1361                    if (i < axis->bounds.columns()) 
     1362                    { 
     1363                      axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 
     1364                      axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 
     1365                    } 
     1366                    else 
     1367                    { 
     1368                      axis_bounds(0, i) = 0.; 
     1369                      axis_bounds(1, i) = 0.; 
     1370                    } 
    13411371                  } 
    13421372                  SuperClassWriter::writeData(axis_bounds, axisBoundsId, isCollective, 0, &startBounds, &countBounds); 
Note: See TracChangeset for help on using the changeset viewer.