ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/primitives/RigidBody.cpp
(Generate patch)

Comparing branches/development/src/primitives/RigidBody.cpp (file contents):
Revision 1794 by gezelter, Thu Sep 6 19:44:06 2012 UTC vs.
Revision 1842 by gezelter, Tue Jan 29 19:10:04 2013 UTC

# Line 92 | Line 92 | namespace OpenMD {
92      Vector3d force;
93      Vector3d torque;
94      Vector3d myEuler;
95 <    RealType phi, theta, psi;
95 >    RealType phi, theta;
96 >    // RealType psi;
97      RealType cphi, sphi, ctheta, stheta;
98      Vector3d ephi;
99      Vector3d etheta;
# Line 104 | Line 105 | namespace OpenMD {
105      
106      phi = myEuler[0];
107      theta = myEuler[1];
108 <    psi = myEuler[2];
108 >    // psi = myEuler[2];
109      
110      cphi = cos(phi);
111      sphi = sin(phi);
# Line 225 | Line 226 | namespace OpenMD {
226      Vector3d apos;
227      Vector3d rpos;
228      Vector3d frc(0.0);
229 <    Vector3d trq(0.0);    
229 >    Vector3d trq(0.0);
230 >    Vector3d ef(0.0);
231      Vector3d pos = this->getPos();
232 +
233 +    int sl = ((snapshotMan_->getCurrentSnapshot())->*storage_).getStorageLayout();
234 +
235      for (unsigned int i = 0; i < atoms_.size(); i++) {
236  
237        afrc = atoms_[i]->getFrc();
# Line 245 | Line 250 | namespace OpenMD {
250        if (atoms_[i]->isDirectional()) {
251          atrq = atoms_[i]->getTrq();
252          trq += atrq;
253 <      }      
253 >      }
254 >
255 >      if (sl & DataStorage::dslElectricField) {
256 >        ef += atoms_[i]->getElectricField();
257 >      }
258      }        
259      addFrc(frc);
260      addTrq(trq);    
261 +
262 +    if (sl & DataStorage::dslElectricField) {
263 +      ef /= atoms_.size();
264 +      setElectricField(ef);
265 +    }
266 +
267    }
268  
269    Mat3x3d RigidBody::calcForcesAndTorquesAndVirial() {
# Line 258 | Line 273 | namespace OpenMD {
273      Vector3d rpos;
274      Vector3d dfrc;
275      Vector3d frc(0.0);
276 <    Vector3d trq(0.0);    
276 >    Vector3d trq(0.0);
277 >    Vector3d ef(0.0);
278 >    
279      Vector3d pos = this->getPos();
280      Mat3x3d tau_(0.0);
281 +
282 +    int sl = ((snapshotMan_->getCurrentSnapshot())->*storage_).getStorageLayout();
283  
284      for (unsigned int i = 0; i < atoms_.size(); i++) {
285        
# Line 281 | Line 300 | namespace OpenMD {
300          atrq = atoms_[i]->getTrq();
301          trq += atrq;
302        }
303 +      if (sl & DataStorage::dslElectricField) {
304 +        ef += atoms_[i]->getElectricField();
305 +      }
306        
307        tau_(0,0) -= rpos[0]*afrc[0];
308        tau_(0,1) -= rpos[0]*afrc[1];
# Line 295 | Line 317 | namespace OpenMD {
317      }
318      addFrc(frc);
319      addTrq(trq);
320 +
321 +    if (sl & DataStorage::dslElectricField) {
322 +      ef /= atoms_.size();
323 +      setElectricField(ef);
324 +    }
325 +
326      return tau_;
327    }
328  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines