--- trunk/OOPSE/libmdtools/Roll.hpp 2004/06/09 16:16:33 1254 +++ trunk/OOPSE/libmdtools/Roll.hpp 2004/06/11 17:16:21 1268 @@ -8,11 +8,15 @@ class DCRollAFunctor : public DCRattleAFunctor{ class DCRollAFunctor : public DCRattleAFunctor{ public: DCRollAFunctor(SimInfo* info) : DCRattleAFunctor(info) {} - //virtual int operator()(ConstraintAtom* consAtom1, ConstraintAtom* consAtom2); + virtual int operator()(ConstraintAtom* consAtom1, ConstraintAtom* consAtom2); //virtual int operator()(ConstraintAtom* consAtom,ConstraintRigidBody* consRB); virtual int operator()(ConstraintRigidBody* consRB1, ConstraintRigidBody* consRB2); private: - void getEffInvMassVec(ConstraintRigidBody* consRB, const Vector3d& bondDir, Vector3d& invMassVec); + + void calcZeta(ConstraintAtom* consAtom, const Vector3d& bondDir, Vector3d&zeta); + void integrate(ConstraintAtom* consAtom, const Vector3d& force); + + void calcZeta(ConstraintRigidBody* consRB, const Vector3d& bondDir, Vector3d& zeta); void integrate(ConstraintRigidBody* consRB, const Vector3d& force); void rotationPropagation(StuntDouble* sd, double ji[3]); void rotate(int axes1, int axes2, double angle, double ji[3], double A[3][3]); @@ -81,9 +85,9 @@ class RollFramework : public ConsAlgoFramework{ //////////////////////////////////////////////////////////////////////////////// //class RattleAlgorithm will encapsulate preConstraint, RattleA and RattleB //actually, we could use factory pattern to seperate the creation process -class RollFramework : public ConsAlgoFramework{ +class RollFramework : public VelVerletConsFramework{ public: - RollFramework(SimInfo* rhs) : ConsAlgoFramework(rhs){ + RollFramework(SimInfo* rhs) : VelVerletConsFramework(rhs){ raAlgo = new RollA(rhs); rbAlgo = new RollB(rhs); } @@ -93,13 +97,13 @@ class RollFramework : public ConsAlgoFramework{ delete rbAlgo; } - int doRollA(){ + virtual int doConstrainA(){ raAlgo->doConstrain(); return raAlgo->haveError()? -1 : 1; } - int doRollB(){ + virtual int doConstrainB(){ rbAlgo->doConstrain(); return rbAlgo->haveError()? -1 : 1;