VTK  9.0.1
vtkSPHInterpolator.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSPHInterpolator.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
77 #ifndef vtkSPHInterpolator_h
78 #define vtkSPHInterpolator_h
79 
80 #include "vtkDataSetAlgorithm.h"
81 #include "vtkFiltersPointsModule.h" // For export macro
82 #include "vtkStdString.h" // For vtkStdString ivars
83 #include <vector> //For STL vector
84 
86 class vtkIdList;
87 class vtkDoubleArray;
88 class vtkSPHKernel;
89 class vtkCharArray;
90 class vtkFloatArray;
91 
92 class VTKFILTERSPOINTS_EXPORT vtkSPHInterpolator : public vtkDataSetAlgorithm
93 {
94 public:
96 
100  static vtkSPHInterpolator* New();
102  void PrintSelf(ostream& os, vtkIndent indent) override;
104 
106 
113  void SetSourceData(vtkDataObject* source);
114  vtkDataObject* GetSource();
116 
123  void SetSourceConnection(vtkAlgorithmOutput* algOutput);
124 
126 
131  void SetLocator(vtkAbstractPointLocator* locator);
132  vtkGetObjectMacro(Locator, vtkAbstractPointLocator);
134 
136 
141  void SetKernel(vtkSPHKernel* kernel);
142  vtkGetObjectMacro(Kernel, vtkSPHKernel);
144 
146 
150  vtkSetMacro(CutoffArrayName, vtkStdString);
151  vtkGetMacro(CutoffArrayName, vtkStdString);
153 
155 
161  vtkSetMacro(DensityArrayName, vtkStdString);
162  vtkGetMacro(DensityArrayName, vtkStdString);
164 
166 
173  vtkSetMacro(MassArrayName, vtkStdString);
174  vtkGetMacro(MassArrayName, vtkStdString);
176 
178 
182  void AddExcludedArray(const vtkStdString& excludedArray)
183  {
184  this->ExcludedArrays.push_back(excludedArray);
185  this->Modified();
186  }
188 
190 
194  {
195  this->ExcludedArrays.clear();
196  this->Modified();
197  }
199 
203  int GetNumberOfExcludedArrays() { return static_cast<int>(this->ExcludedArrays.size()); }
204 
206 
209  const char* GetExcludedArray(int i)
210  {
211  if (i < 0 || i >= static_cast<int>(this->ExcludedArrays.size()))
212  {
213  return nullptr;
214  }
215  return this->ExcludedArrays[i].c_str();
216  }
218 
220 
225  void AddDerivativeArray(const vtkStdString& derivArray)
226  {
227  this->DerivArrays.push_back(derivArray);
228  this->Modified();
229  }
231 
233 
237  {
238  this->DerivArrays.clear();
239  this->Modified();
240  }
242 
246  int GetNumberOfDerivativeArrays() { return static_cast<int>(this->DerivArrays.size()); }
247 
249 
252  const char* GetDerivativeArray(int i)
253  {
254  if (i < 0 || i >= static_cast<int>(this->DerivArrays.size()))
255  {
256  return nullptr;
257  }
258  return this->DerivArrays[i].c_str();
259  }
261 
262  // How to handle NULL/empty points
264  {
265  MASK_POINTS = 0,
266  NULL_VALUE = 1
267  };
268 
270 
279  vtkSetMacro(NullPointsStrategy, int);
280  vtkGetMacro(NullPointsStrategy, int);
281  void SetNullPointsStrategyToMaskPoints() { this->SetNullPointsStrategy(MASK_POINTS); }
282  void SetNullPointsStrategyToNullValue() { this->SetNullPointsStrategy(NULL_VALUE); }
284 
286 
292  vtkSetMacro(ValidPointsMaskArrayName, vtkStdString);
293  vtkGetMacro(ValidPointsMaskArrayName, vtkStdString);
295 
297 
302  vtkSetMacro(NullValue, double);
303  vtkGetMacro(NullValue, double);
305 
307 
315  vtkSetMacro(ComputeShepardSum, vtkTypeBool);
316  vtkBooleanMacro(ComputeShepardSum, vtkTypeBool);
317  vtkGetMacro(ComputeShepardSum, vtkTypeBool);
319 
321 
327  vtkSetMacro(ShepardSumArrayName, vtkStdString);
328  vtkGetMacro(ShepardSumArrayName, vtkStdString);
330 
332 
338  vtkSetMacro(PromoteOutputArrays, vtkTypeBool);
339  vtkBooleanMacro(PromoteOutputArrays, vtkTypeBool);
340  vtkGetMacro(PromoteOutputArrays, vtkTypeBool);
342 
344 
348  vtkSetMacro(PassPointArrays, vtkTypeBool);
349  vtkBooleanMacro(PassPointArrays, vtkTypeBool);
350  vtkGetMacro(PassPointArrays, vtkTypeBool);
352 
354 
358  vtkSetMacro(PassCellArrays, vtkTypeBool);
359  vtkBooleanMacro(PassCellArrays, vtkTypeBool);
360  vtkGetMacro(PassCellArrays, vtkTypeBool);
362 
364 
368  vtkSetMacro(PassFieldArrays, vtkTypeBool);
369  vtkBooleanMacro(PassFieldArrays, vtkTypeBool);
370  vtkGetMacro(PassFieldArrays, vtkTypeBool);
372 
374 
380  vtkSetMacro(ShepardNormalization, vtkTypeBool);
381  vtkBooleanMacro(ShepardNormalization, vtkTypeBool);
382  vtkGetMacro(ShepardNormalization, vtkTypeBool);
384 
388  vtkMTimeType GetMTime() override;
389 
390 protected:
392  ~vtkSPHInterpolator() override;
393 
396 
398 
401 
402  std::vector<vtkStdString> ExcludedArrays;
403  std::vector<vtkStdString> DerivArrays;
404 
406 
408  double NullValue;
411 
415 
417 
421 
425 
429  virtual void Probe(vtkDataSet* input, vtkDataSet* source, vtkDataSet* output);
430 
435  virtual void PassAttributeData(vtkDataSet* input, vtkDataObject* source, vtkDataSet* output);
436 
437 private:
438  vtkSPHInterpolator(const vtkSPHInterpolator&) = delete;
439  void operator=(const vtkSPHInterpolator&) = delete;
440 };
441 
442 #endif
std::vector< vtkStdString > DerivArrays
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
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:293
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
vtkTypeBool ShepardNormalization
interpolate over point cloud using SPH kernels
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:35
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...
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph *>::edge_descriptor e, vtkGraph *)
Proxy object to connect input/output ports.
dynamic, self-adjusting array of double
int vtkTypeBool
Definition: vtkABI.h:69
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:35
int GetNumberOfExcludedArrays()
Return the number of excluded arrays.
vtkTypeBool PromoteOutputArrays
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkTypeBool ComputeShepardSum
abstract class to quickly locate points in 3-space
list of point or cell ids
Definition: vtkIdList.h:30
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&#39;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
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:67
vtkStdString CutoffArrayName
general representation of visualization data
Definition: vtkDataObject.h:59
vtkFloatArray * ShepardSumArray
static vtkDataSetAlgorithm * New()
void SetNullPointsStrategyToNullValue()
Specify a strategy to use when encountering a "null" point during the interpolation process...