# | Line 12 | Line 12 | Molecule::Molecule( void ){ | |
---|---|---|
12 | myBonds = NULL; | |
13 | myBends = NULL; | |
14 | myTorsions = NULL; | |
15 | + | myRigidBodies = NULL; |
16 | ||
17 | } | |
18 | ||
# | Line 40 | Line 41 | Molecule::~Molecule( void ){ | |
41 | delete[] myTorsions; | |
42 | } | |
43 | ||
44 | < | if( myExcludes != NULL ){ |
45 | < | for(i=0; i<nExcludes; i++) if(myExcludes[i] != NULL ) delete myExcludes[i]; |
46 | < | delete[] myExcludes; |
44 | > | if( myRigidBodies != NULL ){ |
45 | > | for(i=0; i<nRigidBodies; i++) if(myRigidBodies[i] != NULL ) |
46 | > | delete myRigidBodies[i]; |
47 | > | delete[] myRigidBodies; |
48 | } | |
49 | + | |
50 | } | |
51 | ||
52 | ||
# | Line 54 | Line 57 | void Molecule::initialize( molInit &theInit ){ | |
57 | nBonds = theInit.nBonds; | |
58 | nBends = theInit.nBends; | |
59 | nTorsions = theInit.nTorsions; | |
60 | < | nExcludes = theInit.nExcludes; |
60 | > | nRigidBodies = theInit.nRigidBodies; |
61 | nOriented = theInit.nOriented; | |
62 | ||
63 | myAtoms = theInit.myAtoms; | |
64 | myBonds = theInit.myBonds; | |
65 | myBends = theInit.myBends; | |
66 | myTorsions = theInit.myTorsions; | |
67 | < | myExcludes = theInit.myExcludes; |
67 | > | myRigidBodies = theInit.myRigidBodies; |
68 | ||
69 | } | |
70 | ||
# | Line 69 | Line 72 | void Molecule::calcForces( void ){ | |
72 | ||
73 | int i; | |
74 | ||
75 | + | for(i=0; i<nRigidBodies; i++) { |
76 | + | myRigidBodies[i]->updateAtoms(); |
77 | + | } |
78 | + | |
79 | for(i=0; i<nBonds; i++){ | |
80 | myBonds[i]->calc_forces(); | |
81 | } | |
# | Line 80 | Line 87 | void Molecule::calcForces( void ){ | |
87 | for(i=0; i<nTorsions; i++){ | |
88 | myTorsions[i]->calc_forces(); | |
89 | } | |
90 | + | |
91 | + | // Rigid Body forces and torques are done after the fortran force loop |
92 | + | |
93 | } | |
94 | ||
95 | ||
# | Line 118 | Line 128 | void Molecule::printMe( void ){ | |
128 | for(i=0; i<nTorsions; i++){ | |
129 | myTorsions[i]->printMe(); | |
130 | } | |
131 | + | |
132 | } | |
133 | ||
134 | void Molecule::moveCOM(double delta[3]){ | |
# | Line 135 | Line 146 | void Molecule::moveCOM(double delta[3]){ | |
146 | myAtoms[i]->setPos( aPos ); | |
147 | } | |
148 | } | |
149 | + | |
150 | + | for(i=0; i<nRigidBodies; i++) { |
151 | + | |
152 | + | if (myRigidBodies[i] != NULL) { |
153 | + | |
154 | + | myRigidBodies[i]->getPos( aPos ); |
155 | + | |
156 | + | for (j=0; j< 3; j++) |
157 | + | aPos[j] += delta[j]; |
158 | + | |
159 | + | myRigidBodies[i]->setPos( aPos ); |
160 | + | } |
161 | + | } |
162 | } | |
163 | ||
164 | + | void Molecule::atoms2rigidBodies( void ) { |
165 | + | int i; |
166 | + | for (i = 0; i < nRigidBodies; i++) { |
167 | + | if (myRigidBodies[i] != NULL) { |
168 | + | myRigidBodies[i]->calcForcesAndTorques(); |
169 | + | } |
170 | + | } |
171 | + | } |
172 | + | |
173 | void Molecule::getCOM( double COM[3] ) { | |
174 | ||
175 | double mass, mtot; |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |