00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: canonicalMD.h,v 1.27 2005/12/23 17:01:52 amoll Exp $ 00005 // 00006 00007 #ifndef BALL_MOLMEC_MDSIMULATION_CANONICALMD_H 00008 #define BALL_MOLMEC_MDSIMULATION_CANONICALMD_H 00009 00010 #ifndef BALL_MOLMEC_MDSIMULATION_MOLECULARDYNAMICS_H 00011 # include <BALL/MOLMEC/MDSIMULATION/molecularDynamics.h> 00012 #endif 00013 00014 namespace BALL 00015 { 00030 class BALL_EXPORT CanonicalMD 00031 : public MolecularDynamics 00032 { 00033 public: 00034 00035 BALL_CREATE(CanonicalMD) 00036 00037 00040 00041 00042 00043 CanonicalMD() ; 00044 00049 CanonicalMD(ForceField& myforcefield) ; 00050 00057 CanonicalMD(ForceField& force_field, SnapShotManager* ssm) ; 00058 00066 CanonicalMD(ForceField& myforcefield, SnapShotManager* ssm, 00067 const Options& options) ; 00068 00070 CanonicalMD(const CanonicalMD& rhs) ; 00071 00073 virtual ~CanonicalMD() ; 00075 00078 00080 CanonicalMD &operator = (const CanonicalMD& rhs) ; 00082 00086 00091 virtual bool setup(ForceField& force_field, SnapShotManager* ssm = 0) 00092 ; 00093 00097 virtual bool setup(ForceField& force_field, SnapShotManager* ssm, 00098 const Options& options) 00099 ; 00100 00104 virtual bool specificSetup() ; 00106 00110 00117 void setBathRelaxationTime(double time) ; 00118 00122 double getBathRelaxationTime() const ; 00123 00126 virtual void setTimeStep(double time) ; 00127 00135 virtual bool simulateIterations(Size number, bool restart = false) ; 00136 00138 00139 protected: 00140 00142 struct AuxFactors 00143 { 00144 double factor1; 00145 double factor2; 00146 }; 00147 00150 00153 void calculateFactors_() ; 00155 00158 00160 double bath_relaxation_time_; 00161 00163 std::vector<AuxFactors> mass_factor_; 00164 //_@} 00165 00166 }; //class CanonicalMD 00167 00168 } // namespace BALL 00169 00170 #endif // BALL_MOLMEC_MDSIMULATION_CANONICALMD_H