VTK  9.7.1
vtkPeriodicDataArray.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 
17 #ifndef vtkPeriodicDataArray_h
18 #define vtkPeriodicDataArray_h
19 
20 #include "vtkAOSDataArrayTemplate.h" // Template
21 #include "vtkDeprecation.h" // VTK_DEPRECATED_IN_9_7_0
22 #include "vtkGenericDataArray.h" // Parent
23 
24 VTK_ABI_NAMESPACE_BEGIN
25 template <class Scalar>
27  "No longer needed because vtkAngularPeriodicFilter generates an "
28  "implicit array using an internally defined backend.") vtkPeriodicDataArray
29  : public vtkGenericDataArray<vtkPeriodicDataArray<Scalar>, Scalar,
30  /* vtkArrayTypes::VTK_PERIODIC_DATA_ARRAY */ 9>
31 {
33  /* vtkArrayTypes::VTK_PERIODIC_DATA_ARRAY */ 9>;
34 
35 public:
38  using typename Superclass::ArrayTypeTag;
39  using typename Superclass::DataTypeTag;
40  using typename Superclass::ValueType;
41 
42  void PrintSelf(ostream& os, vtkIndent indent) override;
43 
47  void InitializeArray(vtkAOSDataArrayTemplate<Scalar>* inputData);
48 
52  void Initialize() override;
53 
57  void GetTuples(vtkIdList* ptIds, vtkAbstractArray* output) override;
58 
62  void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray* output) override;
63 
67  void Squeeze() override;
68 
72  VTK_DEPRECATED_IN_9_7_0("Use vtk::DataArrayValueRange, or the array directly")
73  VTK_NEWINSTANCE vtkArrayIterator* NewIterator() override;
74 
78  vtkIdType LookupValue(vtkVariant value) override;
79 
83  void LookupValue(vtkVariant value, vtkIdList* ids) override;
84 
88  vtkVariant GetVariantValue(vtkIdType idx) override;
89 
93  void ClearLookup() override;
94 
99  double* GetTuple(vtkIdType i) override;
100 
104  void GetTuple(vtkIdType i, double* tuple) override;
105 
109  vtkIdType LookupTypedValue(Scalar value) override;
110 
114  void LookupTypedValue(Scalar value, vtkIdList* ids) override;
115 
121  ValueType GetValue(vtkIdType idx) const;
122 
128  ValueType& GetValueReference(vtkIdType idx);
129 
133  void GetTypedTuple(vtkIdType idx, Scalar* t) const;
134 
140  ValueType GetTypedComponent(vtkIdType tupleIdx, int compIdx) const;
141 
145  unsigned long GetActualMemorySize() const override;
146 
150  vtkTypeBool ReserveTuples(vtkIdType numTuples) override;
151 
155  void SetNumberOfTuples(vtkIdType number) override;
156 
160  void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source) override;
161 
165  void SetTuple(vtkIdType i, const float* source) override;
166 
170  void SetTuple(vtkIdType i, const double* source) override;
171 
175  void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source) override;
176 
180  void InsertTuple(vtkIdType i, const float* source) override;
181 
185  void InsertTuple(vtkIdType i, const double* source) override;
186 
190  void InsertTuples(vtkIdList* dstIds, vtkIdList* srcIds, vtkAbstractArray* source) override;
191 
195  void InsertTuplesStartingAt(
196  vtkIdType dstStart, vtkIdList* srcIds, vtkAbstractArray* source) override;
197 
201  void InsertTuples(
202  vtkIdType dstStart, vtkIdType n, vtkIdType srcStart, vtkAbstractArray* source) override;
203 
207  vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray* source) override;
208 
212  vtkIdType InsertNextTuple(const float* source) override;
213 
217  vtkIdType InsertNextTuple(const double* source) override;
218 
222  void DeepCopy(vtkAbstractArray* aa) override;
223 
227  void DeepCopy(vtkDataArray* da) override;
228 
232  void InterpolateTuple(
233  vtkIdType i, vtkIdList* ptIndices, vtkAbstractArray* source, double* weights) override;
234 
238  void InterpolateTuple(vtkIdType i, vtkIdType id1, vtkAbstractArray* source1, vtkIdType id2,
239  vtkAbstractArray* source2, double t) override;
240 
244  void SetVariantValue(vtkIdType idx, vtkVariant value) override;
245 
249  void InsertVariantValue(vtkIdType idx, vtkVariant value) override;
250 
254  void RemoveTuple(vtkIdType id) override;
255 
259  void RemoveFirstTuple() override;
260 
264  void SetTypedTuple(vtkIdType i, const Scalar* t);
265 
269  void SetTypedComponent(vtkIdType t, int c, Scalar v);
270 
274  void InsertTypedTuple(vtkIdType i, const Scalar* t);
275 
279  vtkIdType InsertNextTypedTuple(const Scalar* t);
280 
284  void SetValue(vtkIdType idx, Scalar value);
285 
289  vtkIdType InsertNextValue(Scalar v);
290 
294  void InsertValue(vtkIdType idx, Scalar v);
295 
297 
300  vtkSetMacro(Normalize, bool);
301  vtkGetMacro(Normalize, bool);
303 
304 protected:
306  ~vtkPeriodicDataArray() override;
307 
309 
312  bool ReallocateTuples(vtkIdType numTuples);
314 
318  virtual void Transform(Scalar* tuple) const = 0;
319 
320  using Superclass::ComputeFiniteScalarRange;
321  using Superclass::ComputeFiniteVectorRange;
322  using Superclass::ComputeScalarRange;
323  using Superclass::ComputeVectorRange;
324 
328  bool ComputeScalarRange(double* range) override;
329 
333  bool ComputeVectorRange(double range[2]) override;
334 
338  bool ComputeFiniteScalarRange(double* range) override;
339 
343  bool ComputeFiniteVectorRange(double range[2]) override;
344 
348  virtual void ComputePeriodicRange(bool finite = false);
349 
353  void InvalidateRange();
354 
355  bool Normalize; // If transformed vector must be normalized
356 
357 private:
358  vtkPeriodicDataArray(const vtkPeriodicDataArray&) = delete;
359  void operator=(const vtkPeriodicDataArray&) = delete;
360 
362 
363  Scalar* TempScalarArray; // Temporary array used by GetTypedTuple methods
364  double* TempDoubleArray; // Temporary array used by GetTuple vethods
365  vtkIdType TempTupleIdx; // Location of currently stored Temp Tuple to use as cache
366  vtkAOSDataArrayTemplate<Scalar>* Data; // Original data
367 
368  bool InvalidRange = true;
369  double PeriodicRange[6]; // Transformed periodic range
370  bool InvalidFiniteRange = true;
371  double PeriodicFiniteRange[6]; // Transformed periodic finite range
372 };
373 
374 // Declare vtkArrayDownCast implementations for scaled SoA containers:
375 vtkArrayDownCast_TemplateFastCastMacro(vtkPeriodicDataArray);
376 
377 VTK_ABI_NAMESPACE_END
378 #include "vtkPeriodicDataArray.txx"
379 
380 #endif // vtkPeriodicDataArray_h
381 // VTK-HeaderTest-Exclude: vtkPeriodicDataArray.h
abstract base class for most VTK objects
Definition: vtkObject.h:52
Abstract superclass for all arrays.
virtual void Initialize()
Release storage and reset array to initial state.
void Squeeze() override
Free any unnecessary memory.
int vtkIdType
Definition: vtkType.h:363
Base interface for all typed vtkDataArray subclasses.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
A type representing the union of many types.
Definition: vtkVariant.h:52
int vtkTypeBool
Definition: vtkABI.h:64
Map native an Array into an angulat periodic array.
a simple class to control print indentation
Definition: vtkIndent.h:28
list of point or cell ids
Definition: vtkIdList.h:25
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
Abstract superclass to iterate over elements in an vtkAbstractArray.
vtkTemplateTypeMacro(SelfType, vtkDataArray)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define VTK_NEWINSTANCE
void GetTuples(vtkIdList *tupleIds, vtkAbstractArray *output) override
Given a list of tuple ids, return an array of tuples.
A filter to produce mapped angular periodic multiblock dataset from a single block, by rotation.
vtkArrayDownCast_TemplateFastCastMacro(vtkPeriodicDataArray)
std::integral_constant< int, vtkArrayTypes::VTK_ABSTRACT_ARRAY > ArrayTypeTag
#define VTK_DEPRECATED_IN_9_7_0(reason)