Changeset 1637 for XIOS/trunk/src/io/nc4_data_output.cpp
- Timestamp:
- 01/14/19 13:33:48 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/io/nc4_data_output.cpp
r1622 r1637 155 155 */ 156 156 157 CArray< size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer;157 CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 158 158 int nbWritten = indexToWrite.numElements(); 159 159 CArray<double,1> writtenLat, writtenLon; … … 167 167 for (int idx = 0; idx < nbWritten; ++idx) 168 168 { 169 if (idx < domain->latvalue.numElements())170 171 writtenLat(idx) = domain->latvalue(indexToWrite(idx));172 writtenLon(idx) = domain->lonvalue(indexToWrite(idx));173 174 175 176 writtenLat(idx) = 0.;177 writtenLon(idx) = 0.;178 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 } 179 179 } 180 181 180 182 181 if (domain->hasBounds) … … 190 189 for (int nv = 0; nv < nvertex; ++nv) 191 190 { 192 if (idx < boundslat.columns()) 193 { 191 if (indexToWrite(idx) < 0) 192 { 193 writtenBndsLat(nv, idx) = -1.; // hole 194 writtenBndsLon(nv, idx) = -1.; 195 } 196 else 197 { 194 198 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 195 199 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 196 } 197 else 198 { 199 writtenBndsLat(nv, idx) = 0.; 200 writtenBndsLon(nv, idx) = 0.; 201 } 200 } 202 201 } 203 202 } … … 209 208 for (int idx = 0; idx < nbWritten; ++idx) 210 209 { 211 if (i dx < domain->areavalue.numElements())212 writtenArea(idx) = domain->areavalue(indexToWrite(idx));210 if (indexToWrite(idx) < 0) 211 writtenArea(idx) = -1.; 213 212 else 214 writtenArea(idx) = 0.;213 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 215 214 } 216 215 } … … 427 426 std::vector<StdSize> start(2) ; 428 427 std::vector<StdSize> count(2) ; 429 if (domain->isEmpty()) 430 { 431 start[0]=0 ; start[1]=0 ; 432 count[0]=0 ; count[1]=0 ; 433 } 434 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 435 435 { 436 436 start[1]=domain->ibegin; … … 877 877 case (MULTI_FILE) : 878 878 { 879 ERROR("CNc4DataOutput::writeDomain(domain)", 880 << "[ type = multiple_file ]" 881 << " is not yet implemented for UGRID files !"); 879 882 break; 880 883 } … … 942 945 int nvertex = (domain->nvertex.isEmpty()) ? 0 : domain->nvertex; 943 946 944 CArray< size_t, 1>& indexToWrite = domain->localIndexToWriteOnServer;947 CArray<int, 1>& indexToWrite = domain->localIndexToWriteOnServer; 945 948 int nbWritten = indexToWrite.numElements(); 946 949 CArray<double,1> writtenLat, writtenLon; … … 954 957 for (int idx = 0; idx < nbWritten; ++idx) 955 958 { 956 if (i dx < domain->latvalue.numElements())957 {958 writtenLat(idx) = domain->latvalue(indexToWrite(idx));959 writtenLon(idx) = domain->lonvalue(indexToWrite(idx));960 }961 else962 {963 writtenLat(idx) = 0.;964 writtenLon(idx) = 0.;965 }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 } 966 969 } 967 970 } … … 978 981 for (int nv = 0; nv < nvertex; ++nv) 979 982 { 980 if (idx < boundslat.columns()) 983 if (indexToWrite(idx) < 0) 984 { 985 writtenBndsLat(nv, idx) = -1.; 986 writtenBndsLon(nv, idx) = -1.; 987 } 988 else 981 989 { 982 990 writtenBndsLat(nv, idx) = boundslat(nv, int(indexToWrite(idx))); 983 991 writtenBndsLon(nv, idx) = boundslon(nv, int(indexToWrite(idx))); 984 }985 else986 {987 writtenBndsLat(nv, idx) = 0.;988 writtenBndsLon(nv, idx) = 0.;989 992 } 990 993 } … … 997 1000 for (int idx = 0; idx < nbWritten; ++idx) 998 1001 { 999 if (idx < domain->areavalue.numElements())1000 writtenArea(idx) = domain->areavalue(indexToWrite(idx));1001 1002 writtenArea(idx) = 0.;1002 if (indexToWrite(idx) < 0) 1003 writtenArea(idx) = -1.; 1004 else 1005 writtenArea(idx) = domain->areavalue(indexToWrite(idx)); 1003 1006 } 1004 1007 } … … 1277 1280 SuperClassWriter::definition_end(); 1278 1281 1279 CArray< size_t, 1>& indexToWrite = axis->localIndexToWriteOnServer;1282 CArray<int, 1>& indexToWrite = axis->localIndexToWriteOnServer; 1280 1283 int nbWritten = indexToWrite.numElements(); 1281 1284 CArray<double,1> axis_value(indexToWrite.numElements()); … … 1284 1287 for (int i = 0; i < nbWritten; i++) 1285 1288 { 1286 if (i < axis->value.numElements()) 1289 if (indexToWrite(i) < 0) 1290 axis_value(i) = -1; // Some value in case of a hole 1291 else 1287 1292 axis_value(i) = axis->value(indexToWrite(i)); 1288 else1289 axis_value(i) = 0.;1290 1293 } 1291 1294 } … … 1297 1300 for (int i = 0; i < nbWritten; i++) 1298 1301 { 1299 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 1300 1305 axis_label(i) = axis->label(indexToWrite(i)); 1301 else1302 axis_label(i) = boost::lexical_cast<string>(0); // Write 0 as a label1303 1306 } 1304 1307 } … … 1318 1321 for (int i = 0; i < nbWritten; ++i) 1319 1322 { 1320 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 1321 1329 { 1322 1330 axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 1323 1331 axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 1324 }1325 else1326 {1327 axis_bounds(0, i) = 0.;1328 axis_bounds(1, i) = 0.;1329 1330 1332 } 1331 1333 } … … 1358 1360 for (int i = 0; i < nbWritten; ++i) 1359 1361 { 1360 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 1361 1368 { 1362 1369 axis_bounds(0, i) = axis->bounds(0, int(indexToWrite(i))); 1363 1370 axis_bounds(1, i) = axis->bounds(1, int(indexToWrite(i))); 1364 }1365 else1366 {1367 axis_bounds(0, i) = 0.;1368 axis_bounds(1, i) = 0.;1369 1371 } 1370 1372 }
Note: See TracChangeset
for help on using the changeset viewer.