ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/math/ConvexHull.hpp
(Generate patch)

Comparing trunk/src/math/ConvexHull.hpp (file contents):
Revision 1097 by chuckv, Thu Dec 14 19:32:32 2006 UTC vs.
Revision 1295 by chuckv, Wed Sep 17 00:45:42 2008 UTC

# Line 1 | Line 1
1 < /* Copyright (c) 2006 The University of Notre Dame. All Rights Reserved.
1 > /* Copyright (c) 2008 The University of Notre Dame. All Rights Reserved.
2   *
3   * The University of Notre Dame grants you ("Licensee") a
4   * non-exclusive, royalty free, license to use, modify and
# Line 40 | Line 40
40   *
41   *  ConvexHull.hpp
42   *
43 < *  Purpose: To calculate convexhull, hull volume and radius
44 < *  using the CGAL library.
43 > *  Purpose: To calculate convexhull, hull volume using the QuickHull algorithm provided by QHull.
44   *
45   *  Created by Charles F. Vardeman II on 11 Dec 2006.
46   *  @author  Charles F. Vardeman II
47 < *  @version $Id: ConvexHull.hpp,v 1.1 2006-12-14 19:32:32 chuckv Exp $
47 > *  @version $Id: ConvexHull.hpp,v 1.11 2008-09-17 00:45:42 chuckv Exp $
48   *
49   */
50  
# Line 53 | Line 52
52   #define MATH_CONVEXHULL_HPP_
53  
54   #include "math/Vector3.hpp"
55 < #include <CGAL/Homogeneous.h>
56 < #include <CGAL/Convex_hull_traits_3.h>
57 < #include <CGAL/Convex_hull_3.h>
55 > #include "config.h"
56 > #include "math/Hull.hpp"
57 > #include "math/Triangle.hpp"
58  
60 #include <CGAL/Polyhedron_3.h>
61 #include <CGAL/copy_n.h>
62 #include <CGAL/IO/Geomview_stream.h>
63 #include <CGAL/IO/Polyhedron_geomview_ostream.h>
59   #include <cassert>
60   #include <vector>
61 + #include <string>
62 + extern "C"
63 + {
64 + #if defined(HAVE_QHULL)
65 + #include "qhull/qhull.h"
66 + #include "qhull/mem.h"
67 + #include "qhull/qset.h"
68 + #include "qhull/geom.h"
69 + #include "qhull/merge.h"
70 + #include "qhull/poly.h"
71 + #include "qhull/io.h"
72 + #include "qhull/stat.h"
73 + #endif
74 + }
75 + #ifdef IS_MPI
76 + #include <mpi.h>
77 + #endif
78  
79  
80 + namespace oopse {
81 +  class ConvexHull : public Hull {
82 +  public:
83 +    ConvexHull();
84  
85 < typedef CGAL::MP_Float RT;
86 < typedef CGAL::Homogeneous<RT>                     K;
87 < typedef CGAL::Convex_hull_traits_3<K>             Traits;
88 < typedef Traits::Polyhedron_3                      Polyhedron_3;
89 < typedef K::Point_3                                Point_3;
90 < typedef K::Segment_3                              Segment_3;
91 < typedef Polyhedron_3::Facet_iterator                   Facet_iterator;
92 < typedef Polyhedron_3::Halfedge_around_facet_circulator Halfedge_facet_circulator;
93 <
94 <
95 < namespace oopse
96 <  {
97 <
98 <  class ConvexHull
99 <    {
84 <
85 <    public:
86 <      ConvexHull();
87 <      ~ConvexHull();
88 <      bool genHull(std::vector<Vector3d> pos);
89 <      std::vector<Vector3d> getHull();
90 <      RealType getVolume();
91 <      RealType getRadius();
92 <      RealType getInscribedRadius();
93 <      void geomviewHull(const std::string& geomFileName);
85 >    virtual ~ConvexHull(){};
86 >    void computeHull(std::vector<StuntDouble*> bodydoubles);
87 >    RealType getArea(){return area_;} //Total area of Hull
88 >    int getNs(){return Ns_;}  //Number of Surface Atoms
89 >    RealType getVolume(){return volume_;} //Total Volume inclosed by Hull
90 >    std::vector< StuntDouble* > getSurfaceAtoms(){return surfaceSDs_;} //Returns a list of surface atoms
91 >    std::vector<Triangle* > getMesh(){return Triangles_;}
92 >    void printHull(const std::string& geomFileName);
93 >  protected:
94 >    double volume_;
95 >    double area_;
96 >    int dim_;
97 >    int Ns_;
98 >    std::vector< StuntDouble* > surfaceSDs_;
99 >    const std::string options_;
100      private:
101 +    std::vector<Triangle*> Triangles_;
102  
103 <      CGAL::Object  ch_object;
104 <      Polyhedron_3  ch_polyhedron;
103 > #ifdef IS_MPI
104 >    int* NstoProc_;
105 >    int* displs_;
106 >    int Nsglobal_;
107 >    int nproc_;
108 >    int myrank_;
109 >    struct surfacePt_{
110 >        double x,y,z;
111 >    };
112  
113 <    }
114 <  ;
113 >    MPI::Datatype surfacePtType;
114 >    std::vector<surfacePt_> surfacePtsLocal_;
115 >    std::vector<surfacePt_> surfacePtsGlobal_;
116 > #endif
117  
118 <
118 >  };
119   }
120  
105
121   #endif /*MATH_CONVEXHULL_HPP_*/

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines