TTK
Loading...
Searching...
No Matches
ttkTrackingFromFields.h
Go to the documentation of this file.
1
33
34#pragma once
35
36#include <vtkCellData.h>
37#include <vtkDataSet.h>
38#include <vtkUnstructuredGrid.h>
39
40// VTK Module
42#include <TrackingFromFields.h>
43#include <ttkAlgorithm.h>
44#include <ttkTrackingFromFieldsModule.h>
45
46#include <algorithm>
47#include <string>
48
49class TTKTRACKINGFROMFIELDS_EXPORT ttkTrackingFromFields
50 : public ttkAlgorithm,
51 protected ttk::TrackingFromFields {
52
53public:
55
57
60 vtkSetMacro(Sampling, int);
61 vtkGetMacro(Sampling, int);
63
66 vtkSetMacro(StartTimestep, int);
67 vtkGetMacro(StartTimestep, int);
69
72 vtkSetMacro(EndTimestep, int);
73 vtkGetMacro(EndTimestep, int);
75
79 vtkSetMacro(Tolerance, double);
80 vtkGetMacro(Tolerance, double);
81
82 vtkSetMacro(RelativeDestructionCost, double);
83 vtkGetMacro(RelativeDestructionCost, double);
85
86 vtkSetMacro(AssignmentPrecision, double);
87 vtkGetMacro(AssignmentPrecision, double);
89
92 vtkSetMacro(PX, double);
93 vtkGetMacro(PX, double);
95
98 vtkSetMacro(PY, double);
99 vtkGetMacro(PY, double);
101
104 vtkSetMacro(PZ, double);
105 vtkGetMacro(PZ, double);
107
110 vtkSetMacro(PE, double);
111 vtkGetMacro(PE, double);
113
116 vtkSetMacro(PS, double);
117 vtkGetMacro(PS, double);
119
122 vtkSetMacro(PF, double);
123 vtkGetMacro(PF, double);
125
129 vtkSetMacro(WassersteinMetric, const std::string &);
130 vtkGetMacro(WassersteinMetric, std::string);
132
133 vtkSetMacro(DistanceAlgorithm, const std::string &);
134 vtkGetMacro(DistanceAlgorithm, std::string);
135
140 vtkSetMacro(PVAlgorithm, int);
141 vtkGetMacro(PVAlgorithm, int);
142
143 vtkSetMacro(AssignmentMethod, int);
144 vtkGetMacro(AssignmentMethod, int);
146
151 vtkSetMacro(UseGeometricSpacing, bool);
152 vtkGetMacro(UseGeometricSpacing, bool);
154
158 vtkSetMacro(Spacing, double);
159 vtkGetMacro(Spacing, double);
161
164 vtkSetMacro(DoPostProc, bool);
165 vtkGetMacro(DoPostProc, bool);
167
171 vtkSetMacro(PostProcThresh, double);
172 vtkGetMacro(PostProcThresh, double);
174
175protected:
177
178 int FillInputPortInformation(int port, vtkInformation *info) override;
179 int FillOutputPortInformation(int port, vtkInformation *info) override;
180 int RequestData(vtkInformation *request,
181 vtkInformationVector **inputVector,
182 vtkInformationVector *outputVector) override;
183
184private:
185 // Sampling config.
186 int StartTimestep{0};
187 int EndTimestep{-1};
188 int Sampling{1};
189
190 // Filtering config.
191 double Tolerance{1};
192 double PX{1};
193 double PY{1};
194 double PZ{1};
195 double PE{0};
196 double PS{0};
197 double PF{0};
198
199 double RelativeDestructionCost{0.1};
200 double AssignmentPrecision{0.01};
201 int AssignmentMethod{0};
202
203 // Bottleneck config.
204 bool UseGeometricSpacing{false};
205 bool DoPostProc{false};
206 double PostProcThresh{0.0};
207 double Spacing{1.0};
208 std::string DistanceAlgorithm{"ttk"};
209 int PVAlgorithm{2};
210 std::string WassersteinMetric{"2"};
211
212 template <class dataType, class triangulationType>
213 int trackWithPersistenceMatching(vtkUnstructuredGrid *output,
214 unsigned long fieldNumber,
215 const triangulationType *triangulation);
216
217 template <class dataType, class triangulationType>
218 int trackWithCriticalPointMatching(vtkUnstructuredGrid *output,
219 unsigned long fieldNumber,
220 const triangulationType *triangulation);
221};
virtual int RequestData(vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
int FillInputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
int FillOutputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
static ttkTrackingFromFields * New()