VTK
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 "vtkFiltersPointsModule.h" // For export macro
81 #include "vtkDataSetAlgorithm.h"
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 
93 class VTKFILTERSPOINTS_EXPORT vtkSPHInterpolator : public vtkDataSetAlgorithm
94 {
95 public:
97 
101  static vtkSPHInterpolator *New();
103  void PrintSelf(ostream& os, vtkIndent indent) override;
105 
107 
114  void SetSourceData(vtkDataObject *source);
115  vtkDataObject *GetSource();
117 
124  void SetSourceConnection(vtkAlgorithmOutput* algOutput);
125 
127 
132  void SetLocator(vtkAbstractPointLocator *locator);
133  vtkGetObjectMacro(Locator,vtkAbstractPointLocator);
135 
137 
142  void SetKernel(vtkSPHKernel *kernel);
143  vtkGetObjectMacro(Kernel,vtkSPHKernel);
145 
147 
151  vtkSetMacro(CutoffArrayName,vtkStdString);
152  vtkGetMacro(CutoffArrayName,vtkStdString);
154 
156 
162  vtkSetMacro(DensityArrayName,vtkStdString);
163  vtkGetMacro(DensityArrayName,vtkStdString);
165 
167 
174  vtkSetMacro(MassArrayName,vtkStdString);
175  vtkGetMacro(MassArrayName,vtkStdString);
177 
179 
183  void AddExcludedArray(const vtkStdString &excludedArray)
184  {
185  this->ExcludedArrays.push_back(excludedArray);
186  this->Modified();
187  }
189 
191 
195  {
196  this->ExcludedArrays.clear();
197  this->Modified();
198  }
200 
205  {return static_cast<int>(this->ExcludedArrays.size());}
206 
208 
211  const char* GetExcludedArray(int i)
212  {
213  if ( i < 0 || i >= static_cast<int>(this->ExcludedArrays.size()) )
214  {
215  return nullptr;
216  }
217  return this->ExcludedArrays[i].c_str();
218  }
220 
222 
227  void AddDerivativeArray(const vtkStdString &derivArray)
228  {
229  this->DerivArrays.push_back(derivArray);
230  this->Modified();
231  }
233 
235 
239  {
240  this->DerivArrays.clear();
241  this->Modified();
242  }
244 
249  {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);
285  { this->SetNullPointsStrategy(MASK_POINTS); }
287  { this->SetNullPointsStrategy(NULL_VALUE); }
289 
291 
297  vtkSetMacro(ValidPointsMaskArrayName, vtkStdString);
298  vtkGetMacro(ValidPointsMaskArrayName, vtkStdString);
300 
302 
307  vtkSetMacro(NullValue,double);
308  vtkGetMacro(NullValue,double);
310 
312 
320  vtkSetMacro(ComputeShepardSum, vtkTypeBool);
321  vtkBooleanMacro(ComputeShepardSum, vtkTypeBool);
322  vtkGetMacro(ComputeShepardSum, vtkTypeBool);
324 
326 
332  vtkSetMacro(ShepardSumArrayName, vtkStdString);
333  vtkGetMacro(ShepardSumArrayName, vtkStdString);
335 
337 
343  vtkSetMacro(PromoteOutputArrays, vtkTypeBool);
344  vtkBooleanMacro(PromoteOutputArrays, vtkTypeBool);
345  vtkGetMacro(PromoteOutputArrays, vtkTypeBool);
347 
349 
353  vtkSetMacro(PassPointArrays, vtkTypeBool);
354  vtkBooleanMacro(PassPointArrays, vtkTypeBool);
355  vtkGetMacro(PassPointArrays, vtkTypeBool);
357 
359 
363  vtkSetMacro(PassCellArrays, vtkTypeBool);
364  vtkBooleanMacro(PassCellArrays, vtkTypeBool);
365  vtkGetMacro(PassCellArrays, vtkTypeBool);
367 
369 
373  vtkSetMacro(PassFieldArrays, vtkTypeBool);
374  vtkBooleanMacro(PassFieldArrays, vtkTypeBool);
375  vtkGetMacro(PassFieldArrays, vtkTypeBool);
377 
379 
385  vtkSetMacro(ShepardNormalization, vtkTypeBool);
386  vtkBooleanMacro(ShepardNormalization, vtkTypeBool);
387  vtkGetMacro(ShepardNormalization, vtkTypeBool);
389 
393  vtkMTimeType GetMTime() override;
394 
395 protected:
397  ~vtkSPHInterpolator() override;
398 
401 
403 
406 
407  std::vector<vtkStdString> ExcludedArrays;
408  std::vector<vtkStdString> DerivArrays;
409 
411 
413  double NullValue;
416 
420 
422 
426 
428  vtkInformationVector *) override;
430  vtkInformationVector *) override;
432  vtkInformationVector *) override;
433 
437  virtual void Probe(vtkDataSet *input, vtkDataSet *source, vtkDataSet *output);
438 
443  virtual void PassAttributeData(
444  vtkDataSet* input, vtkDataObject* source, vtkDataSet* output);
445 
446 private:
447  vtkSPHInterpolator(const vtkSPHInterpolator&) = delete;
448  void operator=(const vtkSPHInterpolator&) = delete;
449 
450 };
451 
452 #endif
vtkStdString.h
vtkSPHInterpolator::GetDerivativeArray
const char * GetDerivativeArray(int i)
Return the name of the ith derivative array.
Definition: vtkSPHInterpolator.h:255
vtkSPHInterpolator::GetNumberOfDerivativeArrays
int GetNumberOfDerivativeArrays()
Return the number of derivative arrays.
Definition: vtkSPHInterpolator.h:248
vtkSPHInterpolator::PromoteOutputArrays
vtkTypeBool PromoteOutputArrays
Definition: vtkSPHInterpolator.h:421
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:35
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkSPHInterpolator::ClearExcludedArrays
void ClearExcludedArrays()
Clears the contents of excluded array list.
Definition: vtkSPHInterpolator.h:194
vtkObject::Modified
virtual void Modified()
Update the modification time for this object.
vtkSPHInterpolator::ValidPointsMask
vtkCharArray * ValidPointsMask
Definition: vtkSPHInterpolator.h:415
vtkSPHInterpolator::SetNullPointsStrategyToMaskPoints
void SetNullPointsStrategyToMaskPoints()
Definition: vtkSPHInterpolator.h:284
vtkSPHInterpolator::ComputeShepardSum
vtkTypeBool ComputeShepardSum
Definition: vtkSPHInterpolator.h:417
vtkDataSetAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks the algorithm to do its work.
Definition: vtkDataSetAlgorithm.h:180
vtkSPHInterpolator::PassFieldArrays
vtkTypeBool PassFieldArrays
Definition: vtkSPHInterpolator.h:425
vtkSPHInterpolator::ValidPointsMaskArrayName
vtkStdString ValidPointsMaskArrayName
Definition: vtkSPHInterpolator.h:414
vtkSPHInterpolator::AddExcludedArray
void AddExcludedArray(const vtkStdString &excludedArray)
Adds an array to the list of arrays which are to be excluded from the interpolation process.
Definition: vtkSPHInterpolator.h:183
vtkSPHInterpolator::GetNumberOfExcludedArrays
int GetNumberOfExcludedArrays()
Return the number of excluded arrays.
Definition: vtkSPHInterpolator.h:204
vtkSPHInterpolator::GetExcludedArray
const char * GetExcludedArray(int i)
Return the name of the ith excluded array.
Definition: vtkSPHInterpolator.h:211
vtkSPHInterpolator::MassArrayName
vtkStdString MassArrayName
Definition: vtkSPHInterpolator.h:405
vtkSPHInterpolator::PassPointArrays
vtkTypeBool PassPointArrays
Definition: vtkSPHInterpolator.h:424
source
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:825
vtkDataSetAlgorithm
Superclass for algorithms that produce output of the same type as input.
Definition: vtkDataSetAlgorithm.h:48
vtkCharArray
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:35
vtkSPHInterpolator::DensityArrayName
vtkStdString DensityArrayName
Definition: vtkSPHInterpolator.h:404
vtkObject::GetMTime
virtual vtkMTimeType GetMTime()
Return this object's modified time.
vtkSPHInterpolator::NullPointsStrategy
int NullPointsStrategy
Definition: vtkSPHInterpolator.h:412
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkSPHInterpolator::ShepardNormalization
vtkTypeBool ShepardNormalization
Definition: vtkSPHInterpolator.h:410
vtkDataSetAlgorithm::New
static vtkDataSetAlgorithm * New()
vtkSPHInterpolator::NullValue
double NullValue
Definition: vtkSPHInterpolator.h:413
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:30
vtkSPHInterpolator::CutoffArrayName
vtkStdString CutoffArrayName
Definition: vtkSPHInterpolator.h:402
vtkSPHKernel
a family of SPH interpolation kernels
Definition: vtkSPHKernel.h:68
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:80
vtkSPHInterpolator::Locator
vtkAbstractPointLocator * Locator
Definition: vtkSPHInterpolator.h:399
vtkSPHInterpolator::NullStrategy
NullStrategy
Definition: vtkSPHInterpolator.h:266
vtkDataSetAlgorithm.h
vtkSPHInterpolator::PassCellArrays
vtkTypeBool PassCellArrays
Definition: vtkSPHInterpolator.h:423
vtkSPHInterpolator::ExcludedArrays
std::vector< vtkStdString > ExcludedArrays
Definition: vtkSPHInterpolator.h:407
vtkDataSetAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkAlgorithmOutput
Proxy object to connect input/output ports.
Definition: vtkAlgorithmOutput.h:36
vtkSPHInterpolator::DerivArrays
std::vector< vtkStdString > DerivArrays
Definition: vtkSPHInterpolator.h:408
vtkSPHInterpolator::ShepardSumArray
vtkFloatArray * ShepardSumArray
Definition: vtkSPHInterpolator.h:419
vtkAbstractPointLocator
abstract class to quickly locate points in 3-space
Definition: vtkAbstractPointLocator.h:38
vtkSPHInterpolator::Kernel
vtkSPHKernel * Kernel
Definition: vtkSPHInterpolator.h:400
vtkSPHInterpolator::ClearDerivativeArrays
void ClearDerivativeArrays()
Clears the contents of derivative array list.
Definition: vtkSPHInterpolator.h:238
vtkDoubleArray
dynamic, self-adjusting array of double
Definition: vtkDoubleArray.h:35
vtkDataSetAlgorithm::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
Definition: vtkDataSetAlgorithm.h:152
vtkSPHInterpolator
interpolate over point cloud using SPH kernels
Definition: vtkSPHInterpolator.h:93
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:34
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:58
vtkSPHInterpolator::ShepardSumArrayName
vtkStdString ShepardSumArrayName
Definition: vtkSPHInterpolator.h:418
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkSPHInterpolator::SetNullPointsStrategyToNullValue
void SetNullPointsStrategyToNullValue()
Definition: vtkSPHInterpolator.h:286
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302
vtkDataSetAlgorithm::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks for Information.
Definition: vtkDataSetAlgorithm.h:141
vtkSPHInterpolator::AddDerivativeArray
void AddDerivativeArray(const vtkStdString &derivArray)
Adds an array to the list of arrays whose derivative is to be taken.
Definition: vtkSPHInterpolator.h:227