VTK
dox/Filters/Cosmo/vtkPCosmoHaloFinder.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkPCosmoHaloFinder.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*=========================================================================
00016 
00017   Program:   VTK/ParaView Los Alamos National Laboratory Modules (PVLANL)
00018   Module:    vtkPCosmoHaloFinder.h
00019 
00020 Copyright (c) 2007, 2009, Los Alamos National Security, LLC
00021 
00022 All rights reserved.
00023 
00024 Copyright 2007, 2009. Los Alamos National Security, LLC.
00025 This software was produced under U.S. Government contract DE-AC52-06NA25396
00026 for Los Alamos National Laboratory (LANL), which is operated by
00027 Los Alamos National Security, LLC for the U.S. Department of Energy.
00028 The U.S. Government has rights to use, reproduce, and distribute this software.
00029 NEITHER THE GOVERNMENT NOR LOS ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY,
00030 EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE.
00031 If software is modified to produce derivative works, such modified software
00032 should be clearly marked, so as not to confuse it with the version available
00033 from LANL.
00034 
00035 Additionally, redistribution and use in source and binary forms, with or
00036 without modification, are permitted provided that the following conditions
00037 are met:
00038 -   Redistributions of source code must retain the above copyright notice,
00039     this list of conditions and the following disclaimer.
00040 -   Redistributions in binary form must reproduce the above copyright notice,
00041     this list of conditions and the following disclaimer in the documentation
00042     and/or other materials provided with the distribution.
00043 -   Neither the name of Los Alamos National Security, LLC, Los Alamos National
00044     Laboratory, LANL, the U.S. Government, nor the names of its contributors
00045     may be used to endorse or promote products derived from this software
00046     without specific prior written permission.
00047 
00048 THIS SOFTWARE IS PROVIDED BY LOS ALAMOS NATIONAL SECURITY, LLC AND CONTRIBUTORS
00049 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
00050 THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00051 ARE DISCLAIMED. IN NO EVENT SHALL LOS ALAMOS NATIONAL SECURITY, LLC OR
00052 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00053 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00054 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
00055 OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00056 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00057 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
00058 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00059 
00060 =========================================================================*/
00069 #ifndef __vtkPCosmoHaloFinder_h
00070 #define __vtkPCosmoHaloFinder_h
00071 
00072 #include "vtkFiltersCosmoModule.h" // For export macro
00073 #include "vtkUnstructuredGridAlgorithm.h"
00074 
00075 class vtkMultiProcessController;
00076 
00077 class VTKFILTERSCOSMO_EXPORT vtkPCosmoHaloFinder : public vtkUnstructuredGridAlgorithm
00078 {
00079  public:
00080   static vtkPCosmoHaloFinder *New();
00081 
00082   vtkTypeMacro(vtkPCosmoHaloFinder,vtkUnstructuredGridAlgorithm);
00083   void PrintSelf(ostream& os, vtkIndent indent);
00084 
00086 
00087   virtual vtkMultiProcessController* GetController();
00088   virtual void SetController(vtkMultiProcessController*);
00090 
00092 
00094   vtkSetMacro(NP, int);
00095   vtkGetMacro(NP, int);
00097 
00099 
00100   vtkSetMacro(RL, float);
00101   vtkGetMacro(RL, float);
00103 
00105 
00107   vtkSetMacro(Overlap, float);
00108   vtkGetMacro(Overlap, float);
00110 
00112 
00114   vtkSetMacro(PMin, int);
00115   vtkGetMacro(PMin, int);
00117 
00119 
00120   vtkSetMacro(BB, float);
00121   vtkGetMacro(BB, float);
00123 
00125 
00126   vtkSetMacro(CopyHaloDataToParticles, int);
00127   vtkGetMacro(CopyHaloDataToParticles, int);
00129 
00131 
00133   vtkSetMacro(ComputeMostBoundParticle, int);
00134   vtkGetMacro(ComputeMostBoundParticle, int);
00136 
00138 
00140   vtkSetMacro(ComputeMostConnectedParticle, int);
00141   vtkGetMacro(ComputeMostConnectedParticle, int);
00143 
00145 
00146   vtkSetMacro(ComputeSOD, int);
00147   vtkGetMacro(ComputeSOD, int);
00149 
00151 
00153   vtkSetMacro(SODCenterType, int);
00154   vtkGetMacro(SODCenterType, int);
00156 
00158 
00159   vtkSetMacro(RhoC, float);
00160   vtkGetMacro(RhoC, float);
00162 
00164 
00165   vtkSetMacro(SODMass, float);
00166   vtkGetMacro(SODMass, float);
00168 
00170 
00171   vtkSetMacro(MinRadiusFactor, float);
00172   vtkGetMacro(MinRadiusFactor, float);
00174 
00176 
00177   vtkSetMacro(MaxRadiusFactor, float);
00178   vtkGetMacro(MaxRadiusFactor, float);
00180 
00182 
00183   vtkSetMacro(SODBins, int);
00184   vtkGetMacro(SODBins, int);
00186 
00188 
00189   vtkSetMacro(MinFOFSize, int);
00190   vtkGetMacro(MinFOFSize, int);
00192 
00194 
00195   vtkSetMacro(MinFOFMass, float);
00196   vtkGetMacro(MinFOFMass, float);
00198 
00199  protected:
00200   vtkPCosmoHaloFinder();
00201   ~vtkPCosmoHaloFinder();
00202 
00203   virtual int RequestInformation(vtkInformation*,
00204                                  vtkInformationVector**,
00205                                  vtkInformationVector*);
00206 
00207   virtual int RequestData(vtkInformation*,
00208                           vtkInformationVector**,
00209                           vtkInformationVector*);
00210 
00211   vtkMultiProcessController* Controller;
00212 
00213   int NP; // number of particles in the original simulation
00214   float RL; // The physical box dimensions (rL)
00215   float Overlap; // The ghost cell boundary space
00216   int PMin; // The minimum particles for a halo
00217   float BB; // The linking length
00218   int CopyHaloDataToParticles; // Copy halo information to original data
00219   int ComputeMostBoundParticle; // Turn on MBP finding
00220   int ComputeMostConnectedParticle; // Turn on MCP finding
00221 
00222   int ComputeSOD; // Turn on Spherical OverDensity (SOD) halos
00223   int SODCenterType; // Set the center finding for SOD halos
00224 
00225   float RhoC; // SOD rho_C (2.77536627e11)
00226   float SODMass; // Initial SOD mass (1.0e14)
00227   float MinRadiusFactor; // Minimum factor of SOD radius (0.5)
00228   float MaxRadiusFactor; // Maximum factor of SOD radius (2.0)
00229   int SODBins; // Number of log scale bins for SOD (20)
00230   int MinFOFSize; // Minimum FOF size for SOD (1000)
00231   float MinFOFMass; // Minimum FOF mass for SOD (5.0e12)
00232 
00233  private:
00234   vtkPCosmoHaloFinder(const vtkPCosmoHaloFinder&);  // Not implemented.
00235   void operator=(const vtkPCosmoHaloFinder&);  // Not implemented.
00236 
00237 };
00238 
00239 #endif //  __vtkPCosmoHaloFinder_h