VTK  9.3.20240328
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 
94  void PrintSelf(ostream& os, vtkIndent indent) override;
96 
98 
108 
116 
118 
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:
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
abstract class to quickly locate points in 3-space
Proxy object to connect input/output ports.
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:60
general representation of visualization data
Superclass for algorithms that produce output of the same type as input.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:165
dynamic, self-adjusting array of double
dynamic, self-adjusting array of float
list of point or cell ids
Definition: vtkIdList.h:132
a simple class to control print indentation
Definition: vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
virtual void Modified()
Update the modification time for this object.
interpolate over point cloud using SPH kernels
void SetSourceData(vtkDataObject *source)
Specify the dataset Pc that will be probed by the input points P.
int GetNumberOfDerivativeArrays()
Return the number of derivative arrays.
vtkTypeBool ShepardNormalization
vtkCharArray * ValidPointsMask
virtual void Probe(vtkDataSet *input, vtkDataSet *source, vtkDataSet *output)
Virtual for specialized subclass(es)
void SetLocator(vtkAbstractPointLocator *locator)
Specify a point locator.
static vtkSPHInterpolator * New()
Standard methods for instantiating, obtaining type information, and printing.
void ClearDerivativeArrays()
Clears the contents of derivative array list.
vtkStdString MassArrayName
void SetKernel(vtkSPHKernel *kernel)
Specify an interpolation kernel.
const char * GetExcludedArray(int i)
Return the name of the ith excluded array.
vtkStdString DensityArrayName
vtkTypeBool PromoteOutputArrays
void SetNullPointsStrategyToMaskPoints()
Specify a strategy to use when encountering a "null" point during the interpolation process.
vtkMTimeType GetMTime() override
Get the MTime of this object also considering the locator and kernel.
void AddDerivativeArray(const vtkStdString &derivArray)
Adds an array to the list of arrays whose derivative is to be taken.
void AddExcludedArray(const vtkStdString &excludedArray)
Adds an array to the list of arrays which are to be excluded from the interpolation process.
vtkDataObject * GetSource()
Specify the dataset Pc that will be probed by the input points P.
vtkStdString ShepardSumArrayName
void SetNullPointsStrategyToNullValue()
Specify a strategy to use when encountering a "null" point during the interpolation process.
void SetSourceConnection(vtkAlgorithmOutput *algOutput)
Specify the dataset Pc that will be probed by the input points P.
vtkStdString ValidPointsMaskArrayName
~vtkSPHInterpolator() override
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
std::vector< vtkStdString > ExcludedArrays
int GetNumberOfExcludedArrays()
Return the number of excluded arrays.
vtkStdString CutoffArrayName
vtkTypeBool ComputeShepardSum
vtkAbstractPointLocator * Locator
void ClearExcludedArrays()
Clears the contents of excluded array list.
const char * GetDerivativeArray(int i)
Return the name of the ith derivative array.
virtual void PassAttributeData(vtkDataSet *input, vtkDataObject *source, vtkDataSet *output)
Call at end of RequestData() to pass attribute data respecting the PassCellArrays,...
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instantiating, obtaining type information, and printing.
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks for Information.
std::vector< vtkStdString > DerivArrays
a family of SPH interpolation kernels
Definition: vtkSPHKernel.h:56
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:78
int vtkTypeBool
Definition: vtkABI.h:64
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270