ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/mdtools/headers/Atom.hpp
(Generate patch)

Comparing trunk/mdtools/headers/Atom.hpp (file contents):
Revision 143 by mmeineke, Thu Oct 17 21:58:55 2002 UTC vs.
Revision 225 by mmeineke, Wed Jan 8 21:54:20 2003 UTC

# Line 12 | Line 12 | class Atom{ (public)
12      is_VDW = 0;
13      is_LJ = 0;
14      index = theIndex;
15 +    offset = 3 * index;
16 +    offsetX = offset;
17 +    offsetY = offset+1;
18 +    offsetZ = offset+2;
19    }
20    virtual ~Atom() {}
21  
# Line 28 | Line 32 | class Atom{ (public)
32      delete[] trq;
33    }
34    
35 <  double getX() const {return pos[3*index];}
36 <  double getY() const {return pos[3*index+1];}
37 <  double getZ() const {return pos[3*index+2];}
38 <  void setX(double x) {pos[3*index]   = x;}
39 <  void setY(double y) {pos[3*index+1] = y;}
40 <  void setZ(double z) {pos[3*index+2] = z;}
35 >  double getX() const {return pos[offsetX];}
36 >  double getY() const {return pos[offsetY];}
37 >  double getZ() const {return pos[offsetZ];}
38 >  void setX(double x) {pos[offsetX]   = x;}
39 >  void setY(double y) {pos[offsetY] = y;}
40 >  void setZ(double z) {pos[offsetZ] = z;}
41    
42 <  double get_vx() const  {return vel[3*index];}
43 <  double get_vy() const  {return vel[3*index+1];}
44 <  double get_vz() const  {return vel[3*index+2];}
45 <  void set_vx(double vx) {vel[3*index]   = vx;}
46 <  void set_vy(double vy) {vel[3*index+1] = vy;}
47 <  void set_vz(double vz) {vel[3*index+2] = vz;}
42 >  double get_vx() const  {return vel[offsetX];}
43 >  double get_vy() const  {return vel[offsetY];}
44 >  double get_vz() const  {return vel[offsetZ];}
45 >  void set_vx(double vx) {vel[offsetX]   = vx;}
46 >  void set_vy(double vy) {vel[offsetY] = vy;}
47 >  void set_vz(double vz) {vel[offsetZ] = vz;}
48    
49 <  double getFx() const   {return frc[3*index];}
50 <  double getFy() const   {return frc[3*index+1];}
51 <  double getFz() const   {return frc[3*index+2];}
52 <  void addFx(double add) {frc[3*index]   += add;}
53 <  void addFy(double add) {frc[3*index+1] += add;}
54 <  void addFz(double add) {frc[3*index+2] += add;}
49 >  double getFx() const   {return frc[offsetX];}
50 >  double getFy() const   {return frc[offsetY];}
51 >  double getFz() const   {return frc[offsetZ];}
52 >  void addFx(double add) {frc[offsetX]   += add;}
53 >  void addFy(double add) {frc[offsetY] += add;}
54 >  void addFz(double add) {frc[offsetZ] += add;}
55    virtual void zeroForces() = 0;
56  
57    double getMass() const {return c_mass;}
# Line 63 | Line 67 | class Atom{ (public)
67    void setCovalent(double covalent) {c_covalent = covalent;}
68    
69    int getIndex() const {return index;}
70 <  void setIndex(int theIndex) {index = theIndex;}
71 <  
70 >  void setIndex(int theIndex) {
71 >    index = theIndex;
72 >    offset = index*3;
73 >    offsetX = offset;
74 >    offsetY = offset+1;
75 >    offsetZ = offset+2;
76 >  }
77 >
78    char *getType() {return c_name;}
79    void setType(char * name) {strcpy(c_name,name);}
80 +  
81 +  int getIdent( void ) { return ident; }
82 +  void setIdent( int info ) { ident = info; }
83  
84    void set_n_hydrogens( int n_h ) {c_n_hyd = n_h;}
85    int get_n_hydrogens() const {return c_n_hyd;}
# Line 82 | Line 95 | class Atom{ (public)
95  
96    virtual int isDirectional( void ) = 0;
97  
85 protected:
86  
98    static double* pos; // the position array
99    static double* vel; // the velocity array
100    static double* frc; // the forc array
101    static double* trq; // the torque vector  ( space fixed )
102  
103 + protected:
104 +  
105    double c_mass; /* the mass of the atom in amu */
106    double c_sigma; /* the sigma parameter for van der walls interactions */
107    double c_epslon; /* the esplon parameter for VDW interactions */
108    double c_covalent; // The covalent radius of the atom.
109  
110    int index; /* set the atom's index */
111 +  int offset; // the atom's offset in the storage array
112 +  int offsetX, offsetY, offsetZ;
113  
114    char c_name[100]; /* it's name */
115 +  int ident;  // it's unique numeric identity.
116  
117    int c_n_hyd; // the number of hydrogens bonded to the atom
118    
# Line 106 | Line 122 | class Atom{ (public)
122    
123   };
124  
125 +
126 +
127   class GeneralAtom : public Atom{
128  
129   public:
# Line 114 | Line 132 | class GeneralAtom : public Atom{ (public)
132  
133    int isDirectional( void ){ return 0; }
134    void zeroForces() {
135 <    frc[3*index]   = 0.0;
136 <    frc[3*index+1] = 0.0;
137 <    frc[3*index+2] = 0.0;
135 >    frc[offsetX]   = 0.0;
136 >    frc[offsetY] = 0.0;
137 >    frc[offsetZ] = 0.0;
138    }
139   };
140  
# Line 157 | Line 175 | class DirectionalAtom : public Atom { (public)
175    void setJy( double the_jy ) { jy = the_jy; }
176    void setJz( double the_jz ) { jz = the_jz; }
177      
178 <  void addTx( double the_tx ) { trq[3*index]   += the_tx;}
179 <  void addTy( double the_ty ) { trq[3*index+1] += the_ty;}
180 <  void addTz( double the_tz ) { trq[3*index+2] += the_tz;}
178 >  void addTx( double the_tx ) { trq[offsetX]   += the_tx;}
179 >  void addTy( double the_ty ) { trq[offsetY] += the_ty;}
180 >  void addTz( double the_tz ) { trq[offsetZ] += the_tz;}
181  
182    void setMu( double the_mu ) { mu = the_mu; }
183  
184    void zeroForces() {
185 <    frc[3*index]   = 0.0;
186 <    frc[3*index+1] = 0.0;
187 <    frc[3*index+2] = 0.0;
185 >    frc[offsetX]   = 0.0;
186 >    frc[offsetY] = 0.0;
187 >    frc[offsetZ] = 0.0;
188  
189 <    trq[3*index]   = 0.0;
190 <    trq[3*index+1] = 0.0;
191 <    trq[3*index+2] = 0.0;
189 >    trq[offsetX]   = 0.0;
190 >    trq[offsetY] = 0.0;
191 >    trq[offsetZ] = 0.0;
192    }
193  
194    double getAxx( void ) { return Axx; }
# Line 198 | Line 216 | class DirectionalAtom : public Atom { (public)
216    double getJy( void ) { return jy; }
217    double getJz( void ) { return jz; }
218  
219 <  double getTx( void ) { return trq[3*index];}
220 <  double getTy( void ) { return trq[3*index+1]; }
221 <  double getTz( void ) { return trq[3*index+2]; }
219 >  double getTx( void ) { return trq[offsetX];}
220 >  double getTy( void ) { return trq[offsetY]; }
221 >  double getTz( void ) { return trq[offsetZ]; }
222  
223    double getIxx( void ) { return Ixx; }
224    double getIxy( void ) { return Ixy; }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines