Changeset 1129 for XIOS/dev/dev_olga/src/io/nc4_data_output.cpp
- Timestamp:
- 05/11/17 18:25:20 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/io/nc4_data_output.cpp
r1099 r1129 50 50 void CNc4DataOutput::writeDomain_(CDomain* domain) 51 51 { 52 domain->computeWrittenIndex(); 52 53 if (domain->type == CDomain::type_attr::unstructured) 53 54 { … … 59 60 } 60 61 62 61 63 CContext* context = CContext::getCurrent() ; 62 64 CContextServer* server=context->server ; … … 107 109 : latid; 108 110 */ 111 112 CArray<size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer; 113 int nbWritten = indexToWrite.numElements(); 114 CArray<double,1> writtenLat, writtenLon; 115 CArray<double,2> writtenBndsLat, writtenBndsLon; 116 CArray<double,1> writtenArea; 117 118 if (domain->hasLonLat) 119 { 120 writtenLat.resize(nbWritten); 121 writtenLon.resize(nbWritten); 122 for (int idx = 0; idx < nbWritten; ++idx) 123 { 124 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 125 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 126 } 127 128 129 if (domain->hasBounds) 130 { 131 int nvertex = domain->nvertex, idx; 132 writtenBndsLat.resize(nvertex, nbWritten); 133 writtenBndsLon.resize(nvertex, nbWritten); 134 CArray<double,2>& boundslat = domain->bounds_latvalue; 135 CArray<double,2>& boundslon = domain->bounds_lonvalue; 136 for (idx = 0; idx < nbWritten; ++idx) 137 for (int nv = 0; nv < nvertex; ++nv) 138 { 139 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 140 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 141 } 142 } 143 } 144 145 if (domain->hasArea) 146 { 147 writtenArea.resize(nbWritten); 148 for (int idx = 0; idx < nbWritten; ++idx) 149 { 150 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 151 } 152 } 109 153 110 154 try … … 225 269 if (domain->hasLonLat) 226 270 { 271 // CArray<size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer; 272 // int nbWritten = indexToWrite.numElements(); 273 // CArray<double,1> writtenLat(nbWritten), writtenLon(nbWritten); 274 // for (int idx = 0; idx < nbWritten; ++idx) 275 // { 276 // writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 277 // writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 278 // } 227 279 switch (domain->type) 228 280 { 229 case CDomain::type_attr::curvilinear : 230 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0); 231 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0); 281 case CDomain::type_attr::curvilinear : 282 283 // SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0); 284 // SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0); 285 SuperClassWriter::writeData(writtenLat, latid, isCollective, 0); 286 SuperClassWriter::writeData(writtenLon, lonid, isCollective, 0); 232 287 break; 233 288 case CDomain::type_attr::rectilinear : 234 CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,domain->zoom_ni)) ; 289 // CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,domain->zoom_ni)) ; 290 // SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 291 // CArray<double,1> lon = domain->lonvalue(Range(0,domain->zoom_ni-1)) ; 292 // // CArray<double,1> lon = domain->lonvalue(Range(0,local_size_write[1]-1)) ; 293 // SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); 294 295 CArray<double,1> lat = writtenLat(Range(fromStart,toEnd,domain->zoom_ni)) ; 235 296 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0); 236 CArray<double,1> lon = domain->lonvalue(Range(0,domain->zoom_ni-1)) ;297 CArray<double,1> lon = writtenLon(Range(0,domain->zoom_ni-1)) ; 237 298 // CArray<double,1> lon = domain->lonvalue(Range(0,local_size_write[1]-1)) ; 238 299 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0); … … 242 303 if (domain->hasBounds) 243 304 { 244 SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0); 245 SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0); 305 // CArray<double,2> writtenBndsLat(nbWritten,2), writtenBndsLon(nbWritten,2); 306 // for (int idx = 0; idx < nbWritten; ++idx) 307 // for (int nv = 0; nv < domain->nvertex; ++nv) 308 // { 309 // writtenBndsLat(idx) = domain->bounds_latvalue(nv, indexToWrite(idx)); 310 // writtenBndsLon(idx) = domain->bounds_lonvalue(nv, indexToWrite(idx)); 311 // } 312 313 // SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0); 314 // SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0); 315 SuperClassWriter::writeData(writtenBndsLon, bounds_lonid, isCollective, 0); 316 SuperClassWriter::writeData(writtenBndsLat, bounds_latid, isCollective, 0); 246 317 } 247 318 } 248 319 249 320 if (domain->hasArea) 250 SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0); 321 { 322 // CArray<size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer; 323 // int nbWritten = indexToWrite.numElements(); 324 // CArray<double,1> writtenArea(nbWritten); 325 // for (int idx = 0; idx < nbWritten; ++idx) 326 // { 327 // writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 328 // } 329 330 SuperClassWriter::writeData(writtenArea, areaId, isCollective, 0); 331 // SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0); 332 } 251 333 252 334 SuperClassWriter::definition_start(); … … 334 416 start[0]=domain->zoom_jbegin-domain->global_zoom_jbegin; 335 417 count[1]=domain->zoom_ni ; count[0]=domain->zoom_nj ; 336 // start[1]= start_write[0];337 // start[0]= start_write[1];338 // count[1]= count_write[0];339 // count[0]= count_write[1];340 418 } 341 419 342 420 if (domain->hasLonLat) 343 421 { 344 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0,&start,&count); 345 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0,&start,&count); 422 // SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0,&start,&count); 423 // SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0,&start,&count); 424 SuperClassWriter::writeData(writtenLat, latid, isCollective, 0,&start,&count); 425 SuperClassWriter::writeData(writtenLon, lonid, isCollective, 0,&start,&count); 346 426 } 347 427 break; … … 357 437 start[0]=0 ; 358 438 count[0]=0 ; 359 SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0,&start,&count); 360 SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0,&start,&count); 361 439 // SuperClassWriter::writeData(domain->latvalue, latid, isCollective, 0,&start,&count); 440 // SuperClassWriter::writeData(domain->lonvalue, lonid, isCollective, 0,&start,&count); 441 442 SuperClassWriter::writeData(writtenLat, latid, isCollective, 0,&start,&count); 443 SuperClassWriter::writeData(writtenLon, lonid, isCollective, 0,&start,&count); 362 444 } 363 445 else 364 { 365 // start[0]= start_write[1]; 366 // count[0]= count_write[1]; 446 { 367 447 start[0]=domain->zoom_jbegin-domain->global_zoom_jbegin; 368 448 count[0]=domain->zoom_nj; 369 CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,domain->zoom_ni)) ; 449 // CArray<double,1> lat = domain->latvalue(Range(fromStart,toEnd,domain->zoom_ni)); 450 CArray<double,1> lat = writtenLat(Range(fromStart,toEnd,domain->zoom_ni)); 370 451 SuperClassWriter::writeData(CArray<double,1>(lat.copy()), latid, isCollective, 0,&start,&count); 371 452 372 // start[0]= start_write[0];373 // count[0]= count_write[0];374 453 start[0]=domain->zoom_ibegin-domain->global_zoom_ibegin; 375 454 count[0]=domain->zoom_ni; 376 CArray<double,1> lon=domain->lonvalue(Range(0,domain->zoom_ni-1)) ; 455 // CArray<double,1> lon=domain->lonvalue(Range(0,domain->zoom_ni-1)); 456 CArray<double,1> lon = writtenLon(Range(0,domain->zoom_ni-1)); 377 457 SuperClassWriter::writeData(CArray<double,1>(lon.copy()), lonid, isCollective, 0,&start,&count); 378 458 } … … 401 481 } 402 482 403 SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0, &start, &count); 404 SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0, &start, &count); 483 // SuperClassWriter::writeData(domain->bounds_lonvalue, bounds_lonid, isCollective, 0, &start, &count); 484 // SuperClassWriter::writeData(domain->bounds_latvalue, bounds_latid, isCollective, 0, &start, &count); 485 SuperClassWriter::writeData(writtenBndsLon, bounds_lonid, isCollective, 0, &start, &count); 486 SuperClassWriter::writeData(writtenBndsLat, bounds_latid, isCollective, 0, &start, &count); 405 487 } 406 488 … … 421 503 count[1] = domain->zoom_ni; 422 504 count[0] = domain->zoom_nj; 423 424 // start[1]= start_write[0];425 // start[0]= start_write[1];426 // count[1]= count_write[0];427 // count[0]= count_write[1];428 505 } 429 506 430 SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0, &start, &count); 507 // SuperClassWriter::writeData(domain->areavalue, areaId, isCollective, 0, &start, &count); 508 SuperClassWriter::writeData(writtenArea, areaId, isCollective, 0, &start, &count); 431 509 } 432 510 … … 1056 1134 axis->checkAttributes(); 1057 1135 1058 // int local_size_write = axis->getLocalWriteSize(); 1059 // int global_size_write = axis->getGlobalWriteSize(); 1060 // int start_write = axis->getStartWriteIndex(); 1061 // int count_write = axis->getCountWriteIndex(); 1062 1063 1064 // if ((0 == local_size_write) && (MULTI_FILE == SuperClass::type)) return; 1065 1136 axis->computeWrittenIndex(); 1137 1066 1138 int zoom_size = (MULTI_FILE == SuperClass::type) ? axis->zoom_n 1067 1139 : axis->global_zoom_n; … … 1114 1186 SuperClassWriter::definition_end(); 1115 1187 1188 CArray<size_t, 1>& indexToWrite = axis->localIndexToWriteOnServer; 1189 int nbWritten = indexToWrite.numElements(); 1190 CArray<double,1> axis_value(indexToWrite.numElements()); 1191 for (int i = 0; i < nbWritten; i++) axis_value(i) = axis->value(indexToWrite(i)); 1192 CArray<double,2> axis_bounds; 1193 1116 1194 switch (SuperClass::type) 1117 1195 { 1118 1196 case MULTI_FILE: 1119 1197 { 1120 CArray<double,1> axis_value(axis->zoom_n);1121 for (int i = 0; i < axis->zoom_n; i++) axis_value(i) = axis->value(i);1198 // CArray<double,1> axis_value(axis->zoom_n); 1199 // for (int i = 0; i < axis->zoom_n; i++) axis_value(i) = axis->value(i); 1122 1200 SuperClassWriter::writeData(axis_value, axisid, isCollective, 0); 1123 1201 … … 1131 1209 case ONE_FILE: 1132 1210 { 1133 CArray<double,1> axis_value(axis->zoom_n);1134 axis_value = axis->value;1211 // CArray<double,1> axis_value(axis->zoom_n); 1212 // axis_value = axis->value; 1135 1213 std::vector<StdSize> start(1), startBounds(2) ; 1136 1214 std::vector<StdSize> count(1), countBounds(2) ; … … 1142 1220 1143 1221 if (!axis->bounds.isEmpty()) 1222 { 1223 axis_bounds.resize(2, indexToWrite.numElements()); 1224 for (int i = 0; i < nbWritten; ++i) 1225 { 1226 axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 1227 axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 1228 } 1144 1229 SuperClassWriter::writeData(axis->bounds, axisBoundsId, isCollective, 0, &startBounds, &countBounds); 1230 } 1145 1231 1146 1232 SuperClassWriter::definition_start(); … … 2371 2457 msg.append(context->getId()); msg.append("\n"); 2372 2458 msg.append(e.what()); 2373 ERROR("CNc4DataOutput::writeFieldData_ (CField* field)", << msg);2459 ERROR("CNc4DataOutput::writeFieldData_ (CField* field)", << msg); 2374 2460 } 2375 2461 }
Note: See TracChangeset
for help on using the changeset viewer.