--- trunk/OOPSE/libmdtools/Integrator.hpp 2003/07/14 21:28:54 597 +++ trunk/OOPSE/libmdtools/Integrator.hpp 2003/07/22 19:54:52 645 @@ -2,6 +2,7 @@ #define _INTEGRATOR_H_ #include "Atom.hpp" +#include "Molecule.hpp" #include "SRI.hpp" #include "AbstractClasses.hpp" #include "SimInfo.hpp" @@ -15,8 +16,9 @@ class Integrator : public BaseIntegrator { const int maxIteration = 300; const double tol = 1.0e-6; -class Integrator : public BaseIntegrator { +template class Integrator : public T { + public: Integrator( SimInfo *theInfo, ForceFields* the_ff ); virtual ~Integrator(); @@ -35,7 +37,7 @@ class Integrator : public BaseIntegrator { (protected) void checkConstraints( void ); void rotate( int axes1, int axes2, double angle, double j[3], - double A[9] ); + double A[3][3] ); ForceFields* myFF; @@ -63,31 +65,25 @@ class Integrator : public BaseIntegrator { (protected) double dt; double dt2; - double* pos; - double* vel; - double* frc; - double* trq; - double* Amat; - Thermo *tStats; StatWriter* statOut; DumpWriter* dumpOut; }; -class NVE : public Integrator{ +typedef Integrator RealIntegrator; +template class NVE : public T { + public: NVE ( SimInfo *theInfo, ForceFields* the_ff ): - Integrator( theInfo, the_ff ){} - virtual ~NVE(){} - - - + T( theInfo, the_ff ){} + virtual ~NVE(){} }; -class NVT : public Integrator{ +template class NVT : public T { + public: NVT ( SimInfo *theInfo, ForceFields* the_ff); @@ -117,8 +113,9 @@ class NPTi : public Integrator{ }; -class NPTi : public Integrator{ +template class NPTi : public T{ + public: NPTi ( SimInfo *theInfo, ForceFields* the_ff); @@ -126,7 +123,7 @@ class NPTi : public Integrator{ (public) virtual void integrateStep( int calcPot, int calcStress ){ calcStress = 1; - Integrator::integrateStep( calcPot, calcStress ); + T::integrateStep( calcPot, calcStress ); } void setTauThermostat(double tt) {tauThermostat = tt; have_tau_thermostat=1;} @@ -160,7 +157,7 @@ class NPTim : public Integrator{ }; -class NPTim : public Integrator{ +template class NPTim : public T{ public: @@ -169,7 +166,7 @@ class NPTim : public Integrator{ (public) virtual void integrateStep( int calcPot, int calcStress ){ calcStress = 1; - Integrator::integrateStep( calcPot, calcStress ); + T::integrateStep( calcPot, calcStress ); } void setTauThermostat(double tt) {tauThermostat = tt; have_tau_thermostat=1;} @@ -179,11 +176,14 @@ class NPTim : public Integrator{ (public) protected: - virtual void moveA( void ); + virtual void moveA( void ); virtual void moveB( void ); virtual int readyCheck(); + Molecule* myMolecules; + Atom** myAtoms; + // chi and eta are the propagated degrees of freedom double chi; @@ -203,7 +203,7 @@ class NPTf : public Integrator{ }; -class NPTf : public Integrator{ +template class NPTf : public T{ public: @@ -212,7 +212,7 @@ class NPTf : public Integrator{ (public) virtual void integrateStep( int calcPot, int calcStress ){ calcStress = 1; - Integrator::integrateStep( calcPot, calcStress ); + T::integrateStep( calcPot, calcStress ); } void setTauThermostat(double tt) {tauThermostat = tt; have_tau_thermostat=1;} @@ -246,7 +246,7 @@ class NPTfm : public Integrator{ }; -class NPTfm : public Integrator{ +template class NPTfm : public T{ public: @@ -255,7 +255,7 @@ class NPTfm : public Integrator{ (public) virtual void integrateStep( int calcPot, int calcStress ){ calcStress = 1; - Integrator::integrateStep( calcPot, calcStress ); + T::integrateStep( calcPot, calcStress ); } void setTauThermostat(double tt) {tauThermostat = tt; have_tau_thermostat=1;} @@ -270,6 +270,9 @@ class NPTfm : public Integrator{ (public) virtual int readyCheck(); + Molecule* myMolecules; + Atom** myAtoms; + // chi and eta are the propagated degrees of freedom double chi;