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

Comparing trunk/OOPSE-4/src/hydrodynamics/Ellipsoid.cpp (file contents):
Revision 2758 by gezelter, Tue May 16 02:06:37 2006 UTC vs.
Revision 2759 by tim, Wed May 17 21:51:42 2006 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 >  HydroProps Ellipsoid::getHydroProps(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;
# Line 109 | Line 109 | namespace oopse {
109      props.Xi(4,4) = rotMajor;
110      props.Xi(5,5) = rotMinor;
111      
112 <    const double convertConstant = 6.023; //convert poise.angstrom to amu/fs
112 >    const RealType convertConstant = 6.023; //convert poise.angstrom to amu/fs
113      props.Xi *= convertConstant;    
114      
115      Mat6x6d XiCopy = props.Xi;
116      invertMatrix(XiCopy, props.D);
117 <    double kt = OOPSEConstant::kB * temperature;
117 >    RealType kt = OOPSEConstant::kB * temperature;
118      props.D *= kt;
119      props.Xi *= OOPSEConstant::kb * temperature;
120    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines