Changeset 1447 for XIOS/dev/XIOS_DEV_CMIP6/src
- Timestamp:
- 03/06/18 11:36:29 (6 years ago)
- Location:
- XIOS/dev/XIOS_DEV_CMIP6/src/io
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/XIOS_DEV_CMIP6/src/io/inetcdf4.cpp
r1445 r1447 83 83 std::pair<nc_type, StdSize> retvalue; 84 84 int grpid = this->getGroup(path); 85 int varid = (var != NULL ) ? this->getVariable(*var, path) : NC_GLOBAL;85 int varid = (var != NULL && this->hasVariable(*var, path)) ? this->getVariable(*var, path) : NC_GLOBAL; 86 86 CNetCdfInterface::inqAtt(grpid, varid, attname, retvalue.first, retvalue.second); 87 87 return retvalue; … … 216 216 int nbdim = 0, *dimid = NULL; 217 217 int grpid = this->getGroup(path); 218 int varid = (var != NULL ) ? this->getVariable(*var, path) : NC_GLOBAL;218 int varid = (var != NULL && this->hasVariable(*var, path)) ? this->getVariable(*var, path) : NC_GLOBAL; 219 219 std::list<StdString> retvalue; 220 220 221 if (var != NULL )221 if (var != NULL && this->hasVariable(*var, path)) 222 222 { 223 223 CNetCdfInterface::inqVarNDims(grpid, varid, nbdim); … … 247 247 int nbdim = 0, *dimid = NULL; 248 248 int grpid = this->getGroup(path); 249 int varid = (var != NULL ) ? this->getVariable(*var, path) : NC_GLOBAL;249 int varid = (var != NULL && this->hasVariable(*var, path)) ? this->getVariable(*var, path) : NC_GLOBAL; 250 250 std::map<StdString, StdSize> retvalue; 251 251 252 if (var != NULL )252 if (var != NULL && this->hasVariable(*var, path)) 253 253 { 254 254 CNetCdfInterface::inqVarNDims(grpid, varid, nbdim); … … 282 282 std::list<StdString> retvalue; 283 283 int grpid = this->getGroup(path); 284 int varid = (var != NULL ) ? this->getVariable(*var, path) : NC_GLOBAL;285 286 if (var != NULL )284 int varid = (var != NULL && this->hasVariable(*var, path)) ? this->getVariable(*var, path) : NC_GLOBAL; 285 286 if (var != NULL && this->hasVariable(*var, path)) 287 287 CNetCdfInterface::inqVarNAtts(grpid, varid, nbatt); 288 288 else … … 376 376 { 377 377 int grpid = this->getGroup(path); 378 int varid = (var != NULL ) ? this->getVariable(*var, path) : NC_GLOBAL;378 int varid = (var != NULL && this->hasVariable(*var, path)) ? this->getVariable(*var, path) : NC_GLOBAL; 379 379 std::pair<nc_type , StdSize> attinfos = this->getAttribute(name, var, path); 380 380 std::vector<T> retvalue(attinfos.second); … … 494 494 bool CINetCDF4::isRectilinear(const StdString& name, const CVarPath* const path) 495 495 { 496 std::list<StdString> coords = this->getCoordinatesIdList(name, path); 497 std::list<StdString>::const_iterator it = coords.begin(), end = coords.end(); 498 std::set<StdString> dimVarList; 499 496 std::list<StdString> varCoords = this->getCoordinatesIdList(name, path); 497 std::list<StdString> varDims = this->getDimensionsList(&name, path); 498 std::list<StdString>::const_iterator it = varCoords.begin(), end = varCoords.end(); 499 std::set<StdString> varDims1D; 500 501 // Firstly, loop over coordinate list 500 502 for (; it != end; it++) 501 503 { 502 504 const StdString& coord = *it; 503 if (this->hasVariable(coord, path) && !this->isTemporal(coord, path) && this->isLonOrLat(coord, path))504 { 505 std::map<StdString, StdSize> dimvar= this->getDimensions(&coord, path);506 if ((dimvar.size() == 1))505 if (this->hasVariable(coord, path) && !this->isTemporal(coord, path) ) 506 { 507 std::map<StdString, StdSize> coordDims = this->getDimensions(&coord, path); 508 for (std::map<StdString, StdSize>::const_iterator itTmp = coordDims.begin(); itTmp != coordDims.end(); itTmp++) 507 509 { 508 dimVarList.insert(dimvar.begin()->first); 510 varDims.remove(itTmp->first); 511 } 512 if (this->isLonOrLat(coord, path) && coordDims.size() == 1) 513 { 514 varDims1D.insert(coordDims.begin()->first); 509 515 continue; 510 516 } 511 517 } 512 518 } 513 return (dimVarList.size() != 1); 519 // Secondly, loop over remaining dimensions 520 for (it= varDims.begin(); it != varDims.end(); it++) 521 { 522 const StdString& coord = *it; 523 std::map<StdString, StdSize> coordDims = this->getDimensions(&coord, path); 524 if (this->hasVariable(coord, path) && !this->isTemporal(coord, path) ) 525 { 526 if (this->isLonOrLat(coord, path) && coordDims.size() == 1) 527 { 528 varDims1D.insert(coordDims.begin()->first); 529 continue; 530 } 531 } 532 } 533 534 return (varDims1D.size() == 2); 514 535 } 515 536 -
XIOS/dev/XIOS_DEV_CMIP6/src/io/nc4_data_input.cpp
r1434 r1447 350 350 StdString boundsLonName = this->getBoundsId(lonName); 351 351 352 int nbVertex = this->getNbVertex(fieldId);352 int nbVertex = 4; //this->getNbVertex(fieldId); 353 353 if (!domain->nvertex.isEmpty() && (domain->nvertex != nbVertex)) 354 354 {
Note: See TracChangeset
for help on using the changeset viewer.