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

Comparing trunk/OOPSE-4/src/applications/hydrodynamics/StuntDoubleShape.hpp (file contents):
Revision 2610 by tim, Thu Feb 23 23:16:43 2006 UTC vs.
Revision 2611 by tim, Mon Mar 13 22:42:40 2006 UTC

# Line 51 | Line 51 | class Shape {
51      public:
52          virtual bool isInterior(Vector3d pos) = 0;
53          virtual std::pair<Vector3d, Vector3d> getBox() = 0;
54 <
54 >        virtual bool hasAnalyticalSolution() = 0;
55 >        //virtual Mat3x3d getTranslationalFriction() = 0;
56 >        //virtual Mat3x3d getRotationalFriction() = 0 ;
57   };
58  
59   /** @class Spheric */
# Line 60 | Line 62 | class Spheric : public Shape {
62          Spheric(Vector3d origin, double radius);
63          virtual bool isInterior(Vector3d pos);
64          virtual std::pair<Vector3d, Vector3d> getBox();
65 +        virtual bool hasAnalyticalSolution() {return true;}
66 +        //virtual Mat3x3d getTranslationalFriction();
67 +        //virtual Mat3x3d getRotationalFriction();
68 +
69      private:
70          Vector3d origin_;
71          double radius_;
# Line 71 | Line 77 | class Ellipsoid : public Shape{
77          Ellipsoid(Vector3d origin, double radius, double ratio, Mat3x3d rotMat);
78          virtual bool isInterior(Vector3d pos);
79          virtual std::pair<Vector3d, Vector3d> getBox();
80 +        virtual bool hasAnalyticalSolution() {return true;}
81 +        //virtual Mat3x3d getTranslationalFriction() {
82 +        //    Mat3x3d Xirr;
83 +        //}
84 +        
85 +        //virtual Mat3x3d getFrictionCoff() {
86 +
87 +        //}
88 +
89       private:
90 +
91 +
92 +        /**
93 +         * calculate the ratio of friction coeffiction constant between ellipsoid and spheric
94 +         * with same volume.
95 +         * @param m
96 +         * @param n
97 +         * @note
98 +         * Reference:
99 +         *
100 +         * (1) Victor A. Bloomfield, On-Line Biophysics Textbook, Volume: Separations and Hydrodynamics
101 +         * Chapter 1,Survey of Biomolecular Hydrodynamics
102 +         * http://www.biophysics.org/education/vbloomfield.pdf
103 +         * (2) F. Perrin , J. Phys. Radium, [7] 5, 497-511, 1934
104 +         * (3) F. Perrin, J. Phys. Radium, [7] 7, 1-11, 1936
105 +         */
106 +        void calcFrictionRatio(double m, double n, double& Ft, double& Frm, double& Frn) {
107 +            double q = n/m;
108 +            if (q > 1.0) {//prolate
109 +                Ft = sqrt(1-q*q)/(pow(q, 2.0/3.0)*log((1 + sqrt(1-q*q))/q));
110 +                Frm = 4*(1-q*q)/(3*(2 - 2*pow(q, 4.0/3.0)/Ft)); //not sure
111 +                Frn = 4*(1-q*q*q*q) /(3*q*q*(2*pow(q, -2.0/3.0)*(2-q*q)/Ft-2));
112 +            } else {//oblate
113 +                Ft = sqrt(1-q*q)/(pow(q, 2.0/3.0)*atan(sqrt(q*q-1)));
114 +                Frm = 4*(1-q*q)/(3*(2 - 2*pow(q, 4.0/3.0)/Ft)); //not sure
115 +                Frn = 4*(1-q*q*q*q) /(3*q*q*(2*pow(q, -2.0/3.0)*(2-q*q)/Ft-2));
116 +            }
117 +        }
118          Vector3d origin_;
119          double a_;
120          double b_;
# Line 83 | Line 126 | class StuntDoubleShape {
126      public:
127          StuntDoubleShape(StuntDouble* sd);
128          ~StuntDoubleShape();
129 +        bool hasAnalyticalSolution();
130          std::pair<Vector3d, Vector3d> getBox();
131          bool isInterior(Vector3d pos);
132      private:
# Line 90 | Line 134 | class StuntDoubleShape {
134          std::vector<Shape*> shapes_;
135   };
136  
137 +
138 + class ShapeBuilder {
139 +    public:
140 +        
141 + };
142 +
143 +
144   }
145  
146   #endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines