forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkVortexCore.h
108 lines (93 loc) · 3.62 KB
/
vtkVortexCore.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*=========================================================================
Program: Visualization Toolkit
Module: vtkVortexCore.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkVortexCore
* @brief Compute vortex core lines using the parallel vectors method
*
* vtkVortexCore computes vortex core lines using the parallel vectors method,
* as described in
*
* Roth, Martin and Ronald Peikert. “A higher-order method for finding vortex
* core lines.” Proceedings Visualization '98 (Cat. No.98CB36276) (1998):
* 143-150.
*
* By default, the "Higher-Order" approach of computing the parallel vector
* lines between the flow field's velocity and jerk is disabled in favor of
* computing the parallel vector lines between the velocity and acceleration,
* as suggested in
*
* Haimes, Robert and David N. Kenwright. “On the velocity gradient tensor and
* fluid feature extraction.” (1999).
*
* To further discriminate against spurious vortex cores, at each potential point
* value the Q-criterion, delta-criterion, and lambda_2-criterion are checked as
* defined in
*
* Haller, G. (2005). An objective definition of a vortex. Journal of Fluid
* Mechanics, 525, 1-26.
*
* Additionally, the lambda_ci criterion is computed as defined in
*
* Chakraborty, P., Balachandar, S., & Adran, R. (2005). On the relationships
* between local vortex identification schemes. Journal of Fluid Mechanics, 535,
* 189-214.
*
* The Q-criterion and delta-criterion are used to prefilter cells
* prior to the execution of the parallel lines algorithm, and all criteria
* values are stored as point values on the output polylines.
*
* The FasterApproximation option uses a faster approximate gradient calculation
* to accelerate the vortex core calculation.
*
* @sa
* vtkParallelVectors
*/
#ifndef vtkVortexCore_h
#define vtkVortexCore_h
#include "vtkFiltersFlowPathsModule.h" // For export macro
#include "vtkPolyDataAlgorithm.h"
class VTKFILTERSFLOWPATHS_EXPORT vtkVortexCore : public vtkPolyDataAlgorithm
{
public:
static vtkVortexCore* New();
vtkTypeMacro(vtkVortexCore, vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
///@{
/**
* When this flag is on, the flow field's jerk is used instead of acceleration as the
* second vector field during the parallel vector operation. The default is off.
*/
vtkSetMacro(HigherOrderMethod, vtkTypeBool);
vtkGetMacro(HigherOrderMethod, vtkTypeBool);
vtkBooleanMacro(HigherOrderMethod, vtkTypeBool);
///@}
///@{
/**
* When this flag is on, the gradient filter will provide a less accurate (but close)
* algorithm that performs fewer derivative calculations (and is therefore faster).
* The default is off.
*/
vtkGetMacro(FasterApproximation, bool);
vtkSetMacro(FasterApproximation, bool);
vtkBooleanMacro(FasterApproximation, bool);
///@}
protected:
vtkVortexCore();
~vtkVortexCore() override;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int FillInputPortInformation(int, vtkInformation*) override;
vtkTypeBool HigherOrderMethod;
bool FasterApproximation;
private:
vtkVortexCore(const vtkVortexCore&) = delete;
void operator=(const vtkVortexCore&) = delete;
};
#endif