| 36 |
|
* [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). |
| 37 |
|
* [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). |
| 38 |
|
* [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). |
| 39 |
< |
* [4] Vardeman & Gezelter, in progress (2009). |
| 39 |
> |
* [4] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). |
| 40 |
> |
* [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |
| 41 |
|
*/ |
| 42 |
|
|
| 43 |
|
#include <cmath> |
| 46 |
|
#include "utils/simError.h" |
| 47 |
|
#include "utils/PhysicalConstants.hpp" |
| 48 |
|
#include "utils/StringUtils.hpp" |
| 49 |
+ |
#ifdef IS_MPI |
| 50 |
+ |
#include <mpi.h> |
| 51 |
+ |
#endif |
| 52 |
+ |
|
| 53 |
|
namespace OpenMD { |
| 54 |
|
ZconstraintForceManager::ZconstraintForceManager(SimInfo* info): ForceManager(info), infiniteTime(1e31) { |
| 55 |
|
currSnapshot_ = info_->getSnapshotManager()->getCurrentSnapshot(); |
| 436 |
|
Vector3d force(0.0); |
| 437 |
|
Vector3d com; |
| 438 |
|
RealType totalFZ_local = 0; |
| 439 |
+ |
RealType lrPot; |
| 440 |
|
std::list<ZconstraintMol>::iterator i; |
| 441 |
|
StuntDouble* integrableObject; |
| 442 |
|
Molecule::IntegrableObjectIterator ii; |
| 447 |
|
RealType resPos = usingSMD_? i->cantPos : i->param.zTargetPos; |
| 448 |
|
RealType diff = com[whichDirection] - resPos; |
| 449 |
|
RealType harmonicU = 0.5 * i->param.kz * diff * diff; |
| 450 |
< |
currSnapshot_->statData[Stats::LONG_RANGE_POTENTIAL] += harmonicU; |
| 450 |
> |
lrPot = currSnapshot_->getLongRangePotential(); |
| 451 |
> |
lrPot += harmonicU; |
| 452 |
> |
currSnapshot_->setLongRangePotential(lrPot); |
| 453 |
|
RealType harmonicF = -i->param.kz * diff; |
| 454 |
|
totalFZ_local += harmonicF; |
| 455 |
|
|