--- trunk/OOPSE/libmdtools/Integrator.hpp 2003/09/05 21:28:52 747 +++ trunk/OOPSE/libmdtools/Integrator.hpp 2003/09/09 20:35:25 755 @@ -175,7 +175,55 @@ template class NPTim : public T{ (public) NPTim ( SimInfo *theInfo, ForceFields* the_ff); virtual ~NPTim() {}; + + virtual void integrateStep( int calcPot, int calcStress ){ + calcStress = 1; + T::integrateStep( calcPot, calcStress ); + } + + void setTauThermostat(double tt) {tauThermostat = tt; have_tau_thermostat=1;} + void setTauBarostat(double tb) {tauBarostat = tb; have_tau_barostat=1;} + void setTargetTemp(double tt) {targetTemp = tt; have_target_temp = 1;} + void setTargetPressure(double tp) {targetPressure = tp; have_target_pressure = 1;} + +protected: + + virtual void moveA( void ); + virtual void moveB( void ); + + virtual int readyCheck(); + + virtual void resetIntegrator( void ); + + Molecule* myMolecules; + Atom** myAtoms; + + // chi and eta are the propagated degrees of freedom + + double chi; + double eta; + double NkBT; + // targetTemp, targetPressure, and tauBarostat must be set. + // One of qmass or tauThermostat must be set; + + double targetTemp; + double targetPressure; + double tauThermostat; + double tauBarostat; + + short int have_tau_thermostat, have_tau_barostat, have_target_temp; + short int have_target_pressure; + +}; + +template class NPTzm : public T{ + +public: + + NPTzm ( SimInfo *theInfo, ForceFields* the_ff); + virtual ~NPTzm() {}; + virtual void integrateStep( int calcPot, int calcStress ){ calcStress = 1; T::integrateStep( calcPot, calcStress ); @@ -202,6 +250,7 @@ template class NPTim : public T{ (public) double chi; double eta; + double etaZ; double NkBT; // targetTemp, targetPressure, and tauBarostat must be set. @@ -247,6 +296,56 @@ template class NPTf : public T{ (protected double chi; double eta[3][3]; + double NkBT; + + // targetTemp, targetPressure, and tauBarostat must be set. + // One of qmass or tauThermostat must be set; + + double targetTemp; + double targetPressure; + double tauThermostat; + double tauBarostat; + + short int have_tau_thermostat, have_tau_barostat, have_target_temp; + short int have_target_pressure; + +}; + +template class NPTxym : public T{ + +public: + + NPTxym ( SimInfo *theInfo, ForceFields* the_ff); + virtual ~NPTxym() {}; + + virtual void integrateStep( int calcPot, int calcStress ){ + calcStress = 1; + T::integrateStep( calcPot, calcStress ); + } + + void setTauThermostat(double tt) {tauThermostat = tt; have_tau_thermostat=1;} + void setTauBarostat(double tb) {tauBarostat = tb; have_tau_barostat=1;} + void setTargetTemp(double tt) {targetTemp = tt; have_target_temp = 1;} + void setTargetPressure(double tp) {targetPressure = tp; have_target_pressure = 1;} + +protected: + + virtual void moveA( void ); + virtual void moveB( void ); + + virtual int readyCheck(); + + virtual void resetIntegrator( void ); + + Molecule* myMolecules; + Atom** myAtoms; + + // chi and eta are the propagated degrees of freedom + + double chi; + double eta; + double etaX; + double etaY; double NkBT; // targetTemp, targetPressure, and tauBarostat must be set. @@ -262,6 +361,7 @@ template class NPTfm : public T{ }; + template class NPTfm : public T{ public: