Changeset 413 for XIOS/trunk
- Timestamp:
- 01/19/13 19:31:15 (11 years ago)
- Location:
- XIOS/trunk/src/output
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/output/nc4_data_output.cpp
r399 r413 527 527 CContext* context = CContext::getCurrent() ; 528 528 // if (field->getRelFile()->isSyncTime()) SuperClassWriter::sync() ; 529 CContextServer* server=context->server ; 529 530 530 531 CGrid* grid = field->grid ; … … 543 544 544 545 CArray<double,1> time_data(1) ; 546 545 547 if (field->operation.getValue()=="instant") time_data(0) = Time(*field->last_Write_srv) 546 548 -Time(context->calendar->getTimeOrigin()); 547 549 else time_data(0) = (Time(*field->last_Write_srv)+Time(*field->lastlast_Write_srv))/2 548 550 -Time(context->calendar->getTimeOrigin()); 551 552 553 bool isRoot ; 554 if (server->intraCommRank==0) isRoot=true ; 555 else isRoot=false ; 549 556 550 557 if (grid->hasAxis()) // 3D … … 578 585 } 579 586 SuperClassWriter::writeData(field_data3D, fieldid, isCollective, field->getNStep()-1,&start,&count ); 580 SuperClassWriter::write Data(time_data, oss.str(), isCollective, field->getNStep()-1);587 SuperClassWriter::writeTimeAxisData(time_data, oss.str(), isCollective, field->getNStep()-1,isRoot ); 581 588 break; 582 589 } … … 613 620 614 621 SuperClassWriter::writeData(field_data2D, fieldid, isCollective, field->getNStep()-1,&start,&count); 615 SuperClassWriter::write Data(time_data, oss.str(), isCollective, field->getNStep()-1);616 break; 622 SuperClassWriter::writeTimeAxisData(time_data, oss.str(), isCollective, field->getNStep()-1,isRoot); 623 break; 617 624 618 625 } -
XIOS/trunk/src/output/onetcdf4.cpp
r401 r413 350 350 it = sizes.begin(), end = sizes.end(); 351 351 int i = 0; 352 352 cout<<"nc Size -->"<<sizes.size()<<endl ; 353 353 if (iddims.begin()->compare(this->getUnlimitedDimensionName()) == 0) 354 354 { … … 379 379 380 380 } 381 382 //---------------------------------------------------------------383 381 382 383 384 384 template <> 385 385 void CONetCDF4::writeData_(int grpid, int varid, … … 425 425 this->writeData_(grpid, varid, sstart, scount, data.dataFirst()); 426 426 } 427 428 void CONetCDF4::writeTimeAxisData(const CArray<double, 1>& data, const StdString & name, 429 bool collective, StdSize record, bool isRoot) 430 { 431 int grpid = this->getCurrentGroup(); 432 int varid = this->getVariable(name); 433 434 map<int,size_t>::iterator it=timeAxis.find(varid) ; 435 if (it==timeAxis.end()) timeAxis[varid]=record ; 436 else 437 { 438 if (it->second >= record) return ; 439 else it->second =record ; 440 } 441 442 StdSize array_size = 1; 443 std::vector<StdSize> sstart, scount; 444 445 if (this->wmpi && collective) 446 CheckError(nc_var_par_access(grpid, varid, NC_COLLECTIVE)); 447 if (this->wmpi && !collective) 448 CheckError(nc_var_par_access(grpid, varid, NC_INDEPENDENT)); 449 450 this->getWriteDataInfos(name, record, array_size, sstart, scount, NULL, NULL); 451 if (using_netcdf_internal) if (!isRoot) { sstart[0]=sstart[0]+1 ; scount[0]=0 ;} 452 this->writeData_(grpid, varid, sstart, scount, data.dataFirst()); 453 } 427 454 428 455 //--------------------------------------------------------------- -
XIOS/trunk/src/output/onetcdf4.hpp
r382 r413 64 64 const std::vector<StdSize> * count = NULL); 65 65 66 void writeData(const CArray<int, 2>& data, const StdString & name); 67 66 void writeData(const CArray<int, 2>& data, const StdString & name); 67 void writeTimeAxisData(const CArray<double,1>& data, const StdString & name, 68 bool collective, StdSize record, bool Isroot) ; 68 69 /// Accesseur /// 69 70 const CONetCDF4Path & getCurrentPath(void) const; … … 115 116 int ncidp; 116 117 bool wmpi; 117 118 map<int,size_t> timeAxis ; 118 119 }; // class CONetCDF4 119 120
Note: See TracChangeset
for help on using the changeset viewer.