--- trunk/OOPSE/libmdtools/Integrator.hpp 2004/07/16 16:29:44 1330 +++ trunk/OOPSE/libmdtools/Integrator.hpp 2004/08/23 15:11:36 1452 @@ -14,6 +14,8 @@ #include "ReadWrite.hpp" #include "ZConsWriter.hpp" #include "Restraints.hpp" +#include "Quaternion.hpp" +#include "Mat4x4d.hpp" using namespace std; const double kB = 8.31451e-7;// boltzmann constant amu*Ang^2*fs^-2/K @@ -54,6 +56,9 @@ template class Integrator //void checkConstraints( void ); void rotate( int axes1, int axes2, double angle, double j[3], double A[3][3] ); + + void printQuaternion(StuntDouble* sd); + Mat4x4d getS(const Quaternion& q); ForceFields* myFF; @@ -501,11 +506,20 @@ template class SQSIntegrator : public T{ //116(20), 8649, J. Chem. Phys. (2002) template class SQSIntegrator : public T{ public: + SQSIntegrator( SimInfo *theInfo, ForceFields* the_ff ); virtual void moveA(); virtual void moveB(); protected: - void freeRotor(); - void rotate(int k, double dt); - + void freeRotor(double dt, Quaternion& q, Vector4d& qdot, Vector3d& I); + void rotate(int k, double dt, Quaternion& q, Vector4d& qdot, double Ik); + private: + Quaternion getPk(int i, const Vector4d& q); + Mat4x4d getS(const Quaternion& q); + vector q; + vector p_qua; + vector I0; + + Vector4d p2j(const Vector4d& p, Mat4x4d& m); + Vector4d j2p(const Vector4d& j, Mat4x4d& m); }; #endif