ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/src/primitives/RigidBody.cpp
(Generate patch)

Comparing trunk/OOPSE-3.0/src/primitives/RigidBody.cpp (file contents):
Revision 2340 by tim, Mon Oct 3 14:31:31 2005 UTC vs.
Revision 2341 by tim, Mon Oct 3 15:54:23 2005 UTC

# Line 164 | Line 164 | namespace oopse {
164      }
165  
166      // Moment of Inertia calculation
167 <    Mat3x3d Itmp(0.0);
168 <  
167 >    Mat3x3d Itmp(0.0);    
168      for (std::size_t i = 0; i < atoms_.size(); i++) {
169 +      Mat3x3d IAtom(0.0);  
170        mtmp = atoms_[i]->getMass();
171 <      Itmp -= outProduct(refCoords_[i], refCoords_[i]) * mtmp;
171 >      IAtom -= outProduct(refCoords_[i], refCoords_[i]) * mtmp;
172        double r2 = refCoords_[i].lengthSquare();
173 <      Itmp(0, 0) += mtmp * r2;
174 <      Itmp(1, 1) += mtmp * r2;
175 <      Itmp(2, 2) += mtmp * r2;
176 <    }
173 >      IAtom(0, 0) += mtmp * r2;
174 >      IAtom(1, 1) += mtmp * r2;
175 >      IAtom(2, 2) += mtmp * r2;
176  
177 <    //project the inertial moment of directional atoms into this rigid body
179 <    for (std::size_t i = 0; i < atoms_.size(); i++) {
177 >      //project the inertial moment of directional atoms into this rigid body
178        if (atoms_[i]->isDirectional()) {
179 <            Itmp += refOrients_[i].transpose() * atoms_[i]->getI() * refOrients_[i];
179 >        IAtom += atoms_[i]->getI();
180 >        Itmp += refOrients_[i].transpose() * IAtom * refOrients_[i];
181 >      } else {
182 >        Itmp += IAtom;
183        }
184      }
185  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines