Changeset 1571 for XIOS/dev/dev_olga/src/io/nc4_data_output.cpp
- Timestamp:
- 09/06/18 18:55:44 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_olga/src/io/nc4_data_output.cpp
r1559 r1571 56 56 { 57 57 StdString lonName,latName ; 58 58 59 59 domain->computeWrittenIndex(); 60 60 domain->computeWrittenCompressedIndex(comm_file); … … 154 154 */ 155 155 156 CArray< size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer;156 CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 157 157 int nbWritten = indexToWrite.numElements(); 158 158 CArray<double,1> writtenLat, writtenLon; … … 166 166 for (int idx = 0; idx < nbWritten; ++idx) 167 167 { 168 if (i dx < domain->latvalue.numElements())168 if (indexToWrite(idx) < 0) 169 169 { 170 writtenLat(idx) = domain->latvalue(indexToWrite(idx));171 writtenLon(idx) = domain->lonvalue(indexToWrite(idx));170 writtenLat(idx) = -1.; // hole 171 writtenLon(idx) = -1.; 172 172 } 173 173 else 174 174 { 175 writtenLat(idx) = 0.;176 writtenLon(idx) = 0.;175 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 176 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 177 177 } 178 178 } … … 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 for a moment because 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; … … 875 876 case (MULTI_FILE) : 876 877 { 878 ERROR("CNc4DataOutput::writeDomain(domain)", 879 << "[ type = multiple_file ]" 880 << " is not yet implemented for UGRID files !"); 877 881 break; 878 882 } … … 940 944 int nvertex = (domain->nvertex.isEmpty()) ? 0 : domain->nvertex; 941 945 942 CArray< size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer;946 CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 943 947 int nbWritten = indexToWrite.numElements(); 944 948 CArray<double,1> writtenLat, writtenLon; … … 952 956 for (int idx = 0; idx < nbWritten; ++idx) 953 957 { 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 }958 if (indexToWrite(idx) < 0) 959 { 960 writtenLat(idx) = -1.; 961 writtenLon(idx) = -1.; 962 } 963 else 964 { 965 writtenLat(idx) = domain->latvalue(indexToWrite(idx)); 966 writtenLon(idx) = domain->lonvalue(indexToWrite(idx)); 967 } 964 968 } 965 969 } … … 976 980 for (int nv = 0; nv < nvertex; ++nv) 977 981 { 978 if (idx < boundslat.columns()) 982 if (indexToWrite(idx) < 0) 983 { 984 writtenBndsLat(nv, idx) = -1.; 985 writtenBndsLon(nv, idx) = -1.; 986 } 987 else 979 988 { 980 989 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 981 990 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 982 }983 else984 {985 writtenBndsLat(nv, idx) = 0.;986 writtenBndsLon(nv, idx) = 0.;987 991 } 988 992 } … … 995 999 for (int idx = 0; idx < nbWritten; ++idx) 996 1000 { 997 if (i dx < domain->areavalue.numElements())998 writtenArea(idx) = domain->areavalue(indexToWrite(idx));1001 if (indexToWrite(idx) < 0) 1002 writtenArea(idx) = -1.; 999 1003 else 1000 writtenArea(idx) = 0.;1004 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 1001 1005 } 1002 1006 } … … 1275 1279 SuperClassWriter::definition_end(); 1276 1280 1277 CArray< size_t, 1>& indexToWrite = axis->localIndexToWriteOnServer;1281 CArray<int, 1>& indexToWrite = axis->localIndexToWriteOnServer; 1278 1282 int nbWritten = indexToWrite.numElements(); 1279 1283 CArray<double,1> axis_value(indexToWrite.numElements()); … … 1282 1286 for (int i = 0; i < nbWritten; i++) 1283 1287 { 1284 if (i < axis->value.numElements()) 1288 if (indexToWrite(i) < 0) 1289 axis_value(i) = -1; // Some value in case of a hole 1290 else 1285 1291 axis_value(i) = axis->value(indexToWrite(i)); 1286 else1287 axis_value(i) = 0.;1288 1292 } 1289 1293 } … … 1295 1299 for (int i = 0; i < nbWritten; i++) 1296 1300 { 1297 if (i < axis->label.numElements()) 1301 if (indexToWrite(i) < 0) 1302 axis_label(i) = boost::lexical_cast<string>(-1); // Some value in case of a hole 1303 else 1298 1304 axis_label(i) = axis->label(indexToWrite(i)); 1299 else1300 axis_label(i) = boost::lexical_cast<string>(0); // Write 0 as a label1301 1305 } 1302 1306 } … … 1316 1320 for (int i = 0; i < nbWritten; ++i) 1317 1321 { 1318 if (i < axis->bounds.columns()) 1322 if (indexToWrite(i) < 0) 1323 { 1324 axis_bounds(0, i) = -1.; // Some value in case of a hole 1325 axis_bounds(1, i) = -1.; 1326 } 1327 else 1319 1328 { 1320 1329 axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 1321 1330 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 1331 1328 1332 } … … 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.