Changeset 967 for XIOS/trunk/src/io/nc4_data_input.cpp
- Timestamp:
- 10/12/16 11:17:49 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/io/nc4_data_input.cpp
r963 r967 6 6 #include "domain.hpp" 7 7 #include "axis.hpp" 8 #include "scalar.hpp" 8 9 9 10 namespace xios … … 17 18 , readMetaDataDomains_(), readValueDomains_() 18 19 , readMetaDataAxis_(), readValueAxis_() 20 , readMetaDataScalar_(), readValueScalar_() 19 21 { 20 22 SuperClass::type = multifile ? MULTI_FILE : ONE_FILE; … … 113 115 count.push_back(nZoomSizeServer[idx]); 114 116 --idx; 115 } 117 } 118 else 119 { 120 if (1 == axisDomainOrder.numElements()) 121 { 122 start.push_back(0); 123 count.push_back(1); 124 } 125 --idx; 126 } 116 127 } 117 128 … … 140 151 std::vector<CDomain*> domainP = grid->getDomains(); 141 152 std::vector<CAxis*> axisP = grid->getAxis(); 153 std::vector<CScalar*> scalarP = grid->getScalars(); 142 154 int gridDim = domainP.size() * 2 + axisP.size(); 155 156 // Nothing to do with scalar without timestep 157 if ((0 == gridDim) && (!SuperClassWriter::isTemporal(fieldId))) 158 return; 143 159 144 160 // Verify the compatibility of dimension of declared grid and real grid in file … … 163 179 } 164 180 165 int mapSize = dimSizeMap.size() - 1;166 181 std::list<std::pair<StdString, StdSize> > listDimSize; 167 182 /* … … 174 189 // Now process domain and axis 175 190 CArray<int,1> axisDomainOrder = grid->axis_domain_order; 176 int numElement = domainP.size() + axisP.size() ;191 int numElement = domainP.size() + axisP.size() + scalarP.size(); 177 192 int elementPosition = 0; 178 int idxDomain = 0, idxAxis = 0 ;193 int idxDomain = 0, idxAxis = 0, idxScalar = 0; 179 194 180 195 std::pair<std::set<StdString>::iterator,bool> it; … … 210 225 } 211 226 ++idxAxis; 227 ++elementPosition; 228 } 229 else 230 { 231 if (readAttributeValues) 232 { 233 it = readValueScalar_.insert(scalarP[idxScalar]->getId()); 234 if (it.second) readScalarAttributeValueFromFile(scalarP[idxScalar], listDimSize, elementPosition, fieldId); 235 } 236 else 237 { 238 it = readMetaDataScalar_.insert(scalarP[idxScalar]->getId()); 239 if (it.second) readScalarAttributesFromFile(scalarP[idxScalar], listDimSize, elementPosition, fieldId); 240 } 241 ++idxScalar; 212 242 ++elementPosition; 213 243 } … … 443 473 } 444 474 475 /*! 476 Read attributes of a scalar from a file 477 \param [in] scalar scalar whose attributes are read from the file 478 \param [in] dimSizeMap Dimensions and and their corresponding names and size read from file 479 \param [in] emelentPosition position of scalar in grid 480 \param [in] fieldId id (or name) associated with the grid 481 */ 482 void CNc4DataInput::readScalarAttributesFromFile(CScalar* scalar, std::list<std::pair<StdString, StdSize> >& dimSizeMap, 483 int elementPosition, const StdString& fieldId) 484 { 485 // std::list<std::pair<StdString, StdSize> >::const_iterator itMapN = dimSizeMap.begin(), 486 // iteMap = dimSizeMap.end(); 487 // for (int i = 0; i < elementPosition; ++i, ++itMapN) {} 488 // axis->n_glo.setValue(itMapN->second); 489 } 490 491 /*! 492 Read attribute value of an axis from a file 493 \param [in] axis axis whose attributes are read from the file 494 \param [in] dimSizeMap Dimensions and and their corresponding names and size read from file 495 \param [in] emelentPosition position of axis in grid 496 \param [in] fieldId id (or name) associated with the grid 497 */ 498 void CNc4DataInput::readScalarAttributeValueFromFile(CScalar* scalar, std::list<std::pair<StdString, StdSize> >& dimSizeMap, 499 int elementPosition, const StdString& fieldId) 500 { 501 // std::list<std::pair<StdString, StdSize> >::const_iterator itMapN = dimSizeMap.begin(), 502 // iteMap = dimSizeMap.end(); 503 // for (int i = 0; i < elementPosition; ++i, ++itMapN) {} 504 // 505 // { // Read axis value 506 // std::vector<StdSize> nBegin(1, 0), nSize(1, itMapN->second); 507 // CArray<double,1> readAxisValue(itMapN->second); 508 // readFieldVariableValue(readAxisValue, itMapN->first, nBegin, nSize, true); 509 // int begin = 0, n = itMapN->second; 510 // if (!axis->begin.isEmpty()) begin = axis->begin.getValue(); 511 // if (!axis->n.isEmpty()) n = axis->n.getValue(); 512 // axis->value.resize(n); 513 // for (int i = 0; i < n; ++i) axis->value(i) = readAxisValue(begin + i); 514 // } 515 } 516 445 517 void CNc4DataInput::closeFile_(void) 446 518 {
Note: See TracChangeset
for help on using the changeset viewer.