00001
00002
00003
00004
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 };
00167
00168 }
00169
00170 #endif // BALL_MOLMEC_MDSIMULATION_CANONICALMD_H