Changeset 1646 for XIOS/dev/dev_trunk_omp/src/io/nc4_data_output.cpp
- Timestamp:
- 01/31/19 12:12:52 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_trunk_omp/src/io/nc4_data_output.cpp
r1601 r1646 54 54 55 55 void CNc4DataOutput::writeDomain_(CDomain* domain) 56 TRY 56 57 { 57 58 StdString lonName,latName ; … … 154 155 */ 155 156 156 CArray< size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer;157 CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 157 158 int nbWritten = indexToWrite.numElements(); 158 159 CArray<double,1> writtenLat, writtenLon; … … 166 167 for (int idx = 0; idx < nbWritten; ++idx) 167 168 { 168 if (idx < domain->latvalue.numElements())169 170 writtenLat(idx) = domain->latvalue(indexToWrite(idx));171 writtenLon(idx) = domain->lonvalue(indexToWrite(idx));172 173 174 175 writtenLat(idx) = 0.;176 writtenLon(idx) = 0.;177 169 if (indexToWrite(idx) < 0) 170 { 171 writtenLat(idx) = -1.; // hole 172 writtenLon(idx) = -1.; 173 } 174 else 175 { 176 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 177 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 178 } 178 179 } 179 180 180 181 181 if (domain->hasBounds) … … 189 189 for (int nv = 0; nv < nvertex; ++nv) 190 190 { 191 if (idx < boundslat.columns()) 192 { 191 if (indexToWrite(idx) < 0) 192 { 193 writtenBndsLat(nv, idx) = -1.; // hole 194 writtenBndsLon(nv, idx) = -1.; 195 } 196 else 197 { 193 198 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 194 199 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 195 } 196 else 197 { 198 writtenBndsLat(nv, idx) = 0.; 199 writtenBndsLon(nv, idx) = 0.; 200 } 200 } 201 201 } 202 202 } … … 208 208 for (int idx = 0; idx < nbWritten; ++idx) 209 209 { 210 if (i dx < domain->areavalue.numElements())211 writtenArea(idx) = domain->areavalue(indexToWrite(idx));210 if (indexToWrite(idx) < 0) 211 writtenArea(idx) = -1.; 212 212 else 213 writtenArea(idx) = 0.;213 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 214 214 } 215 215 } … … 426 426 std::vector<StdSize> start(2) ; 427 427 std::vector<StdSize> count(2) ; 428 if (domain->isEmpty()) 429 { 430 start[0]=0 ; start[1]=0 ; 431 count[0]=0 ; count[1]=0 ; 432 } 433 else 428 // Comment out: it is not working for a hole 429 // if (domain->isEmpty()) 430 // { 431 // start[0]=0 ; start[1]=0 ; 432 // count[0]=0 ; count[1]=0 ; 433 // } 434 // else 434 435 { 435 436 start[1]=domain->ibegin; … … 540 541 domain->addRelFile(this->filename); 541 542 } 543 CATCH 542 544 543 545 //-------------------------------------------------------------- … … 875 877 case (MULTI_FILE) : 876 878 { 879 ERROR("CNc4DataOutput::writeDomain(domain)", 880 << "[ type = multiple_file ]" 881 << " is not yet implemented for UGRID files !"); 877 882 break; 878 883 } … … 940 945 int nvertex = (domain->nvertex.isEmpty()) ? 0 : domain->nvertex; 941 946 942 CArray< size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer;947 CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 943 948 int nbWritten = indexToWrite.numElements(); 944 949 CArray<double,1> writtenLat, writtenLon; … … 952 957 for (int idx = 0; idx < nbWritten; ++idx) 953 958 { 954 if (i dx < domain->latvalue.numElements())955 {956 writtenLat(idx) = domain->latvalue(indexToWrite(idx));957 writtenLon(idx) = domain->lonvalue(indexToWrite(idx));958 }959 else960 {961 writtenLat(idx) = 0.;962 writtenLon(idx) = 0.;963 }959 if (indexToWrite(idx) < 0) 960 { 961 writtenLat(idx) = -1.; 962 writtenLon(idx) = -1.; 963 } 964 else 965 { 966 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 967 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 968 } 964 969 } 965 970 } … … 976 981 for (int nv = 0; nv < nvertex; ++nv) 977 982 { 978 if (idx < boundslat.columns()) 983 if (indexToWrite(idx) < 0) 984 { 985 writtenBndsLat(nv, idx) = -1.; 986 writtenBndsLon(nv, idx) = -1.; 987 } 988 else 979 989 { 980 990 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 981 991 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 982 }983 else984 {985 writtenBndsLat(nv, idx) = 0.;986 writtenBndsLon(nv, idx) = 0.;987 992 } 988 993 } … … 995 1000 for (int idx = 0; idx < nbWritten; ++idx) 996 1001 { 997 if (idx < domain->areavalue.numElements())998 writtenArea(idx) = domain->areavalue(indexToWrite(idx));999 1000 writtenArea(idx) = 0.;1002 if (indexToWrite(idx) < 0) 1003 writtenArea(idx) = -1.; 1004 else 1005 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 1001 1006 } 1002 1007 } … … 1275 1280 SuperClassWriter::definition_end(); 1276 1281 1277 CArray< size_t, 1>& indexToWrite = axis->localIndexToWriteOnServer;1282 CArray<int, 1>& indexToWrite = axis->localIndexToWriteOnServer; 1278 1283 int nbWritten = indexToWrite.numElements(); 1279 1284 CArray<double,1> axis_value(indexToWrite.numElements()); … … 1282 1287 for (int i = 0; i < nbWritten; i++) 1283 1288 { 1284 if (i < axis->value.numElements()) 1289 if (indexToWrite(i) < 0) 1290 axis_value(i) = -1; // Some value in case of a hole 1291 else 1285 1292 axis_value(i) = axis->value(indexToWrite(i)); 1286 else1287 axis_value(i) = 0.;1288 1293 } 1289 1294 } … … 1295 1300 for (int i = 0; i < nbWritten; i++) 1296 1301 { 1297 if (i < axis->label.numElements()) 1302 if (indexToWrite(i) < 0) 1303 axis_label(i) = boost::lexical_cast<string>(-1); // Some value in case of a hole 1304 else 1298 1305 axis_label(i) = axis->label(indexToWrite(i)); 1299 else1300 axis_label(i) = boost::lexical_cast<string>(0); // Write 0 as a label1301 1306 } 1302 1307 } … … 1316 1321 for (int i = 0; i < nbWritten; ++i) 1317 1322 { 1318 if (i < axis->bounds.columns()) 1323 if (indexToWrite(i) < 0) 1324 { 1325 axis_bounds(0, i) = -1.; // Some value in case of a hole 1326 axis_bounds(1, i) = -1.; 1327 } 1328 else 1319 1329 { 1320 1330 axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 1321 1331 axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 1322 }1323 else1324 {1325 axis_bounds(0, i) = 0.;1326 axis_bounds(1, i) = 0.;1327 1328 1332 } 1329 1333 } … … 1356 1360 for (int i = 0; i < nbWritten; ++i) 1357 1361 { 1358 if (i < axis->bounds.columns()) 1362 if (indexToWrite(i) < 0) 1363 { 1364 axis_bounds(0, i) = -1.; 1365 axis_bounds(1, i) = -1.; 1366 } 1367 else 1359 1368 { 1360 1369 axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 1361 1370 axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 1362 }1363 else1364 {1365 axis_bounds(0, i) = 0.;1366 axis_bounds(1, i) = 0.;1367 1371 } 1368 1372 }
Note: See TracChangeset
for help on using the changeset viewer.