00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef TIMESTEP_H
00026 #define TIMESTEP_H
00027
00028 #include "ResizeArray.h"
00029 #include "Matrix4.h"
00030 #include "QMTimestep.h"
00031
00032
00033
00034
00035
00036
00037 enum { TSE_BOND, TSE_ANGLE, TSE_DIHE, TSE_IMPR, TSE_VDW, TSE_COUL,
00038 TSE_HBOND, TSE_KE, TSE_PE, TSE_TEMP, TSE_TOTAL, TSE_VOLUME,
00039 TSE_PRESSURE, TSE_EFIELD, TSE_UREY_BRADLEY, TSE_RESTRAINT,
00040 TSENERGIES};
00041
00043 class Timestep {
00044 public:
00045 int num;
00046 float *pos;
00047 float *pos_ptr;
00048 float *vel;
00049 float *force;
00050 float *user;
00051 float *user2;
00052 float *user3;
00053 float *user4;
00054 QMTimestep *qm_timestep;
00055 float energy[TSENERGIES];
00056 int timesteps;
00057 double physical_time;
00058
00060 float a_length, b_length, c_length, alpha, beta, gamma;
00061
00063 void get_transform_vectors(float v1[3], float v2[3], float v3[3]) const;
00064
00066 void get_transforms(Matrix4 &a, Matrix4 &b, Matrix4 &c) const;
00067
00070 void get_transform_from_cell(const int *cell, Matrix4 &trans) const;
00071
00072 Timestep(int n);
00073 Timestep(const Timestep& ts);
00074 ~Timestep(void);
00075
00076 void zero_values();
00077 };
00078
00079 #endif
00080