VTK  9.3.1
vtkSPHInterpolator.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
68 #ifndef vtkSPHInterpolator_h
69 #define vtkSPHInterpolator_h
70 
71 #include "vtkDataSetAlgorithm.h"
72 #include "vtkFiltersPointsModule.h" // For export macro
73 #include "vtkStdString.h" // For vtkStdString ivars
74 #include <vector> //For STL vector
75 
76 VTK_ABI_NAMESPACE_BEGIN
78 class vtkIdList;
79 class vtkDoubleArray;
80 class vtkSPHKernel;
81 class vtkCharArray;
82 class vtkFloatArray;
83 
84 class VTKFILTERSPOINTS_EXPORT vtkSPHInterpolator : public vtkDataSetAlgorithm
85 {
86 public:
88 
92  static vtkSPHInterpolator* New();
94  void PrintSelf(ostream& os, vtkIndent indent) override;
96 
98 
105  void SetSourceData(vtkDataObject* source);
106  vtkDataObject* GetSource();
108 
115  void SetSourceConnection(vtkAlgorithmOutput* algOutput);
116 
118 
123  void SetLocator(vtkAbstractPointLocator* locator);
124  vtkGetObjectMacro(Locator, vtkAbstractPointLocator);
126 
128 
133  void SetKernel(vtkSPHKernel* kernel);
134  vtkGetObjectMacro(Kernel, vtkSPHKernel);
136 
138 
142  vtkSetMacro(CutoffArrayName, vtkStdString);
143  vtkGetMacro(CutoffArrayName, vtkStdString);
145 
147 
153  vtkSetMacro(DensityArrayName, vtkStdString);
154  vtkGetMacro(DensityArrayName, vtkStdString);
156 
158 
165  vtkSetMacro(MassArrayName, vtkStdString);
166  vtkGetMacro(MassArrayName, vtkStdString);
168 
170 
174  void AddExcludedArray(const vtkStdString& excludedArray)
175  {
176  this->ExcludedArrays.push_back(excludedArray);
177  this->Modified();
178  }
180 
182 
186  {
187  this->ExcludedArrays.clear();
188  this->Modified();
189  }
191 
195  int GetNumberOfExcludedArrays() { return static_cast<int>(this->ExcludedArrays.size()); }
196 
198 
201  const char* GetExcludedArray(int i)
202  {
203  if (i < 0 || i >= static_cast<int>(this->ExcludedArrays.size()))
204  {
205  return nullptr;
206  }
207  return this->ExcludedArrays[i].c_str();
208  }
210 
212 
217  void AddDerivativeArray(const vtkStdString& derivArray)
218  {
219  this->DerivArrays.push_back(derivArray);
220  this->Modified();
221  }
223 
225 
229  {
230  this->DerivArrays.clear();
231  this->Modified();
232  }
234 
238  int GetNumberOfDerivativeArrays() { return static_cast<int>(this->DerivArrays.size()); }
239 
241 
244  const char* GetDerivativeArray(int i)
245  {
246  if (i < 0 || i >= static_cast<int>(this->DerivArrays.size()))
247  {
248  return nullptr;
249  }
250  return this->DerivArrays[i].c_str();
251  }
253 
254  // How to handle NULL/empty points
256  {
257  MASK_POINTS = 0,
258  NULL_VALUE = 1
259  };
260 
262 
271  vtkSetMacro(NullPointsStrategy, int);
272  vtkGetMacro(NullPointsStrategy, int);
273  void SetNullPointsStrategyToMaskPoints() { this->SetNullPointsStrategy(MASK_POINTS); }
274  void SetNullPointsStrategyToNullValue() { this->SetNullPointsStrategy(NULL_VALUE); }
276 
278 
284  vtkSetMacro(ValidPointsMaskArrayName, vtkStdString);
285  vtkGetMacro(ValidPointsMaskArrayName, vtkStdString);
287 
289 
294  vtkSetMacro(NullValue, double);
295  vtkGetMacro(NullValue, double);
297 
299 
307  vtkSetMacro(ComputeShepardSum, vtkTypeBool);
308  vtkBooleanMacro(ComputeShepardSum, vtkTypeBool);
309  vtkGetMacro(ComputeShepardSum, vtkTypeBool);
311 
313 
319  vtkSetMacro(ShepardSumArrayName, vtkStdString);
320  vtkGetMacro(ShepardSumArrayName, vtkStdString);
322 
324 
330  vtkSetMacro(PromoteOutputArrays, vtkTypeBool);
331  vtkBooleanMacro(PromoteOutputArrays, vtkTypeBool);
332  vtkGetMacro(PromoteOutputArrays, vtkTypeBool);
334 
336 
340  vtkSetMacro(PassPointArrays, vtkTypeBool);
341  vtkBooleanMacro(PassPointArrays, vtkTypeBool);
342  vtkGetMacro(PassPointArrays, vtkTypeBool);
344 
346 
350  vtkSetMacro(PassCellArrays, vtkTypeBool);
351  vtkBooleanMacro(PassCellArrays, vtkTypeBool);
352  vtkGetMacro(PassCellArrays, vtkTypeBool);
354 
356 
360  vtkSetMacro(PassFieldArrays, vtkTypeBool);
361  vtkBooleanMacro(PassFieldArrays, vtkTypeBool);
362  vtkGetMacro(PassFieldArrays, vtkTypeBool);
364 
366 
372  vtkSetMacro(ShepardNormalization, vtkTypeBool);
373  vtkBooleanMacro(ShepardNormalization, vtkTypeBool);
374  vtkGetMacro(ShepardNormalization, vtkTypeBool);
376 
380  vtkMTimeType GetMTime() override;
381 
382 protected:
384  ~vtkSPHInterpolator() override;
385 
388 
390 
393 
394  std::vector<vtkStdString> ExcludedArrays;
395  std::vector<vtkStdString> DerivArrays;
396 
398 
400  double NullValue;
403 
406 
408 
412 
416 
420  virtual void Probe(vtkDataSet* input, vtkDataSet* source, vtkDataSet* output);
421 
426  virtual void PassAttributeData(vtkDataSet* input, vtkDataObject* source, vtkDataSet* output);
427 
428 private:
429  vtkSPHInterpolator(const vtkSPHInterpolator&) = delete;
430  void operator=(const vtkSPHInterpolator&) = delete;
431 };
432 
433 VTK_ABI_NAMESPACE_END
434 #endif
std::vector< vtkStdString > DerivArrays
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:28
vtkAbstractPointLocator * Locator
const char * GetDerivativeArray(int i)
Return the name of the ith derivative array.
void ClearExcludedArrays()
Clears the contents of excluded array list.
Store vtkAlgorithm input/output information.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270
abstract class to specify dataset behavior
Definition: vtkDataSet.h:52
vtkTypeBool ShepardNormalization
interpolate over point cloud using SPH kernels
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:30
void AddDerivativeArray(const vtkStdString &derivArray)
Adds an array to the list of arrays whose derivative is to be taken.
const char * GetExcludedArray(int i)
Return the name of the ith excluded array.
void SetNullPointsStrategyToMaskPoints()
Specify a strategy to use when encountering a "null" point during the interpolation process...
Proxy object to connect input/output ports.
dynamic, self-adjusting array of double
int vtkTypeBool
Definition: vtkABI.h:64
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:40
int GetNumberOfExcludedArrays()
Return the number of excluded arrays.
vtkTypeBool PromoteOutputArrays
a simple class to control print indentation
Definition: vtkIndent.h:28
vtkTypeBool ComputeShepardSum
abstract class to quickly locate points in 3-space
list of point or cell ids
Definition: vtkIdList.h:22
void AddExcludedArray(const vtkStdString &excludedArray)
Adds an array to the list of arrays which are to be excluded from the interpolation process...
virtual vtkMTimeType GetMTime()
Return this object's modified time.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks the algorithm to do its work.
virtual void Modified()
Update the modification time for this object.
vtkCharArray * ValidPointsMask
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkStdString ShepardSumArrayName
vtkStdString ValidPointsMaskArrayName
std::vector< vtkStdString > ExcludedArrays
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
void ClearDerivativeArrays()
Clears the contents of derivative array list.
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks for Information.
vtkStdString DensityArrayName
int GetNumberOfDerivativeArrays()
Return the number of derivative arrays.
Store zero or more vtkInformation instances.
Superclass for algorithms that produce output of the same type as input.
vtkStdString MassArrayName
a family of SPH interpolation kernels
Definition: vtkSPHKernel.h:55
vtkStdString CutoffArrayName
general representation of visualization data
Definition: vtkDataObject.h:54
static vtkDataSetAlgorithm * New()
void SetNullPointsStrategyToNullValue()
Specify a strategy to use when encountering a "null" point during the interpolation process...