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 1841 by gezelter, Thu Sep 13 14:10:11 2012 UTC vs.
Revision 1842 by gezelter, Tue Jan 29 19:10:04 2013 UTC

# Line 226 | 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 246 | 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 259 | 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        
286        afrc = atoms_[i]->getFrc();
# Line 281 | Line 299 | namespace OpenMD {
299        if (atoms_[i]->isDirectional()) {
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];
# Line 296 | 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