VTK  9.4.20250209
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
76VTK_ABI_NAMESPACE_BEGIN
78class vtkIdList;
79class vtkDoubleArray;
80class vtkSPHKernel;
81class vtkCharArray;
82class vtkFloatArray;
83
84class VTKFILTERSPOINTS_EXPORT vtkSPHInterpolator : public vtkDataSetAlgorithm
85{
86public:
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
381
382protected:
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
427
428private:
429 vtkSPHInterpolator(const vtkSPHInterpolator&) = delete;
430 void operator=(const vtkSPHInterpolator&) = delete;
431};
432
433VTK_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
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:133
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)
const char * GetExcludedArray(int i)
Return the name of the ith excluded array.
void SetLocator(vtkAbstractPointLocator *locator)
Specify a point locator.
const char * GetDerivativeArray(int i)
Return the name of the ith derivative array.
void ClearDerivativeArrays()
Clears the contents of derivative array list.
void SetKernel(vtkSPHKernel *kernel)
Specify an interpolation kernel.
static vtkSPHInterpolator * New()
Standard methods for instantiating, obtaining type information, and printing.
vtkStdString DensityArrayName
vtkDataObject * GetSource()
Specify the dataset Pc that will be probed by the input points P.
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.
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.
vtkAbstractPointLocator * Locator
void ClearExcludedArrays()
Clears the contents of excluded array list.
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
Wrapper around std::string to keep symbols short.
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