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

Comparing trunk/src/math/Triangle.hpp (file contents):
Revision 1293 by chuckv, Sun Sep 14 01:32:26 2008 UTC vs.
Revision 1344 by gezelter, Wed May 13 22:27:29 2009 UTC

# Line 40 | Line 40
40   *
41   *  Triangle.hpp
42   *
43 < *  Purpose: Provide facets from hull to oopse
43 > *  Purpose: Provide basic triangle class for oopse. Hates Particle class.
44   *
45   *  Created by Charles F. Vardeman II on 29 July 2008.
46   *  @author  Charles F. Vardeman II
47 < *  @version $Id: Triangle.hpp,v 1.1 2008-09-14 01:32:25 chuckv Exp $
47 > *  @version $Id: Triangle.hpp,v 1.5 2009-05-13 22:27:29 gezelter Exp $
48   *
49   */
50  
# Line 53 | Line 53
53   #define MATH_FACET_HPP
54  
55   #include "math/Vector3.hpp"
56 + #include "math/SquareMatrix3.hpp"
57   #include "config.h"
58   #include "primitives/StuntDouble.hpp"
59  
# Line 71 | Line 72 | namespace oopse {
72    class Triangle {
73  
74    public:
75 <    Triangle(){};
75 >    Triangle();
76      virtual ~Triangle() { };
77  
78      void setNormal(Vector3d normal) {
79        normal_ = normal;
80 +      HaveNormal_ = true;
81      }
82  
83 <    void addVertex(StuntDouble* thisSD){
83 >    void addVertices(Vector3d P1, Vector3d P2, Vector3d P3);
84 >
85 >    void addVertexSD(StuntDouble* thisSD){
86        vertexSD_.push_back(thisSD);
87      }
88 <    
88 >
89      std::vector<StuntDouble*> getVertices(){return vertexSD_;}
90  
91      void setArea(RealType area) {
92        area_ = area;
93 +      HaveArea_ = true;
94      }
95      
96 <    Vector3d getNormal() {
97 <      return normal_;
96 >    Vector3d getNormal() {
97 >      if (HaveNormal_) {
98 >        return normal_;
99 >      } else {
100 >        return computeNormal();
101 >      }
102      }
103      
104      RealType getArea() {
105 <      return area_;
105 >      if(HaveArea_){
106 >        return area_;
107 >      }else{
108 >        return computeArea();
109 >      }
110      }
111  
112 +    RealType computeArea();
113 +    Vector3d computeNormal();
114 +    Vector3d computeCentroid();
115 +
116      void setCentroid(Vector3d centroid) {
117        centroid_ = centroid;
118 +      HaveCentroid_ = true;
119      }
120  
121 <    Vector3d getCentroid() {
122 <      return centroid_;
121 >    Vector3d getCentroid() {
122 >      if (HaveCentroid_) {
123 >        return centroid_;
124 >      } else {
125 >        return computeCentroid();
126 >      }
127      }
128 +    
129 +    Vector3d getFacetVelocity(){
130 +      return facetVelocity_;
131 +    }
132 +    
133 +    void setFacetVelocity(Vector3d facetVelocity){
134 +      facetVelocity_ = facetVelocity;
135 +    }
136  
137 +    void setFacetMass(RealType mass){
138 +      mass_ = mass;
139 +    }
140 +
141 +    RealType getFacetMass(){
142 +      return mass_;
143 +    }
144 +
145 +    RealType a(){
146 +      return a_.length();
147 +    }
148 +
149 +    RealType b(){
150 +      return b_.length();
151 +    }
152 +
153 +    RealType c(){
154 +      return c_.length();
155 +    }
156 +
157 +    RealType getHydroLength() {
158 +      RealType a1 = a();
159 +      RealType b1 = b();
160 +      RealType c1 = c();
161 +      RealType t1 =  a1 + b1 + c1;
162 +      RealType t4 =  a1 + b1 - c1;
163 +
164 +      return 32.0 * c1 / log(t1*t1/t4/t4);
165 +    }
166 +
167 +
168 +    RealType getIncircleRadius() {
169 +      return 2.0 * getArea() / (a() + b() + c());
170 +    }
171 +
172 +    RealType getCircumcircleRadius() {
173 +      RealType a1 = a();
174 +      RealType b1 = b();
175 +      RealType c1 = c();
176 +      RealType t1 =  a1 + b1 + c1;
177 +      RealType t2 = -a1 + b1 + c1;
178 +      RealType t3 =  a1 - b1 + c1;
179 +      RealType t4 =  a1 + b1 - c1;
180 +      RealType junk = t1*t2*t3*t4;
181 +      return a1 * b1 * c1 / sqrt(t1 * t2 * t3 * t4);
182 +    }
183 +      
184 +    Mat3x3d computeHydrodynamicTensor(RealType viscosity);
185 +
186 +
187    private:
188 +    Mat3x3d hydro_tensor(const Vector3d& ri, const Vector3d& rj0, const Vector3d& rj1, const Vector3d& rj2,RealType s, RealType viscosity);
189 +    
190      /* Local Indentity of vertex atoms in pos array*/
191      std::vector <StuntDouble*> vertexSD_;
192      Vector3d normal_;
193      Vector3d centroid_;
194 +    Vector3d vertices_[3];
195      RealType area_;
196 +    RealType mass_;
197 +    Vector3d facetVelocity_;
198 +    //Length of triangle sides
199 +    Vector3d a_,b_,c_;
200 +    RealType alpha_,beta_,gamma_;
201 +    bool HaveArea_;
202 +    bool HaveNormal_;
203 +    bool HaveCentroid_;
204      
205    }; // End class Triangle
206      

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines