vtkPANLHaloFinder.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
3 // SPDX-License-Identifier: BSD-3-Clause
4 #ifndef vtkPANLHaloFinder_h
5 #define vtkPANLHaloFinder_h
6 
28 #include "vtkPVVTKExtensionsCosmoToolsModule.h" // For export macro
30 
32 
33 class VTKPVVTKEXTENSIONSCOSMOTOOLS_EXPORT vtkPANLHaloFinder : public vtkUnstructuredGridAlgorithm
34 {
36 
37 public:
38  static vtkPANLHaloFinder* New();
39  void PrintSelf(ostream& os, vtkIndent indent);
40 
42 
46  vtkSetMacro(RunSubHaloFinder, bool);
47  vtkGetMacro(RunSubHaloFinder, bool);
48  vtkBooleanMacro(RunSubHaloFinder, bool);
50 
52 
56  vtkSetMacro(RL, double);
57  vtkGetMacro(RL, double);
59 
61 
66  vtkSetMacro(DistanceConvertFactor, double);
67  vtkGetMacro(DistanceConvertFactor, double);
69 
71 
76  vtkSetMacro(MassConvertFactor, double);
77  vtkGetMacro(MassConvertFactor, double);
79 
81 
86  vtkSetMacro(DeadSize, double);
87  vtkGetMacro(DeadSize, double);
89 
91 
96  vtkSetMacro(ParticleMass, float);
97  vtkGetMacro(ParticleMass, float);
99 
101 
106  vtkSetMacro(BB, double);
107  vtkGetMacro(BB, double);
109 
111 
116  vtkSetClampMacro(AlphaFactor, double, 0.0, 1.0);
117  vtkGetMacro(AlphaFactor, double);
119 
121 
127  vtkSetClampMacro(BetaFactor, double, 0.0, 1.0);
128  vtkGetMacro(BetaFactor, double);
130 
132 
136  vtkSetMacro(NP, int);
137  vtkGetMacro(NP, int);
139 
141 
146  vtkSetMacro(NMin, int);
147  vtkGetMacro(NMin, int);
149 
151 
156  vtkSetMacro(PMin, int);
157  vtkGetMacro(PMin, int);
159 
161 
165  vtkSetMacro(MinFOFSubhaloSize, long);
166  vtkGetMacro(MinFOFSubhaloSize, long);
168 
170 
174  vtkSetMacro(MinCandidateSize, int);
175  vtkGetMacro(MinCandidateSize, int);
177 
179 
183  vtkSetMacro(NumSPHNeighbors, int);
184  vtkGetMacro(NumSPHNeighbors, int);
186 
188 
193  vtkSetMacro(NumNeighbors, int);
194  vtkGetMacro(NumNeighbors, int);
196 
198  {
199  NONE = 0,
200  MOST_BOUND_PARTICLE = 1,
201  MOST_CONNECTED_PARTICLE = 2,
202  HIST_CENTER_FINDING = 3
203  };
204 
206 
211  vtkSetMacro(CenterFindingMode, int);
212  vtkGetMacro(CenterFindingMode, int);
214 
216 
220  vtkSetMacro(SmoothingLength, double);
221  vtkGetMacro(SmoothingLength, double);
223 
225 
230  vtkSetMacro(OmegaDM, double);
231  vtkGetMacro(OmegaDM, double);
233 
235 
240  vtkSetMacro(OmegaNU, double);
241  vtkGetMacro(OmegaNU, double);
243 
245 
250  vtkSetMacro(Deut, double);
251  vtkGetMacro(Deut, double);
253 
255 
260  vtkSetMacro(Hubble, double);
261  vtkGetMacro(Hubble, double);
263 
265 
269  vtkSetMacro(RedShift, double);
270  vtkGetMacro(RedShift, double);
272 
273 protected:
275  virtual ~vtkPANLHaloFinder();
276 
279  int FillInputPortInformation(int port, vtkInformation* info);
280 
281  double RL;
284  double DeadSize;
286  double BB;
287  double AlphaFactor;
288  double BetaFactor;
289  int NP;
290  int NMin;
291  int PMin;
296 
298 
299  // Center finding parameters
302  double OmegaNU;
303  double OmegaDM;
304  double Deut;
305  double Hubble;
306  double RedShift;
307 
309 
310  class vtkInternals;
311  vtkInternals* Internal;
312 
313 private:
314  vtkPANLHaloFinder(const vtkPANLHaloFinder&) = delete;
315  void operator=(const vtkPANLHaloFinder&) = delete;
316 
317  void ExtractDataArrays(vtkUnstructuredGrid* input, vtkIdType offset);
318  void DistributeInput();
319  void CreateGhostParticles();
320  void ExecuteHaloFinder(vtkUnstructuredGrid* allParticles, vtkUnstructuredGrid* fofProperties);
321  void ExecuteSubHaloFinder(
322  vtkUnstructuredGrid* allParticles, vtkUnstructuredGrid* subFofProperties);
323  void FindCenters(vtkUnstructuredGrid* allParticles, vtkUnstructuredGrid* fofProperties);
324 };
325 
326 #endif // vtkPANLHaloFinder_h
virtual int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
static vtkUnstructuredGridAlgorithm * New()
virtual int FillInputPortInformation(int port, vtkInformation *info)
virtual int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
int vtkIdType
void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
vtkMultiProcessController * Controller
const int NONE
Given an input a vtkUnstructuredGrid of points with arrays vx, vy, vz, and id, finds clumps of points...
vtkInternals * Internal
void operator=(const vtkObjectBase &)