ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/hydrodynamics/Ellipsoid.cpp
(Generate patch)

Comparing trunk/src/hydrodynamics/Ellipsoid.cpp (file contents):
Revision 956 by gezelter, Tue May 16 02:06:37 2006 UTC vs.
Revision 1129 by chrisfen, Fri Apr 20 18:15:48 2007 UTC

# Line 45 | Line 45 | namespace oopse {
45  
46   namespace oopse {
47    
48 <  Ellipsoid::Ellipsoid(Vector3d origin, double rMajor, double rMinor,Mat3x3d rotMat)
48 >  Ellipsoid::Ellipsoid(Vector3d origin, RealType rMajor, RealType rMinor,Mat3x3d rotMat)
49      : origin_(origin), rMajor_(rMajor), rMinor_(rMinor), rotMat_(rotMat) {
50      
51    }
52    bool Ellipsoid::isInterior(Vector3d pos) {
53      Vector3d r = pos - origin_;
54      Vector3d rbody = rotMat_ * r;
55 <    double xovera = rbody[0]/rMajor_;
56 <    double yovera = rbody[1]/rMajor_;
57 <    double zoverb = rbody[2]/rMinor_;
55 >    RealType xovera = rbody[0]/rMajor_;
56 >    RealType yovera = rbody[1]/rMajor_;
57 >    RealType zoverb = rbody[2]/rMinor_;
58      
59      bool result;
60      if (xovera*xovera + yovera*yovera + zoverb*zoverb < 1)
# Line 69 | Line 69 | namespace oopse {
69      
70      std::pair<Vector3d, Vector3d>  boundary;
71      //make a cubic box
72 <    double rad  = rMajor_ > rMinor_ ? rMajor_ : rMinor_;
72 >    RealType rad  = rMajor_ > rMinor_ ? rMajor_ : rMinor_;
73      Vector3d r(rad, rad, rad);
74      boundary.first = origin_ - r;
75      boundary.second = origin_ + r;
76      return boundary;
77    }
78    
79 <  HydroProps Ellipsoid::getHydroProps(double viscosity, double temperature) {
79 >  HydroProp* Ellipsoid::getHydroProp(RealType viscosity, RealType temperature) {
80      
81 <    double a = rMinor_;
82 <    double b = rMajor_;
83 <    double a2 = a * a;
84 <    double b2 = b* b;
81 >    RealType a = rMinor_;
82 >    RealType b = rMajor_;
83 >    RealType a2 = a * a;
84 >    RealType b2 = b* b;
85      
86 <    double p = a /b;
87 <    double S;
86 >    RealType p = a /b;
87 >    RealType S;
88      if (p > 1.0) { //prolate
89        S = 2.0/sqrt(a2 - b2) * log((a + sqrt(a2-b2))/b);
90      } else { //oblate
91        S = 2.0/sqrt(b2 - a2) * atan(sqrt(b2-a2)/a);
92      }
93      
94 <    double P = 1.0/(a2 - b2) * (S - 2.0/a);
95 <    double Q = 0.5/(a2-b2) * (2.0*a/b2 - S);
94 >    //RealType P = 1.0/(a2 - b2) * (S - 2.0/a);
95 >    //RealType Q = 0.5/(a2-b2) * (2.0*a/b2 - S);
96      
97 <    double transMinor = 16.0 * NumericConstant::PI * viscosity * (a2 - b2) /((2.0*a2-b2)*S -2.0*a);
98 <    double transMajor = 32.0 * NumericConstant::PI * viscosity * (a2 - b2) /((2.0*a2-3.0*b2)*S +2.0*a);
99 <    double rotMinor = 32.0/3.0 * NumericConstant::PI * viscosity *(a2 - b2) * b2 /(2.0*a -b2*S);
100 <    double rotMajor = 32.0/3.0 * NumericConstant::PI * viscosity *(a2*a2 - b2*b2)/((2.0*a2-b2)*S-2.0*a);
97 >    RealType transMinor = 16.0 * NumericConstant::PI * viscosity * (a2 - b2) /((2.0*a2-b2)*S -2.0*a);
98 >    RealType transMajor = 32.0 * NumericConstant::PI * viscosity * (a2 - b2) /((2.0*a2-3.0*b2)*S +2.0*a);
99 >    RealType rotMinor = 32.0/3.0 * NumericConstant::PI * viscosity *(a2 - b2) * b2 /(2.0*a -b2*S);
100 >    RealType rotMajor = 32.0/3.0 * NumericConstant::PI * viscosity *(a2*a2 - b2*b2)/((2.0*a2-b2)*S-2.0*a);
101      
102      
103 <    HydroProps props;
103 >    Mat6x6d Xi, XiCopy, D;
104      
105 <    props.Xi(0,0) = transMajor;
106 <    props.Xi(1,1) = transMajor;
107 <    props.Xi(2,2) = transMinor;
108 <    props.Xi(3,3) = rotMajor;
109 <    props.Xi(4,4) = rotMajor;
110 <    props.Xi(5,5) = rotMinor;
105 >    Xi(0,0) = transMajor;
106 >    Xi(1,1) = transMajor;
107 >    Xi(2,2) = transMinor;
108 >    Xi(3,3) = rotMajor;
109 >    Xi(4,4) = rotMajor;
110 >    Xi(5,5) = rotMinor;
111      
112 <    const double convertConstant = 6.023; //convert poise.angstrom to amu/fs
113 <    props.Xi *= convertConstant;    
112 >    const RealType convertConstant = 6.023; //convert poise.angstrom to amu/fs
113 >    Xi *= convertConstant;    
114      
115 <    Mat6x6d XiCopy = props.Xi;
116 <    invertMatrix(XiCopy, props.D);
117 <    double kt = OOPSEConstant::kB * temperature;
118 <    props.D *= kt;
119 <    props.Xi *= OOPSEConstant::kb * temperature;
115 >    XiCopy = Xi;
116 >    invertMatrix(XiCopy, D);
117 >    RealType kt = OOPSEConstant::kB * temperature;
118 >    D *= kt;
119 >    Xi *= OOPSEConstant::kb * temperature;
120    
121 <    return props;
121 >    HydroProp* hprop = new HydroProp(V3Zero, Xi, D);
122  
123 +    return hprop;
124 +
125    }  
126   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines