VTK  9.2.5
vtkArrayCalculator.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkArrayCalculator.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=========================================================================*/
75#ifndef vtkArrayCalculator_h
76#define vtkArrayCalculator_h
77
78#include "vtkDataObject.h" // For attribute types
79#include "vtkFiltersCoreModule.h" // For export macro
81#include "vtkTuple.h" // needed for vtkTuple
82#include <vector> // needed for vector
83
84class vtkDataSet;
85
86class VTKFILTERSCORE_EXPORT vtkArrayCalculator : public vtkPassInputTypeAlgorithm
87{
88public:
90 void PrintSelf(ostream& os, vtkIndent indent) override;
91
93
95
98 vtkSetStringMacro(Function);
99 vtkGetStringMacro(Function);
101
103
113 void AddScalarArrayName(const char* arrayName, int component = 0);
115 const char* arrayName, int component0 = 0, int component1 = 1, int component2 = 2);
117
119
125 void AddScalarVariable(const char* variableName, const char* arrayName, int component = 0);
126 void AddVectorVariable(const char* variableName, const char* arrayName, int component0 = 0,
127 int component1 = 1, int component2 = 2);
129
131
137 void AddCoordinateScalarVariable(const char* variableName, int component = 0);
139 const char* variableName, int component0 = 0, int component1 = 1, int component2 = 2);
141
143
149 vtkSetStringMacro(ResultArrayName);
150 vtkGetStringMacro(ResultArrayName);
152
154
158 vtkGetMacro(ResultArrayType, int);
159 vtkSetMacro(ResultArrayType, int);
161
163
169 vtkGetMacro(CoordinateResults, vtkTypeBool);
170 vtkSetMacro(CoordinateResults, vtkTypeBool);
171 vtkBooleanMacro(CoordinateResults, vtkTypeBool);
173
175
180 vtkGetMacro(ResultNormals, bool);
181 vtkSetMacro(ResultNormals, bool);
182 vtkBooleanMacro(ResultNormals, bool);
184
186
191 vtkGetMacro(ResultTCoords, bool);
192 vtkSetMacro(ResultTCoords, bool);
193 vtkBooleanMacro(ResultTCoords, bool);
195
200
201 static const int DEFAULT_ATTRIBUTE_TYPE = -1;
203
209 vtkSetMacro(AttributeType, int);
210 vtkGetMacro(AttributeType, int);
211 void SetAttributeTypeToDefault() { this->SetAttributeType(DEFAULT_ATTRIBUTE_TYPE); }
212 void SetAttributeTypeToPointData() { this->SetAttributeType(vtkDataObject::POINT); }
213 void SetAttributeTypeToCellData() { this->SetAttributeType(vtkDataObject::CELL); }
214 void SetAttributeTypeToEdgeData() { this->SetAttributeType(vtkDataObject::EDGE); }
215 void SetAttributeTypeToVertexData() { this->SetAttributeType(vtkDataObject::VERTEX); }
216 void SetAttributeTypeToRowData() { this->SetAttributeType(vtkDataObject::ROW); }
218
223
227 virtual void RemoveScalarVariables();
228
232 virtual void RemoveVectorVariables();
233
238
243
245
248 const std::vector<std::string>& GetScalarArrayNames() { return this->ScalarArrayNames; }
249 std::string GetScalarArrayName(int i);
250 const std::vector<std::string>& GetVectorArrayNames() { return this->VectorArrayNames; }
251 std::string GetVectorArrayName(int i);
252 const std::vector<std::string>& GetScalarVariableNames() { return this->ScalarVariableNames; }
253 std::string GetScalarVariableName(int i);
254 const std::vector<std::string>& GetVectorVariableNames() { return this->VectorVariableNames; }
255 std::string GetVectorVariableName(int i);
256 const std::vector<int>& GetSelectedScalarComponents() { return this->SelectedScalarComponents; }
258 const std::vector<vtkTuple<int, 3>>& GetSelectedVectorComponents()
259 {
260 return this->SelectedVectorComponents;
261 }
263 int GetNumberOfScalarArrays() { return static_cast<int>(this->ScalarArrayNames.size()); }
264 int GetNumberOfVectorArrays() { return static_cast<int>(this->VectorArrayNames.size()); }
266
268
274 vtkSetMacro(ReplaceInvalidValues, vtkTypeBool);
275 vtkGetMacro(ReplaceInvalidValues, vtkTypeBool);
276 vtkBooleanMacro(ReplaceInvalidValues, vtkTypeBool);
277 vtkSetMacro(ReplacementValue, double);
278 vtkGetMacro(ReplacementValue, double);
280
282
287 vtkSetMacro(IgnoreMissingArrays, bool);
288 vtkGetMacro(IgnoreMissingArrays, bool);
289 vtkBooleanMacro(IgnoreMissingArrays, bool);
291
296 {
297 FunctionParser, // vtkFunctionParser
298 ExprTkFunctionParser, // vtkExprTkFunctionParser
299 NumberOfFunctionParserTypes
300 };
301
303
309 {
310 this->FunctionParserType = FunctionParserTypes::FunctionParser;
311 this->Modified();
312 }
314 {
315 this->FunctionParserType = FunctionParserTypes::ExprTkFunctionParser;
316 this->Modified();
317 }
320
326
327protected:
330
332
334
339
347 static std::string CheckValidVariableName(const char* variableName);
348
350
351 char* Function;
353 std::vector<std::string> ScalarArrayNames;
354 std::vector<std::string> VectorArrayNames;
355 std::vector<std::string> ScalarVariableNames;
356 std::vector<std::string> VectorVariableNames;
358 std::vector<int> SelectedScalarComponents;
359 std::vector<vtkTuple<int, 3>> SelectedVectorComponents;
360
364
368 std::vector<std::string> CoordinateScalarVariableNames;
369 std::vector<std::string> CoordinateVectorVariableNames;
371 std::vector<vtkTuple<int, 3>> SelectedCoordinateVectorComponents;
372
374
375private:
376 vtkArrayCalculator(const vtkArrayCalculator&) = delete;
377 void operator=(const vtkArrayCalculator&) = delete;
378
379 // Do the bulk of the work
380 template <typename TFunctionParser>
381 int ProcessDataObject(vtkDataObject* input, vtkDataObject* output);
382};
383
384#endif
perform mathematical operations on data in field data arrays
FunctionParserTypes
Enum that includes the types of parsers that can be used.
void SetFunctionParserTypeToFunctionParser()
Set/Get the FunctionParser type that will be used.
const std::vector< std::string > & GetVectorArrayNames()
Methods to get information about the current variables.
void RemoveAllVariables()
Remove all the variable names and their associated array names.
const char * GetAttributeTypeAsString()
Returns a string representation of the calculator's AttributeType.
void SetAttributeTypeToVertexData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
virtual void RemoveCoordinateVectorVariables()
Remove all the coordinate variables.
std::string GetVectorVariableName(int i)
Methods to get information about the current variables.
void SetAttributeTypeToRowData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
const std::vector< vtkTuple< int, 3 > > & GetSelectedVectorComponents()
Methods to get information about the current variables.
void SetAttributeTypeToDefault()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
vtkSetEnumMacro(FunctionParserType, FunctionParserTypes)
Set/Get the FunctionParser type that will be used.
vtkTuple< int, 3 > GetSelectedVectorComponents(int i)
Methods to get information about the current variables.
const std::vector< std::string > & GetScalarArrayNames()
Methods to get information about the current variables.
int GetNumberOfVectorArrays()
Methods to get information about the current variables.
vtkTypeBool ReplaceInvalidValues
const std::vector< int > & GetSelectedScalarComponents()
Methods to get information about the current variables.
std::vector< std::string > VectorVariableNames
void AddScalarVariable(const char *variableName, const char *arrayName, int component=0)
Add a variable name, a corresponding array name, and which components of the array to use.
const std::vector< std::string > & GetScalarVariableNames()
Methods to get information about the current variables.
vtkTypeBool CoordinateResults
std::vector< vtkTuple< int, 3 > > SelectedVectorComponents
void SetAttributeTypeToEdgeData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
vtkDataSet * GetDataSetOutput()
Returns the output of the filter downcast to a vtkDataSet or nullptr if the cast fails.
vtkGetEnumMacro(FunctionParserType, FunctionParserTypes)
Set/Get the FunctionParser type that will be used.
std::string GetScalarArrayName(int i)
Methods to get information about the current variables.
std::string GetScalarVariableName(int i)
Methods to get information about the current variables.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetNumberOfScalarArrays()
Methods to get information about the current variables.
std::vector< vtkTuple< int, 3 > > SelectedCoordinateVectorComponents
void AddVectorArrayName(const char *arrayName, int component0=0, int component1=1, int component2=2)
Add an array name to the list of arrays used in the function and specify which components of the arra...
void AddCoordinateScalarVariable(const char *variableName, int component=0)
Add a variable name, a corresponding array name, and which components of the array to use.
virtual void RemoveVectorVariables()
Remove all the scalar variable names and their associated array names.
static std::string CheckValidVariableName(const char *variableName)
A variable name is valid if it's sanitized or enclosed in quotes.
void SetAttributeTypeToCellData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
std::vector< int > SelectedScalarComponents
void AddVectorVariable(const char *variableName, const char *arrayName, int component0=0, int component1=1, int component2=2)
Add a variable name, a corresponding array name, and which components of the array to use.
FunctionParserTypes FunctionParserType
const std::vector< std::string > & GetVectorVariableNames()
Methods to get information about the current variables.
std::vector< std::string > CoordinateVectorVariableNames
int GetAttributeTypeFromInput(vtkDataObject *input)
Get the attribute type for the input.
void AddCoordinateVectorVariable(const char *variableName, int component0=0, int component1=1, int component2=2)
Add a variable name, a corresponding array name, and which components of the array to use.
std::vector< std::string > ScalarVariableNames
std::vector< int > SelectedCoordinateScalarComponents
void SetFunctionParserTypeToExprTkFunctionParser()
Set/Get the FunctionParser type that will be used.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
std::vector< std::string > ScalarArrayNames
int GetSelectedScalarComponent(int i)
Methods to get information about the current variables.
virtual void RemoveScalarVariables()
Remove all the scalar variable names and their associated array names.
void AddScalarArrayName(const char *arrayName, int component=0)
Add an array name to the list of arrays used in the function and specify which components of the arra...
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
void SetAttributeTypeToPointData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
~vtkArrayCalculator() override
virtual void RemoveCoordinateScalarVariables()
Remove all the coordinate variables.
std::vector< std::string > VectorArrayNames
std::string GetVectorArrayName(int i)
Methods to get information about the current variables.
std::vector< std::string > CoordinateScalarVariableNames
static vtkArrayCalculator * New()
general representation of visualization data
Definition: vtkDataObject.h:66
abstract class to specify dataset behavior
Definition: vtkDataSet.h:63
a simple class to control print indentation
Definition: vtkIndent.h:40
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
virtual void Modified()
Update the modification time for this object.
Superclass for algorithms that produce output of the same type as input.
templated base type for containers of constant size.
Definition: vtkTuple.h:38
int vtkTypeBool
Definition: vtkABI.h:69