| 59 | 
  | 
#include "primitives/Inversion.hpp" | 
| 60 | 
  | 
namespace OpenMD { | 
| 61 | 
  | 
 | 
| 62 | 
< | 
  void ForceManager::calcForces(bool needPotential, bool needStress) { | 
| 62 | 
> | 
  void ForceManager::calcForces() { | 
| 63 | 
  | 
     | 
| 64 | 
  | 
    if (!info_->isFortranInitialized()) { | 
| 65 | 
  | 
      info_->update(); | 
| 69 | 
  | 
     | 
| 70 | 
  | 
    calcShortRangeInteraction(); | 
| 71 | 
  | 
 | 
| 72 | 
< | 
    calcLongRangeInteraction(needPotential, needStress); | 
| 72 | 
> | 
    calcLongRangeInteraction(); | 
| 73 | 
  | 
 | 
| 74 | 
< | 
    postCalculation(needStress); | 
| 74 | 
> | 
    postCalculation(); | 
| 75 | 
  | 
     | 
| 76 | 
  | 
  } | 
| 77 | 
  | 
   | 
| 145 | 
  | 
        RealType angle; | 
| 146 | 
  | 
        bend->calcForce(angle); | 
| 147 | 
  | 
        RealType currBendPot = bend->getPotential();           | 
| 148 | 
+ | 
          | 
| 149 | 
  | 
        bendPotential += bend->getPotential(); | 
| 150 | 
  | 
        std::map<Bend*, BendDataSet>::iterator i = bendDataSets.find(bend); | 
| 151 | 
  | 
        if (i == bendDataSets.end()) { | 
| 223 | 
  | 
     | 
| 224 | 
  | 
  } | 
| 225 | 
  | 
   | 
| 226 | 
< | 
  void ForceManager::calcLongRangeInteraction(bool needPotential,  | 
| 226 | 
< | 
                                              bool needStress) { | 
| 226 | 
> | 
  void ForceManager::calcLongRangeInteraction() { | 
| 227 | 
  | 
    Snapshot* curSnapshot; | 
| 228 | 
  | 
    DataStorage* config; | 
| 229 | 
  | 
    RealType* frc; | 
| 276 | 
  | 
    RealType longRangePotential[LR_POT_TYPES]; | 
| 277 | 
  | 
    RealType lrPot = 0.0; | 
| 278 | 
  | 
    Vector3d totalDipole; | 
| 279 | 
– | 
    short int passedCalcPot = needPotential; | 
| 280 | 
– | 
    short int passedCalcStress = needStress; | 
| 279 | 
  | 
    int isError = 0; | 
| 280 | 
  | 
 | 
| 281 | 
  | 
    for (int i=0; i<LR_POT_TYPES;i++){ | 
| 291 | 
  | 
                tau.getArrayPointer(), | 
| 292 | 
  | 
                longRangePotential,  | 
| 293 | 
  | 
                particlePot, | 
| 296 | 
– | 
                &passedCalcPot, | 
| 297 | 
– | 
                &passedCalcStress, | 
| 294 | 
  | 
                &isError ); | 
| 295 | 
  | 
     | 
| 296 | 
  | 
    if( isError ){ | 
| 302 | 
  | 
    for (int i=0; i<LR_POT_TYPES;i++){ | 
| 303 | 
  | 
      lrPot += longRangePotential[i]; //Quick hack | 
| 304 | 
  | 
    } | 
| 305 | 
< | 
     | 
| 305 | 
> | 
    | 
| 306 | 
  | 
    // grab the simulation box dipole moment if specified | 
| 307 | 
  | 
    if (info_->getCalcBoxDipole()){ | 
| 308 | 
  | 
      getAccumulatedBoxDipole(totalDipole.getArrayPointer()); | 
| 319 | 
  | 
  } | 
| 320 | 
  | 
 | 
| 321 | 
  | 
   | 
| 322 | 
< | 
  void ForceManager::postCalculation(bool needStress) { | 
| 322 | 
> | 
  void ForceManager::postCalculation() { | 
| 323 | 
  | 
    SimInfo::MoleculeIterator mi; | 
| 324 | 
  | 
    Molecule* mol; | 
| 325 | 
  | 
    Molecule::RigidBodyIterator rbIter; | 
| 332 | 
  | 
         mol = info_->nextMolecule(mi)) { | 
| 333 | 
  | 
      for (rb = mol->beginRigidBody(rbIter); rb != NULL;  | 
| 334 | 
  | 
           rb = mol->nextRigidBody(rbIter)) {  | 
| 335 | 
< | 
        if (needStress) {           | 
| 336 | 
< | 
          Mat3x3d rbTau = rb->calcForcesAndTorquesAndVirial(); | 
| 341 | 
< | 
          tau += rbTau; | 
| 342 | 
< | 
        } else{ | 
| 343 | 
< | 
          rb->calcForcesAndTorques(); | 
| 344 | 
< | 
        } | 
| 335 | 
> | 
        Mat3x3d rbTau = rb->calcForcesAndTorquesAndVirial(); | 
| 336 | 
> | 
        tau += rbTau; | 
| 337 | 
  | 
      } | 
| 338 | 
  | 
    } | 
| 339 | 
< | 
 | 
| 348 | 
< | 
    if (needStress) { | 
| 339 | 
> | 
     | 
| 340 | 
  | 
#ifdef IS_MPI | 
| 341 | 
< | 
      Mat3x3d tmpTau(tau); | 
| 342 | 
< | 
      MPI_Allreduce(tmpTau.getArrayPointer(), tau.getArrayPointer(),  | 
| 343 | 
< | 
                    9, MPI_REALTYPE, MPI_SUM, MPI_COMM_WORLD); | 
| 341 | 
> | 
    Mat3x3d tmpTau(tau); | 
| 342 | 
> | 
    MPI_Allreduce(tmpTau.getArrayPointer(), tau.getArrayPointer(),  | 
| 343 | 
> | 
                  9, MPI_REALTYPE, MPI_SUM, MPI_COMM_WORLD); | 
| 344 | 
  | 
#endif | 
| 345 | 
< | 
      curSnapshot->statData.setTau(tau); | 
| 355 | 
< | 
    }  | 
| 345 | 
> | 
    curSnapshot->statData.setTau(tau); | 
| 346 | 
  | 
  } | 
| 347 | 
  | 
 | 
| 348 | 
  | 
} //end namespace OpenMD |