--- trunk/src/brains/ForceManager.cpp 2014/10/31 18:57:19 2032 +++ trunk/src/brains/ForceManager.cpp 2014/12/11 16:16:43 2047 @@ -58,6 +58,7 @@ #include "primitives/Inversion.hpp" #include "nonbonded/NonBondedInteraction.hpp" #include "perturbations/UniformField.hpp" +#include "perturbations/UniformGradient.hpp" #include "parallel/ForceMatrixDecomposition.hpp" #include @@ -393,10 +394,7 @@ namespace OpenMD { switcher_->setSwitchType(sft_); switcher_->setSwitch(rSwitch_, rCut_); } - - - void ForceManager::initialize() { if (!info_->isTopologyDone()) { @@ -452,7 +450,13 @@ namespace OpenMD { UniformField* eField = new UniformField(info_); perturbations_.push_back(eField); } - + if (info_->getSimParams()->haveUniformGradientStrength() || + info_->getSimParams()->haveUniformGradientDirection1() || + info_->getSimParams()->haveUniformGradientDirection2() ) { + UniformGradient* eGrad = new UniformGradient(info_); + perturbations_.push_back(eGrad); + } + usePeriodicBoundaryConditions_ = info_->getSimParams()->getUsePeriodicBoundaryConditions(); fDecomp_->distributeInitialData(); @@ -741,7 +745,8 @@ namespace OpenMD { idat.f1 = &f1; idat.sw = &sw; idat.shiftedPot = (cutoffMethod_ == SHIFTED_POTENTIAL) ? true : false; - idat.shiftedForce = (cutoffMethod_ == SHIFTED_FORCE || cutoffMethod_ == TAYLOR_SHIFTED) ? true : false; + idat.shiftedForce = (cutoffMethod_ == SHIFTED_FORCE || + cutoffMethod_ == TAYLOR_SHIFTED) ? true : false; idat.doParticlePot = doParticlePot_; idat.doElectricField = doElectricField_; idat.doSitePotential = doSitePotential_; @@ -765,7 +770,7 @@ namespace OpenMD { } for (vector >::iterator it = neighborList_.begin(); - it != neighborList_.end(); ++it) { + it != neighborList_.end(); ++it) { cg1 = (*it).first; cg2 = (*it).second; @@ -958,7 +963,7 @@ namespace OpenMD { curSnapshot->setLongRangePotential(longRangePotential); curSnapshot->setExcludedPotentials(*(fDecomp_->getExcludedSelfPotential()) + - *(fDecomp_->getExcludedPotential())); + *(fDecomp_->getExcludedPotential())); } @@ -994,37 +999,37 @@ namespace OpenMD { if (info_->getSimParams()->getUseLongRangeCorrections()) { /* - RealType vol = curSnapshot->getVolume(); - RealType Elrc(0.0); - RealType Wlrc(0.0); + RealType vol = curSnapshot->getVolume(); + RealType Elrc(0.0); + RealType Wlrc(0.0); - set::iterator i; - set::iterator j; + set::iterator i; + set::iterator j; - RealType n_i, n_j; - RealType rho_i, rho_j; - pair LRI; + RealType n_i, n_j; + RealType rho_i, rho_j; + pair LRI; - for (i = atomTypes_.begin(); i != atomTypes_.end(); ++i) { + for (i = atomTypes_.begin(); i != atomTypes_.end(); ++i) { n_i = RealType(info_->getGlobalCountOfType(*i)); rho_i = n_i / vol; for (j = atomTypes_.begin(); j != atomTypes_.end(); ++j) { - n_j = RealType(info_->getGlobalCountOfType(*j)); - rho_j = n_j / vol; + n_j = RealType(info_->getGlobalCountOfType(*j)); + rho_j = n_j / vol; - LRI = interactionMan_->getLongRangeIntegrals( (*i), (*j) ); + LRI = interactionMan_->getLongRangeIntegrals( (*i), (*j) ); - Elrc += n_i * rho_j * LRI.first; - Wlrc -= rho_i * rho_j * LRI.second; + Elrc += n_i * rho_j * LRI.first; + Wlrc -= rho_i * rho_j * LRI.second; } - } - Elrc *= 2.0 * NumericConstant::PI; - Wlrc *= 2.0 * NumericConstant::PI; + } + Elrc *= 2.0 * NumericConstant::PI; + Wlrc *= 2.0 * NumericConstant::PI; - RealType lrp = curSnapshot->getLongRangePotential(); - curSnapshot->setLongRangePotential(lrp + Elrc); - stressTensor += Wlrc * SquareMatrix3::identity(); - curSnapshot->setStressTensor(stressTensor); + RealType lrp = curSnapshot->getLongRangePotential(); + curSnapshot->setLongRangePotential(lrp + Elrc); + stressTensor += Wlrc * SquareMatrix3::identity(); + curSnapshot->setStressTensor(stressTensor); */ }