00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_MOLMEC_MDSIMULATION_MICROCANONICALMD_H
00008 #define BALL_MOLMEC_MDSIMULATION_MICROCANONICALMD_H
00009
00010 #ifndef BALL_MOLMEC_MDSIMULATION_MOLECULARDYNAMICS_H
00011 # include <BALL/MOLMEC/MDSIMULATION/molecularDynamics.h>
00012 #endif
00013
00014 namespace BALL
00015 {
00024 class BALL_EXPORT MicroCanonicalMD : public MolecularDynamics
00025 {
00026
00027 public:
00028
00031 struct AuxFactors
00032 {
00033 double factor1,factor2;
00034 };
00035
00039
00040 BALL_CREATE(MicroCanonicalMD)
00041
00042
00044 MicroCanonicalMD();
00045
00049 MicroCanonicalMD(ForceField &myforcefield);
00050
00054 MicroCanonicalMD(ForceField &myforcefield, SnapShotManager *ssm);
00055
00059 MicroCanonicalMD(ForceField &myforcefield, SnapShotManager *ssm,
00060 const Options &myoptions);
00061
00063 MicroCanonicalMD(const MicroCanonicalMD& rhs);
00064
00066 virtual ~MicroCanonicalMD();
00067
00069
00072
00074 MicroCanonicalMD &operator=(const MicroCanonicalMD &rhs);
00075
00077
00080
00083 virtual bool setup(ForceField &myforcefield, SnapShotManager *ssm);
00084
00087 virtual bool setup(ForceField &myforcefield, SnapShotManager *ssm,
00088 const Options &myoptions);
00089
00093 virtual bool specificSetup();
00094
00096
00099
00102 virtual void setTimeStep(double step);
00103
00109 virtual bool simulateIterations(Size number, bool restart = false);
00110
00112
00113 protected:
00114
00115
00116
00117
00118
00119
00120
00121
00122 void calculateFactors();
00123
00124
00125
00126
00127
00128
00129
00130
00131 vector<AuxFactors> mass_factor_;
00132
00133
00134
00135 };
00136 }
00137
00138 #endif // BALL_MOLMEC_MDSIMULATION_MICROCANONICALMD_H