------------------------------------------------------------------------------
| 1303 | |
| 1304 | //------------------------------------------------------------------------------ |
| 1305 | vtkSmartPointer<vtkDataArray> vtkSLACReader::ReadPointDataArray(int ncFD, int varId) |
| 1306 | { |
| 1307 | // Get the dimension info. We should only need to worry about 1 or 2D arrays. |
| 1308 | int numDims; |
| 1309 | CALL_NETCDF_PTR(nc_inq_varndims(ncFD, varId, &numDims)); |
| 1310 | if (numDims > 2) // don't support 3d or higher arrays |
| 1311 | { |
| 1312 | vtkErrorMacro(<< "Sanity check failed. " |
| 1313 | << "Encountered array with too many dimensions."); |
| 1314 | return nullptr; |
| 1315 | } |
| 1316 | if (numDims < 1) // don't support 0d arrays |
| 1317 | { |
| 1318 | vtkErrorMacro(<< "Sanity check failed. " |
| 1319 | << "Encountered array no dimensions."); |
| 1320 | return nullptr; |
| 1321 | } |
| 1322 | int dimIds[2]; |
| 1323 | CALL_NETCDF_PTR(nc_inq_vardimid(ncFD, varId, dimIds)); |
| 1324 | size_t numCoords; |
| 1325 | CALL_NETCDF_PTR(nc_inq_dimlen(ncFD, dimIds[0], &numCoords)); |
| 1326 | size_t numComponents = 1; |
| 1327 | if (numDims > 1) |
| 1328 | { |
| 1329 | CALL_NETCDF_PTR(nc_inq_dimlen(ncFD, dimIds[1], &numComponents)); |
| 1330 | } |
| 1331 | |
| 1332 | // Allocate an array of the right type. |
| 1333 | nc_type ncType; |
| 1334 | CALL_NETCDF_PTR(nc_inq_vartype(ncFD, varId, &ncType)); |
| 1335 | int vtkType = NetCDFTypeToVTKType(ncType); |
| 1336 | if (vtkType < 1) |
| 1337 | return nullptr; |
| 1338 | vtkSmartPointer<vtkDataArray> dataArray; |
| 1339 | dataArray.TakeReference(vtkDataArray::CreateDataArray(vtkType)); |
| 1340 | assert(dataArray->HasStandardMemoryLayout() && "Array must have standard memory layout"); |
| 1341 | dataArray->SetNumberOfComponents(static_cast<int>(numComponents)); |
| 1342 | dataArray->SetNumberOfTuples(static_cast<vtkIdType>(numCoords)); |
| 1343 | |
| 1344 | // Read the data from the file. |
| 1345 | size_t start[2], count[2]; |
| 1346 | start[0] = start[1] = 0; |
| 1347 | count[0] = numCoords; |
| 1348 | count[1] = numComponents; // NOLINTNEXTLINE(bugprone-unsafe-functions) |
| 1349 | CALL_NETCDF_PTR(nc_get_vars(ncFD, varId, start, count, nullptr, dataArray->GetVoidPointer(0))); |
| 1350 | |
| 1351 | return dataArray; |
| 1352 | } |
| 1353 | |
| 1354 | //------------------------------------------------------------------------------ |
| 1355 | int vtkSLACReader::ReadCoordinates(int meshFD, vtkMultiBlockDataSet* output) |
no test coverage detected