57 |
|
#include "primitives/Bend.hpp" |
58 |
|
#include "primitives/Torsion.hpp" |
59 |
|
#include "primitives/Inversion.hpp" |
60 |
– |
namespace OpenMD { |
60 |
|
|
61 |
+ |
namespace OpenMD { |
62 |
+ |
|
63 |
+ |
ForceManager::ForceManager(SimInfo * info) : info_(info), |
64 |
+ |
NBforcesInitialized_(false) { |
65 |
+ |
} |
66 |
+ |
|
67 |
|
void ForceManager::calcForces() { |
68 |
|
|
69 |
|
if (!info_->isFortranInitialized()) { |
280 |
|
//initialize data before passing to fortran |
281 |
|
RealType longRangePotential[LR_POT_TYPES]; |
282 |
|
RealType lrPot = 0.0; |
278 |
– |
Vector3d totalDipole; |
283 |
|
int isError = 0; |
284 |
|
|
285 |
|
for (int i=0; i<LR_POT_TYPES;i++){ |
306 |
|
for (int i=0; i<LR_POT_TYPES;i++){ |
307 |
|
lrPot += longRangePotential[i]; //Quick hack |
308 |
|
} |
309 |
< |
|
306 |
< |
// grab the simulation box dipole moment if specified |
307 |
< |
if (info_->getCalcBoxDipole()){ |
308 |
< |
getAccumulatedBoxDipole(totalDipole.getArrayPointer()); |
309 |
< |
|
310 |
< |
curSnapshot->statData[Stats::BOX_DIPOLE_X] = totalDipole(0); |
311 |
< |
curSnapshot->statData[Stats::BOX_DIPOLE_Y] = totalDipole(1); |
312 |
< |
curSnapshot->statData[Stats::BOX_DIPOLE_Z] = totalDipole(2); |
313 |
< |
} |
314 |
< |
|
309 |
> |
|
310 |
|
//store the tau and long range potential |
311 |
|
curSnapshot->statData[Stats::LONG_RANGE_POTENTIAL] = lrPot; |
312 |
|
curSnapshot->statData[Stats::VANDERWAALS_POTENTIAL] = longRangePotential[VDW_POT]; |