| 155 |  | Molecule::BondIterator bondIter;; | 
| 156 |  | Molecule::BendIterator  bendIter; | 
| 157 |  | Molecule::TorsionIterator  torsionIter; | 
| 158 | < | double bondPotential = 0.0; | 
| 159 | < | double bendPotential = 0.0; | 
| 160 | < | double torsionPotential = 0.0; | 
| 158 | > | RealType bondPotential = 0.0; | 
| 159 | > | RealType bendPotential = 0.0; | 
| 160 | > | RealType torsionPotential = 0.0; | 
| 161 |  |  | 
| 162 |  | //calculate short range interactions | 
| 163 |  | for (mol = info_->beginMolecule(mi); mol != NULL; mol = info_->nextMolecule(mi)) { | 
| 175 |  |  | 
| 176 |  | for (bend = mol->beginBend(bendIter); bend != NULL; bend = mol->nextBend(bendIter)) { | 
| 177 |  |  | 
| 178 | < | double angle; | 
| 178 | > | RealType angle; | 
| 179 |  | bend->calcForce(angle); | 
| 180 | < | double currBendPot = bend->getPotential(); | 
| 180 | > | RealType currBendPot = bend->getPotential(); | 
| 181 |  | bendPotential += bend->getPotential(); | 
| 182 |  | std::map<Bend*, BendDataSet>::iterator i = bendDataSets.find(bend); | 
| 183 |  | if (i == bendDataSets.end()) { | 
| 196 |  | } | 
| 197 |  |  | 
| 198 |  | for (torsion = mol->beginTorsion(torsionIter); torsion != NULL; torsion = mol->nextTorsion(torsionIter)) { | 
| 199 | < | double angle; | 
| 199 | > | RealType angle; | 
| 200 |  | torsion->calcForce(angle); | 
| 201 | < | double currTorsionPot = torsion->getPotential(); | 
| 201 | > | RealType currTorsionPot = torsion->getPotential(); | 
| 202 |  | torsionPotential += torsion->getPotential(); | 
| 203 |  | std::map<Torsion*, TorsionDataSet>::iterator i = torsionDataSets.find(torsion); | 
| 204 |  | if (i == torsionDataSets.end()) { | 
| 218 |  |  | 
| 219 |  | } | 
| 220 |  |  | 
| 221 | < | double  shortRangePotential = bondPotential + bendPotential + torsionPotential; | 
| 221 | > | RealType  shortRangePotential = bondPotential + bendPotential + torsionPotential; | 
| 222 |  | Snapshot* curSnapshot = info_->getSnapshotManager()->getCurrentSnapshot(); | 
| 223 |  | curSnapshot->statData[Stats::SHORT_RANGE_POTENTIAL] = shortRangePotential; | 
| 224 |  | curSnapshot->statData[Stats::BOND_POTENTIAL] = bondPotential; | 
| 230 |  | void ForceManager::calcLongRangeInteraction(bool needPotential, bool needStress) { | 
| 231 |  | Snapshot* curSnapshot; | 
| 232 |  | DataStorage* config; | 
| 233 | < | double* frc; | 
| 234 | < | double* pos; | 
| 235 | < | double* trq; | 
| 236 | < | double* A; | 
| 237 | < | double* electroFrame; | 
| 238 | < | double* rc; | 
| 233 | > | RealType* frc; | 
| 234 | > | RealType* pos; | 
| 235 | > | RealType* trq; | 
| 236 | > | RealType* A; | 
| 237 | > | RealType* electroFrame; | 
| 238 | > | RealType* rc; | 
| 239 |  |  | 
| 240 |  | //get current snapshot from SimInfo | 
| 241 |  | curSnapshot = info_->getSnapshotManager()->getCurrentSnapshot(); | 
| 272 |  | } | 
| 273 |  |  | 
| 274 |  | //initialize data before passing to fortran | 
| 275 | < | double longRangePotential[LR_POT_TYPES]; | 
| 276 | < | double lrPot = 0.0; | 
| 277 | < |  | 
| 275 | > | RealType longRangePotential[LR_POT_TYPES]; | 
| 276 | > | RealType lrPot = 0.0; | 
| 277 | > | Vector3d totalDipole; | 
| 278 |  | Mat3x3d tau; | 
| 279 |  | short int passedCalcPot = needPotential; | 
| 280 |  | short int passedCalcStress = needStress; | 
| 306 |  | lrPot += longRangePotential[i]; //Quick hack | 
| 307 |  | } | 
| 308 |  |  | 
| 309 | + | // grab the simulation box dipole moment if specified | 
| 310 | + | if (info_->getCalcBoxDipole()){ | 
| 311 | + | getAccumulatedBoxDipole(totalDipole.getArrayPointer()); | 
| 312 | + |  | 
| 313 | + | curSnapshot->statData[Stats::BOX_DIPOLE_X] = totalDipole(0); | 
| 314 | + | curSnapshot->statData[Stats::BOX_DIPOLE_Y] = totalDipole(1); | 
| 315 | + | curSnapshot->statData[Stats::BOX_DIPOLE_Z] = totalDipole(2); | 
| 316 | + | } | 
| 317 | + |  | 
| 318 |  | //store the tau and long range potential | 
| 319 |  | curSnapshot->statData[Stats::LONG_RANGE_POTENTIAL] = lrPot; | 
| 320 |  | curSnapshot->statData[Stats::VANDERWAALS_POTENTIAL] = longRangePotential[VDW_POT]; | 
| 335 |  | for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { | 
| 336 |  | rb->calcForcesAndTorques(); | 
| 337 |  | } | 
| 338 | < | } | 
| 338 | > | } | 
| 339 |  |  | 
| 340 |  | } | 
| 341 |  |  |