| 141 | } |
| 142 | |
| 143 | vtkSmartPointer<vtkDataArray> computeL2Norm(vtkDataArray* array) |
| 144 | { |
| 145 | auto norm = vtkSmartPointer<vtkDoubleArray>::New(); |
| 146 | norm->SetNumberOfTuples(array->GetNumberOfTuples()); |
| 147 | vtkSMPTools::For(0, array->GetNumberOfTuples(), |
| 148 | [&norm, array](vtkIdType begin, vtkIdType end) |
| 149 | { |
| 150 | int numComponents = array->GetNumberOfComponents(); |
| 151 | std::vector<double> tuple(numComponents); |
| 152 | for (vtkIdType ii = begin; ii < end; ++ii) |
| 153 | { |
| 154 | array->GetTuple(ii, tuple.data()); |
| 155 | double norm2 = 0; |
| 156 | for (int jj = 0; jj < numComponents; ++jj) |
| 157 | { |
| 158 | norm2 += tuple[jj] * tuple[jj]; |
| 159 | } |
| 160 | norm->SetValue(ii, std::sqrt(norm2)); |
| 161 | } |
| 162 | }); |
| 163 | return norm; |
| 164 | } |
| 165 | |
| 166 | vtkSmartPointer<vtkDataArray> computeLInfNorm(vtkDataArray* array) |
| 167 | { |
no test coverage detected