Changeset 391
- Timestamp:
- 11/09/12 17:23:42 (11 years ago)
- Location:
- XIOS/trunk/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/config/file_attribute.conf
r369 r391 3 3 4 4 DECLARE_ATTRIBUTE(StdString, name_suffix) 5 DECLARE_ATTRIBUTE(int, min_digits ) 5 6 6 7 DECLARE_ATTRIBUTE(StdString, output_freq) -
XIOS/trunk/src/data_output.cpp
r352 r391 63 63 } 64 64 65 void CDataOutput::writeTimeDimension(void) 66 { 67 this->writeTimeDimension_(); 68 } 69 65 70 //---------------------------------------------------------------- 66 71 … … 87 92 CGrid* grid = CGrid::get(field->grid_ref.getValue()); 88 93 CDomain* domain = CDomain::get(grid->domain_ref.getValue()); 89 90 // if (domain->isEmpty()) return;91 94 this->writeFieldData_(field); 92 95 } -
XIOS/trunk/src/data_output.hpp
r379 r391 25 25 void writeField (CField* field); 26 26 void writeFieldGrid(CField* field); 27 void writeTimeDimension(void); 27 28 void writeFieldData(CField* field); 28 29 … … 46 47 virtual void writeFieldData_ (CField* field) = 0; 47 48 virtual void writeDomain_ (CDomain* domain) = 0; 49 virtual void writeTimeDimension_ (void) = 0; 48 50 virtual void writeAxis_ (CAxis* axis) = 0; 49 51 virtual void writeTimeAxis_ (CField* field, -
XIOS/trunk/src/node/file.cpp
r382 r391 257 257 int width=0 ; int n=commSize-1 ; 258 258 while(n != 0) { n=n/10 ; width++ ;} 259 if (!min_digits.isEmpty()) 260 if (width<min_digits) width=min_digits ; 259 261 oss.width(width) ; 260 262 oss.fill('0') ; … … 287 289 this->data_out->writeFieldGrid(field); 288 290 } 291 this->data_out->writeTimeDimension(); 289 292 290 293 for (it = this->enabledFields.begin() ;it != end; it++) -
XIOS/trunk/src/output/nc4_data_output.cpp
r384 r391 22 22 StdString timeid = StdString("time_counter"); 23 23 SuperClass::type = MULTI_FILE; 24 if (!exist)25 SuperClassWriter::addDimension(timeid);24 // if (!exist) 25 // SuperClassWriter::addDimension(timeid); 26 26 } 27 27 … … 38 38 SuperClass::type = (multifile) ? MULTI_FILE : ONE_FILE; 39 39 40 if (!exist)41 SuperClassWriter::addDimension(timeid);40 // if (!exist) 41 // SuperClassWriter::addDimension(timeid); 42 42 } 43 43 … … 71 71 StdString appendDomid = (singleDomain) ? "" : "_"+domid ; 72 72 73 StdString lonid = StdString("lon").append(appendDomid); 74 StdString latid = StdString("lat").append(appendDomid); 73 StdString dimXid = StdString("x").append(appendDomid); 74 StdString dimYid = StdString("y").append(appendDomid); 75 76 string lonid,latid ; 77 /* 75 78 StdString lonid_loc = (server->intraCommSize > 1) 76 79 ? StdString("lon").append(appendDomid).append("_local") … … 79 82 ? StdString("lat").append(appendDomid).append("_local") 80 83 : latid; 81 84 */ 82 85 bool isCurvilinear = domain->isCurvilinear ; 83 86 … … 90 93 if (server->intraCommSize > 1) 91 94 { 92 SuperClassWriter::addDimension(lonid, domain->zoom_ni.getValue());93 SuperClassWriter::addDimension(latid, domain->zoom_nj.getValue());95 // SuperClassWriter::addDimension(lonid, domain->zoom_ni.getValue()); 96 // SuperClassWriter::addDimension(latid, domain->zoom_nj.getValue()); 94 97 } 95 98 96 99 if (isCurvilinear) 97 100 { 98 dim0.push_back( latid_loc); dim0.push_back(lonid_loc);101 dim0.push_back(dimYid); dim0.push_back(dimXid); 99 102 lonid = StdString("nav_lon").append(appendDomid); 100 103 latid = StdString("nav_lat").append(appendDomid); … … 102 105 else 103 106 { 104 dim0.push_back(latid_loc); 105 dim1.push_back(lonid_loc); 106 } 107 108 SuperClassWriter::addDimension(lonid_loc, domain->zoom_ni_srv); 109 SuperClassWriter::addDimension(latid_loc, domain->zoom_nj_srv); 107 lonid = StdString("lon").append(appendDomid); 108 latid = StdString("lat").append(appendDomid); 109 dim0.push_back(dimYid); 110 dim1.push_back(dimXid); 111 } 112 113 SuperClassWriter::addDimension(dimXid, domain->zoom_ni_srv); 114 SuperClassWriter::addDimension(dimYid, domain->zoom_nj_srv); 110 115 if (server->intraCommSize > 1) 111 116 { … … 115 120 domain->zoom_nj_srv, 116 121 appendDomid); 122 123 if (singleDomain) this->writeLocalAttributes_IOIPSL(domain->zoom_ibegin_srv, 124 domain->zoom_ni_srv, 125 domain->zoom_jbegin_srv, 126 domain->zoom_nj_srv, 127 domain->ni_glo,domain->nj_glo, 128 server->intraCommRank,server->intraCommSize); 117 129 } 118 130 … … 133 145 134 146 dim0.clear(); 135 dim0.push_back( latid_loc);136 dim0.push_back( lonid_loc);147 dim0.push_back(dimYid); 148 dim0.push_back(dimXid); 137 149 138 150 … … 172 184 case (ONE_FILE) : 173 185 { 174 SuperClassWriter::addDimension( lonid, domain->zoom_ni.getValue());175 SuperClassWriter::addDimension( latid, domain->zoom_nj.getValue());186 SuperClassWriter::addDimension(dimXid, domain->zoom_ni.getValue()); 187 SuperClassWriter::addDimension(dimYid, domain->zoom_nj.getValue()); 176 188 177 189 178 190 if (isCurvilinear) 179 191 { 180 dim0.push_back( latid); dim0.push_back(lonid);192 dim0.push_back(dimYid); dim0.push_back(dimXid); 181 193 lonid = StdString("nav_lon").append(appendDomid); 182 194 latid = StdString("nav_lat").append(appendDomid); … … 186 198 else 187 199 { 188 dim0.push_back(latid); 189 dim1.push_back(lonid); 200 dim0.push_back(dimYid); 201 dim1.push_back(dimXid); 202 lonid = StdString("lon").append(appendDomid); 203 latid = StdString("lat").append(appendDomid); 190 204 SuperClassWriter::addVariable(latid, NC_FLOAT, dim0); 191 205 SuperClassWriter::addVariable(lonid, NC_FLOAT, dim1); … … 303 317 } 304 318 axis->addRelFile(this->filename); 305 } 306 319 } 320 321 void CNc4DataOutput::writeTimeDimension_(void) 322 { 323 SuperClassWriter::addDimension(string("time_counter")); 324 } 307 325 //-------------------------------------------------------------- 308 326 … … 324 342 StdString appendDomid = (singleDomain) ? "" : "_"+domid ; 325 343 326 StdString lonid = StdString("lon").append(appendDomid); 327 StdString latid = StdString("lat").append(appendDomid); 344 StdString dimXid = StdString("x").append(appendDomid); 345 StdString dimYid = StdString("y").append(appendDomid); 346 /* 328 347 StdString lonid_loc = (server->intraCommSize > 1) 329 348 ? StdString("lon").append(appendDomid).append("_local") … … 332 351 ? StdString("lat").append(appendDomid).append("_local") 333 352 : latid; 353 */ 334 354 StdString fieldid = (!field->name.isEmpty()) 335 355 ? field->name.getValue() : field->getBaseFieldReference()->getId(); … … 370 390 else 371 391 { 372 coodinates.push_back( latid);373 coodinates.push_back( lonid);392 coodinates.push_back(StdString("lat").append(appendDomid)); 393 coodinates.push_back(StdString("lon").append(appendDomid)); 374 394 } 375 395 … … 378 398 case (MULTI_FILE) : 379 399 { 380 dims.push_back( latid_loc);381 dims.push_back( lonid_loc);400 dims.push_back(dimYid); 401 dims.push_back(dimXid); 382 402 break ; 383 403 } 384 404 case (ONE_FILE) : 385 405 { 386 dims.push_back( latid);387 dims.push_back( lonid);406 dims.push_back(dimYid); 407 dims.push_back(dimXid); 388 408 break; 389 409 } … … 674 694 } 675 695 696 void CNc4DataOutput::writeLocalAttributes_IOIPSL 697 (int ibegin, int ni, int jbegin, int nj, int ni_glo, int nj_glo, int rank, int size) 698 { 699 CArray<int,1> array(2) ; 700 701 SuperClassWriter::addAttribute("DOMAIN_number_total",size ) ; 702 SuperClassWriter::addAttribute("DOMAIN_number", rank) ; 703 array=1,2 ; 704 SuperClassWriter::addAttribute("DOMAIN_dimensions_ids",array) ; 705 array=ni_glo,nj_glo ; 706 SuperClassWriter::addAttribute("DOMAIN_size_global", array) ; 707 array=ni,nj ; 708 SuperClassWriter::addAttribute("DOMAIN_size_local", array) ; 709 array=ibegin,jbegin ; 710 SuperClassWriter::addAttribute("DOMAIN_position_first", array) ; 711 array=ibegin+ni-1,jbegin+nj-1 ; 712 SuperClassWriter::addAttribute("DOMAIN_position_last",array) ; 713 array=0,0 ; 714 SuperClassWriter::addAttribute("DOMAIN_halo_size_start", array) ; 715 SuperClassWriter::addAttribute("DOMAIN_halo_size_end", array); 716 SuperClassWriter::addAttribute("DOMAIN_type",string("box")) ; 717 /* 718 SuperClassWriter::addAttribute("DOMAIN_DIM_N001",string("x")) ; 719 SuperClassWriter::addAttribute("DOMAIN_DIM_N002",string("y")) ; 720 SuperClassWriter::addAttribute("DOMAIN_DIM_N003",string("axis_A")) ; 721 SuperClassWriter::addAttribute("DOMAIN_DIM_N004",string("time_counter")) ; 722 */ 723 724 } 676 725 //--------------------------------------------------------------- 677 726 -
XIOS/trunk/src/output/nc4_data_output.hpp
r379 r391 42 42 virtual void writeDomain_ (CDomain* domain); 43 43 virtual void writeAxis_ (CAxis* axis); 44 virtual void writeTimeDimension_(void); 44 45 virtual void writeField_ (CField* field); 45 46 virtual void writeFieldData_ (CField* field); … … 53 54 54 55 void writeLocalAttributes(int ibegin, int ni, int jbegin, int nj, StdString domid); 55 56 void writeLocalAttributes_IOIPSL(int ibegin, int ni, int jbegin, int nj, int ni_glo, int nj_glo, int rank, int size) ; 56 57 void writeTimeAxisAttributes(const StdString & axis_name, 57 58 const StdString & calendar, -
XIOS/trunk/src/output/onetcdf4.cpp
r382 r391 275 275 int grpid = this->getCurrentGroup(); 276 276 int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 277 CheckError(nc_put_att(grpid, varid, name.c_str(), NC_CHAR, value.size() +1, value.c_str()));277 CheckError(nc_put_att(grpid, varid, name.c_str(), NC_CHAR, value.size(), value.c_str())); 278 278 //CheckError(nc_put_att_string(grpid, varid, name.c_str(), 1, &str)); 279 279 } … … 289 289 CheckError(nc_put_att_double(grpid, varid, name.c_str(), NC_DOUBLE,1, &value)); 290 290 } 291 291 292 template <> 293 void CONetCDF4::addAttribute 294 (const StdString & name, const CArray<double,1>& value, const StdString * varname ) 295 { 296 int grpid = this->getCurrentGroup(); 297 int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 298 CheckError(nc_put_att_double(grpid, varid, name.c_str(), NC_DOUBLE,value.numElements(), value.dataFirst())); 299 } 292 300 //--------------------------------------------------------------- 293 301 … … 300 308 CheckError(nc_put_att_float(grpid, varid, name.c_str(), NC_FLOAT, 1, &value)); 301 309 } 310 311 template <> 312 void CONetCDF4::addAttribute 313 (const StdString & name, const CArray<float,1>& value, const StdString * varname ) 314 { 315 int grpid = this->getCurrentGroup(); 316 int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 317 CheckError(nc_put_att_float(grpid, varid, name.c_str(), NC_FLOAT,value.numElements(), value.dataFirst())); 318 } 302 319 303 320 //--------------------------------------------------------------- … … 312 329 } 313 330 331 template <> 332 void CONetCDF4::addAttribute 333 (const StdString & name, const CArray<int,1>& value, const StdString * varname ) 334 { 335 int grpid = this->getCurrentGroup(); 336 int varid = (varname == NULL) ? NC_GLOBAL : this->getVariable(*varname); 337 CheckError(nc_put_att_int(grpid, varid, name.c_str(), NC_INT,value.numElements(), value.dataFirst())); 338 } 314 339 //--------------------------------------------------------------- 315 340
Note: See TracChangeset
for help on using the changeset viewer.