本文整理汇总了C++中StuntDouble::getFlucQPos方法的典型用法代码示例。如果您正苦于以下问题:C++ StuntDouble::getFlucQPos方法的具体用法?C++ StuntDouble::getFlucQPos怎么用?C++ StuntDouble::getFlucQPos使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StuntDouble
的用法示例。
在下文中一共展示了StuntDouble::getFlucQPos方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: process
void PotDiff::process() {
Molecule* mol;
RigidBody* rb;
SimInfo::MoleculeIterator mi;
Molecule::RigidBodyIterator rbIter;
StuntDouble* sd;
int j;
diff_.clear();
DumpReader reader(info_, dumpFilename_);
int nFrames = reader.getNFrames();
// We'll need the force manager to compute the potential
ForceManager* forceMan = new ForceManager(info_);
// We'll need thermo to report the potential
Thermo* thermo = new Thermo(info_);
for (int i = 0; i < nFrames; i += step_) {
reader.readFrame(i);
currentSnapshot_ = info_->getSnapshotManager()->getCurrentSnapshot();
for (mol = info_->beginMolecule(mi); mol != NULL;
mol = info_->nextMolecule(mi)) {
//change the positions of atoms which belong to the rigidbodies
for (rb = mol->beginRigidBody(rbIter); rb != NULL;
rb = mol->nextRigidBody(rbIter)) {
rb->updateAtoms();
}
}
for (sd = seleMan_.beginSelected(j); sd != NULL;
sd = seleMan_.nextSelected(j)) {
if (!selectionWasFlucQ_[j]) {
sd->setFlucQPos(0.0);
}
}
forceMan->calcForces();
RealType pot1 = thermo->getPotential();
if (evaluator_.isDynamic()) {
seleMan_.setSelectionSet(evaluator_.evaluate());
}
for (sd = seleMan_.beginSelected(j); sd != NULL;
sd = seleMan_.nextSelected(j)) {
AtomType* at = static_cast<Atom*>(sd)->getAtomType();
FixedChargeAdapter fca = FixedChargeAdapter(at);
FluctuatingChargeAdapter fqa = FluctuatingChargeAdapter(at);
RealType charge = 0.0;
if (fca.isFixedCharge()) charge += fca.getCharge();
if (fqa.isFluctuatingCharge()) charge += sd->getFlucQPos();
sd->setFlucQPos(-charge);
}
currentSnapshot_->clearDerivedProperties();
forceMan->calcForces();
RealType pot2 = thermo->getPotential();
RealType diff = pot2-pot1;
data_.add(diff);
diff_.push_back(diff);
times_.push_back(currentSnapshot_->getTime());
info_->getSnapshotManager()->advance();
}
writeDiff();
}