VTK  9.2.6
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 =========================================================================*/
80 #ifndef vtkSPHInterpolator_h
81 #define vtkSPHInterpolator_h
82 
83 #include "vtkDataSetAlgorithm.h"
84 #include "vtkFiltersPointsModule.h" // For export macro
85 #include "vtkStdString.h" // For vtkStdString ivars
86 #include <vector> //For STL vector
87 
89 class vtkIdList;
90 class vtkDoubleArray;
91 class vtkSPHKernel;
92 class vtkCharArray;
93 class vtkFloatArray;
94 
95 class VTKFILTERSPOINTS_EXPORT vtkSPHInterpolator : public vtkDataSetAlgorithm
96 {
97 public:
99 
103  static vtkSPHInterpolator* New();
105  void PrintSelf(ostream& os, vtkIndent indent) override;
107 
109 
116  void SetSourceData(vtkDataObject* source);
117  vtkDataObject* GetSource();
119 
126  void SetSourceConnection(vtkAlgorithmOutput* algOutput);
127 
129 
134  void SetLocator(vtkAbstractPointLocator* locator);
135  vtkGetObjectMacro(Locator, vtkAbstractPointLocator);
137 
139 
144  void SetKernel(vtkSPHKernel* kernel);
145  vtkGetObjectMacro(Kernel, vtkSPHKernel);
147 
149 
153  vtkSetMacro(CutoffArrayName, vtkStdString);
154  vtkGetMacro(CutoffArrayName, vtkStdString);
156 
158 
164  vtkSetMacro(DensityArrayName, vtkStdString);
165  vtkGetMacro(DensityArrayName, vtkStdString);
167 
169 
176  vtkSetMacro(MassArrayName, vtkStdString);
177  vtkGetMacro(MassArrayName, vtkStdString);
179 
181 
185  void AddExcludedArray(const vtkStdString& excludedArray)
186  {
187  this->ExcludedArrays.push_back(excludedArray);
188  this->Modified();
189  }
191 
193 
197  {
198  this->ExcludedArrays.clear();
199  this->Modified();
200  }
202 
206  int GetNumberOfExcludedArrays() { return static_cast<int>(this->ExcludedArrays.size()); }
207 
209 
212  const char* GetExcludedArray(int i)
213  {
214  if (i < 0 || i >= static_cast<int>(this->ExcludedArrays.size()))
215  {
216  return nullptr;
217  }
218  return this->ExcludedArrays[i].c_str();
219  }
221 
223 
228  void AddDerivativeArray(const vtkStdString& derivArray)
229  {
230  this->DerivArrays.push_back(derivArray);
231  this->Modified();
232  }
234 
236 
240  {
241  this->DerivArrays.clear();
242  this->Modified();
243  }
245 
249  int GetNumberOfDerivativeArrays() { return static_cast<int>(this->DerivArrays.size()); }
250 
252 
255  const char* GetDerivativeArray(int i)
256  {
257  if (i < 0 || i >= static_cast<int>(this->DerivArrays.size()))
258  {
259  return nullptr;
260  }
261  return this->DerivArrays[i].c_str();
262  }
264 
265  // How to handle NULL/empty points
267  {
268  MASK_POINTS = 0,
269  NULL_VALUE = 1
270  };
271 
273 
282  vtkSetMacro(NullPointsStrategy, int);
283  vtkGetMacro(NullPointsStrategy, int);
284  void SetNullPointsStrategyToMaskPoints() { this->SetNullPointsStrategy(MASK_POINTS); }
285  void SetNullPointsStrategyToNullValue() { this->SetNullPointsStrategy(NULL_VALUE); }
287 
289 
295  vtkSetMacro(ValidPointsMaskArrayName, vtkStdString);
296  vtkGetMacro(ValidPointsMaskArrayName, vtkStdString);
298 
300 
305  vtkSetMacro(NullValue, double);
306  vtkGetMacro(NullValue, double);
308 
310 
318  vtkSetMacro(ComputeShepardSum, vtkTypeBool);
319  vtkBooleanMacro(ComputeShepardSum, vtkTypeBool);
320  vtkGetMacro(ComputeShepardSum, vtkTypeBool);
322 
324 
330  vtkSetMacro(ShepardSumArrayName, vtkStdString);
331  vtkGetMacro(ShepardSumArrayName, vtkStdString);
333 
335 
341  vtkSetMacro(PromoteOutputArrays, vtkTypeBool);
342  vtkBooleanMacro(PromoteOutputArrays, vtkTypeBool);
343  vtkGetMacro(PromoteOutputArrays, vtkTypeBool);
345 
347 
351  vtkSetMacro(PassPointArrays, vtkTypeBool);
352  vtkBooleanMacro(PassPointArrays, vtkTypeBool);
353  vtkGetMacro(PassPointArrays, vtkTypeBool);
355 
357 
361  vtkSetMacro(PassCellArrays, vtkTypeBool);
362  vtkBooleanMacro(PassCellArrays, vtkTypeBool);
363  vtkGetMacro(PassCellArrays, vtkTypeBool);
365 
367 
371  vtkSetMacro(PassFieldArrays, vtkTypeBool);
372  vtkBooleanMacro(PassFieldArrays, vtkTypeBool);
373  vtkGetMacro(PassFieldArrays, vtkTypeBool);
375 
377 
383  vtkSetMacro(ShepardNormalization, vtkTypeBool);
384  vtkBooleanMacro(ShepardNormalization, vtkTypeBool);
385  vtkGetMacro(ShepardNormalization, vtkTypeBool);
387 
391  vtkMTimeType GetMTime() override;
392 
393 protected:
395  ~vtkSPHInterpolator() override;
396 
399 
401 
404 
405  std::vector<vtkStdString> ExcludedArrays;
406  std::vector<vtkStdString> DerivArrays;
407 
409 
411  double NullValue;
414 
417 
419 
423 
427 
431  virtual void Probe(vtkDataSet* input, vtkDataSet* source, vtkDataSet* output);
432 
437  virtual void PassAttributeData(vtkDataSet* input, vtkDataObject* source, vtkDataSet* output);
438 
439 private:
440  vtkSPHInterpolator(const vtkSPHInterpolator&) = delete;
441  void operator=(const vtkSPHInterpolator&) = delete;
442 };
443 
444 #endif
std::vector< vtkStdString > DerivArrays
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:38
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:287
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
vtkTypeBool ShepardNormalization
interpolate over point cloud using SPH kernels
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:41
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: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:51
int GetNumberOfExcludedArrays()
Return the number of excluded arrays.
vtkTypeBool PromoteOutputArrays
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkTypeBool ComputeShepardSum
abstract class to quickly locate points in 3-space
list of point or cell ids
Definition: vtkIdList.h:33
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:67
vtkStdString CutoffArrayName
general representation of visualization data
Definition: vtkDataObject.h:65
static vtkDataSetAlgorithm * New()
void SetNullPointsStrategyToNullValue()
Specify a strategy to use when encountering a "null" point during the interpolation process...