Changeset 2264 for XIOS/dev/dev_ym/XIOS_COUPLING/src/io
- Timestamp:
- 11/23/21 13:12:46 (3 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src/io
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/io/nc4_data_output.cpp
r1962 r2264 2282 2282 std::vector<StdString> domainList = grid->getDomainList(); 2283 2283 std::vector<StdString> axisList = grid->getAxisList(); 2284 std::vector<StdString> scalarList = grid->getScalarList() ; 2284 2285 int numElement = axisDomainOrder.numElements(); 2285 2286 int idxDomain = domainList.size() - 1, idxAxis = axisList.size() - 1; … … 2318 2319 if (1 == axisDomainOrder.numElements()) 2319 2320 { 2321 CScalar* scalar = CScalar::get(scalarList[scalarList.size()-1]); 2320 2322 start.push_back(0); 2321 count.push_back( 1);2323 count.push_back(scalar->n); 2322 2324 } 2323 2325 --idx; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/io/onetcdf4.cpp
r1957 r2264 477 477 if (sizes.size()==0) 478 478 { 479 array_size=1 ; 480 sstart.push_back(0); 481 scount.push_back(1); 479 480 if ((start != NULL) && (count != NULL) && start->size()==1 && count->size()==1) // pur scalar case 481 array_size*=(*count)[0] ; 482 else array_size=1 ; 482 483 } 483 484 else … … 492 493 sstart.push_back(record); 493 494 scount.push_back(1); 494 if ((start == NULL) && 495 (count == NULL)) i++; 496 it++; 495 if ((start == NULL) && (count == NULL)) i++; 496 it++; 497 if (it==end) 498 { 499 if ((start != NULL) && (count != NULL) && start->size()==1 && count->size()==1) // pur scalar case 500 { 501 scount[0]=(*count)[0] ; 502 array_size *= (*count)[0]; 503 } 504 } 497 505 } 498 506 499 507 for (;it != end; it++) 500 508 { … … 569 577 int grpid = this->getCurrentGroup(); 570 578 int varid = this->getVariable(name); 579 571 580 StdSize array_size = 1; 572 581 std::vector<StdSize> sstart, scount; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/io/onetcdf4_impl.hpp
r1755 r2264 19 19 std::vector<StdSize> sstart, scount; 20 20 21 if (this->wmpi && collective) 22 CNetCdfInterface::varParAccess(grpid, varid, NC_COLLECTIVE); 23 if (this->wmpi && !collective) 24 CNetCdfInterface::varParAccess(grpid, varid, NC_INDEPENDENT); 21 if (this->wmpi && collective) CNetCdfInterface::varParAccess(grpid, varid, NC_COLLECTIVE); 22 if (this->wmpi && !collective) CNetCdfInterface::varParAccess(grpid, varid, NC_INDEPENDENT); 25 23 26 24 CTimer::get("Files : get data infos").resume(); 27 this->getWriteDataInfos 28 (name, record, array_size, sstart, scount, start, count); 25 this->getWriteDataInfos(name, record, array_size, sstart, scount, start, count); 29 26 CTimer::get("Files : get data infos").suspend(); 30 27 31 28 if (data.numElements() != array_size) 32 29 { … … 36 33 << " ] Invalid input data !" ); 37 34 } 38 39 this->writeData_(grpid, varid, sstart, scount, data.dataFirst()); 35 36 if (this->wmpi && sstart.size()==0) CNetCdfInterface::varParAccess(grpid, varid, NC_INDEPENDENT); // pure scalar case 37 if (data.numElements()==0 && sstart.size()==0) {}// pure scalar case if nothing to write, write nothing (independent access) 38 else this->writeData_(grpid, varid, sstart, scount, data.dataFirst()); 40 39 } 41 40
Note: See TracChangeset
for help on using the changeset viewer.