ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/math/Triangle.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/math/Triangle.cpp (file contents):
Revision 3482 by chuckv, Fri Dec 5 16:20:39 2008 UTC vs.
Revision 3504 by gezelter, Wed May 13 22:27:29 2009 UTC

# Line 44 | Line 44
44   *
45   *  Created by Charles F. Vardeman II on 29 July 2008.
46   *  @author  Charles F. Vardeman II
47 < *  @version $Id: Triangle.cpp,v 1.2 2008-12-05 16:20:38 chuckv Exp $
47 > *  @version $Id: Triangle.cpp,v 1.3 2009-05-13 22:27:29 gezelter Exp $
48   *
49   */
50  
# Line 53 | Line 53 | Triangle::Triangle() : HaveNormal_(false), HaveCentroi
53   using namespace oopse;
54  
55  
56 < Triangle::Triangle() : HaveNormal_(false), HaveCentroid_(false),HaveArea_(false), area_(0.0), normal_(V3Zero),
57 <                       centroid_(V3Zero),facetVelocity_(V3Zero), mass_(0.0),
58 <                       a_(V3Zero),b_(V3Zero),c_(V3Zero){
56 > Triangle::Triangle() : HaveNormal_(false), HaveCentroid_(false),
57 >                       HaveArea_(false), area_(0.0), normal_(V3Zero),
58 >                       centroid_(V3Zero), facetVelocity_(V3Zero), mass_(0.0),
59 >                       a_(V3Zero), b_(V3Zero), c_(V3Zero){
60   }
61  
62   void Triangle::addVertices(Vector3d P1, Vector3d P2, Vector3d P3){
# Line 87 | Line 88 | Vector3d Triangle::computeCentroid(){
88    centroid_ = (vertices_[0] + vertices_[1] + vertices_[2])/3.0;
89    return centroid_;
90   }
91 +
92 +
93 + Mat3x3d Triangle::computeHydrodynamicTensor(RealType viscosity) {
94 +  
95 +  Vector3d u0 = -a_;
96 +  Vector3d v0 = centroid_ - vertices_[0];
97 +  RealType s0 = 0.5*cross(u0,v0).length();
98 +  
99 +  Vector3d u1 = -c_;
100 +  Vector3d v1 = centroid_ - vertices_[1];
101 +  RealType s1 = 0.5*cross(u1,v1).length();
102 +  
103 +  Vector3d u2 = b_;
104 +  Vector3d v2 = centroid_ - vertices_[2];
105 +  RealType s2 = 0.5*cross(u2,v2).length();
106 +  
107 +  Mat3x3d H;
108 +  H = hydro_tensor(centroid_,centroid_,vertices_[1],vertices_[0],s0,viscosity)+
109 +    hydro_tensor(centroid_,centroid_,vertices_[1],vertices_[2],s1,viscosity)+
110 +    hydro_tensor(centroid_,centroid_,vertices_[2],vertices_[0],s2,viscosity);
111 +
112 +  return H.inverse();
113 + }
114 +
115 + Mat3x3d Triangle::hydro_tensor(
116 +                               const Vector3d& ri,
117 +                               const Vector3d& rj0,
118 +                               const Vector3d& rj1,
119 +                               const Vector3d& rj2,
120 +                               RealType s, RealType viscosity){
121 +  
122 +  Vector3d v2 = (rj0 + rj1 + rj2)/3.0;  // sub-centroid
123 +  Vector3d dr = ri - v2;                // real centroid to sub-centroid
124 +  RealType l2 = 1.0/dr.lengthSquare();  
125 +
126 +  Mat3x3d G;
127 +  G = (SquareMatrix3<RealType>::identity() + outProduct(dr,dr)*l2)*sqrt(l2);
128 +
129 +  G *= 0.125/3.14159285358979;
130 +  G *= s/viscosity;
131 +  return G;
132 + }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines