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 int page_align_sz;
00047 float *pos;
00048 float *pos_ptr;
00049 float *vel;
00050 float *force;
00051 float *user;
00052 float *user2;
00053 float *user3;
00054 float *user4;
00055 QMTimestep *qm_timestep;
00056 float energy[TSENERGIES];
00057 int timesteps;
00058 double physical_time;
00059
00061 float a_length, b_length, c_length, alpha, beta, gamma;
00062
00064 void get_transform_vectors(float v1[3], float v2[3], float v3[3]) const;
00065
00067 void get_transforms(Matrix4 &a, Matrix4 &b, Matrix4 &c) const;
00068
00071 void get_transform_from_cell(const int *cell, Matrix4 &trans) const;
00072
00073 Timestep(int n, int pagealignsz=1);
00074 Timestep(const Timestep& ts);
00075 ~Timestep(void);
00076
00077 void zero_values();
00078 };
00079
00080 #endif
00081