VTK
dox/Parallel/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 "vtkUnstructuredGridAlgorithm.h"
00073 
00074 class vtkMultiProcessController;
00075 
00076 class VTK_PARALLEL_EXPORT vtkPCosmoHaloFinder : public vtkUnstructuredGridAlgorithm
00077 {
00078  public:
00079   static vtkPCosmoHaloFinder *New();
00080 
00081   vtkTypeMacro(vtkPCosmoHaloFinder,vtkUnstructuredGridAlgorithm);
00082   void PrintSelf(ostream& os, vtkIndent indent);
00083 
00085 
00086   virtual vtkMultiProcessController* GetController();
00087   virtual void SetController(vtkMultiProcessController*);
00089 
00091 
00093   vtkSetMacro(NP, int);
00094   vtkGetMacro(NP, int);
00096 
00098 
00099   vtkSetMacro(RL, float);
00100   vtkGetMacro(RL, float);
00102 
00104 
00106   vtkSetMacro(Overlap, float);
00107   vtkGetMacro(Overlap, float);
00109 
00111 
00113   vtkSetMacro(PMin, int);
00114   vtkGetMacro(PMin, int);
00116 
00118 
00119   vtkSetMacro(BB, float);
00120   vtkGetMacro(BB, float);
00122 
00124 
00125   vtkSetMacro(CopyHaloDataToParticles, int);
00126   vtkGetMacro(CopyHaloDataToParticles, int);
00128 
00130 
00132   vtkSetMacro(ComputeMostBoundParticle, int);
00133   vtkGetMacro(ComputeMostBoundParticle, int);
00135 
00137 
00139   vtkSetMacro(ComputeMostConnectedParticle, int);
00140   vtkGetMacro(ComputeMostConnectedParticle, int);
00142 
00144 
00145   vtkSetMacro(ComputeSOD, int);
00146   vtkGetMacro(ComputeSOD, int);
00148 
00150 
00152   vtkSetMacro(SODCenterType, int);
00153   vtkGetMacro(SODCenterType, int);
00155 
00157 
00158   vtkSetMacro(RhoC, float);
00159   vtkGetMacro(RhoC, float);
00161 
00163 
00164   vtkSetMacro(SODMass, float);
00165   vtkGetMacro(SODMass, float);
00167 
00169 
00170   vtkSetMacro(MinRadiusFactor, float);
00171   vtkGetMacro(MinRadiusFactor, float);
00173 
00175 
00176   vtkSetMacro(MaxRadiusFactor, float);
00177   vtkGetMacro(MaxRadiusFactor, float);
00179 
00181 
00182   vtkSetMacro(SODBins, int);
00183   vtkGetMacro(SODBins, int);
00185 
00187 
00188   vtkSetMacro(MinFOFSize, int);
00189   vtkGetMacro(MinFOFSize, int);
00191 
00193 
00194   vtkSetMacro(MinFOFMass, float);
00195   vtkGetMacro(MinFOFMass, float);
00197 
00198  protected:
00199   vtkPCosmoHaloFinder();
00200   ~vtkPCosmoHaloFinder();
00201 
00202   virtual int RequestInformation(vtkInformation*,
00203                                  vtkInformationVector**,
00204                                  vtkInformationVector*);
00205 
00206   virtual int RequestData(vtkInformation*,
00207                           vtkInformationVector**,
00208                           vtkInformationVector*);
00209 
00210   vtkMultiProcessController* Controller;
00211 
00212   int NP; // number of particles in the original simulation
00213   float RL; // The physical box dimensions (rL)
00214   float Overlap; // The ghost cell boundary space
00215   int PMin; // The minimum particles for a halo
00216   float BB; // The linking length
00217   int CopyHaloDataToParticles; // Copy halo information to original data
00218   int ComputeMostBoundParticle; // Turn on MBP finding
00219   int ComputeMostConnectedParticle; // Turn on MCP finding
00220 
00221   int ComputeSOD; // Turn on Spherical OverDensity (SOD) halos
00222   int SODCenterType; // Set the center finding for SOD halos
00223 
00224   float RhoC; // SOD rho_C (2.77536627e11)
00225   float SODMass; // Initial SOD mass (1.0e14)
00226   float MinRadiusFactor; // Minimum factor of SOD radius (0.5)
00227   float MaxRadiusFactor; // Maximum factor of SOD radius (2.0)
00228   int SODBins; // Number of log scale bins for SOD (20) 
00229   int MinFOFSize; // Minimum FOF size for SOD (1000)
00230   float MinFOFMass; // Minimum FOF mass for SOD (5.0e12)
00231 
00232  private:
00233   vtkPCosmoHaloFinder(const vtkPCosmoHaloFinder&);  // Not implemented.
00234   void operator=(const vtkPCosmoHaloFinder&);  // Not implemented.
00235 
00236 };
00237 
00238 #endif //  __vtkPCosmoHaloFinder_h