| 2529 | //------------------------------------------------------------------------------ |
| 2530 | |
| 2531 | vtkDataArray* vtkMPASReader::LoadCellVarData(int variableIndex) |
| 2532 | { |
| 2533 | int varid = this->Internals->cellVars[variableIndex]; |
| 2534 | char varname[NC_MAX_NAME + 1]; |
| 2535 | if (this->Internals->nc_err(nc_inq_varname(this->Internals->ncFile, varid, varname))) |
| 2536 | { |
| 2537 | vtkErrorMacro(<< "No NetCDF data for cellVar @ index " << variableIndex); |
| 2538 | return nullptr; |
| 2539 | } |
| 2540 | |
| 2541 | vtkDebugMacro(<< "Loading cell data array named: " << varname); |
| 2542 | |
| 2543 | // Get data type: |
| 2544 | nc_type typeNc; |
| 2545 | if (this->Internals->nc_err(nc_inq_vartype(this->Internals->ncFile, varid, &typeNc))) |
| 2546 | { |
| 2547 | return nullptr; |
| 2548 | } |
| 2549 | int typeVtk = NcTypeToVtkType(typeNc); |
| 2550 | |
| 2551 | // Allocate data array pointer for this variable: |
| 2552 | vtkSmartPointer<vtkDataArray> array = this->LookupCellDataArray(variableIndex); |
| 2553 | if (array == nullptr) |
| 2554 | { |
| 2555 | vtkDebugMacro(<< "Allocating data array."); |
| 2556 | array = vtkSmartPointer<vtkDataArray>::Take(vtkDataArray::CreateDataArray(typeVtk)); |
| 2557 | } |
| 2558 | array->SetName(varname); |
| 2559 | array->SetNumberOfComponents(1); |
| 2560 | array->SetNumberOfTuples(this->MaximumCells); |
| 2561 | |
| 2562 | if (!MPASDispatcher::Execute(array, *this->Internals, varid, vtkMPASReader::Internal::Cell{})) |
| 2563 | { |
| 2564 | vtkErrorMacro(<< "Unsupported data type for variable: " << varname); |
| 2565 | return nullptr; |
| 2566 | } |
| 2567 | if (this->Internals->CellResult) |
| 2568 | { |
| 2569 | this->Internals->cellArrays[variableIndex] = array; |
| 2570 | return array; |
| 2571 | } |
| 2572 | return nullptr; |
| 2573 | } |
| 2574 | |
| 2575 | //------------------------------------------------------------------------------ |
| 2576 | vtkDataArray* vtkMPASReader::LookupPointDataArray(int varIdx) |
no test coverage detected