88 |
|
|
89 |
|
vector<Component*> components = simParams->getComponents(); |
90 |
|
|
91 |
< |
for (vector<Component*>::iterator i = components.begin(); i !=components.end(); ++i) { |
91 |
> |
for (vector<Component*>::iterator i = components.begin(); |
92 |
> |
i !=components.end(); ++i) { |
93 |
|
molStamp = (*i)->getMoleculeStamp(); |
94 |
|
nMolWithSameStamp = (*i)->getNMol(); |
95 |
|
|
232 |
|
vector<Atom*>::iterator k; |
233 |
|
|
234 |
|
Molecule* mol; |
235 |
< |
StuntDouble* integrableObject; |
235 |
> |
StuntDouble* sd; |
236 |
|
Atom* atom; |
237 |
|
|
238 |
|
ndf_local = 0; |
239 |
|
nfq_local = 0; |
240 |
|
|
241 |
|
for (mol = beginMolecule(i); mol != NULL; mol = nextMolecule(i)) { |
241 |
– |
for (integrableObject = mol->beginIntegrableObject(j); integrableObject != NULL; |
242 |
– |
integrableObject = mol->nextIntegrableObject(j)) { |
242 |
|
|
243 |
+ |
for (sd = mol->beginIntegrableObject(j); sd != NULL; |
244 |
+ |
sd = mol->nextIntegrableObject(j)) { |
245 |
+ |
|
246 |
|
ndf_local += 3; |
247 |
|
|
248 |
< |
if (integrableObject->isDirectional()) { |
249 |
< |
if (integrableObject->isLinear()) { |
248 |
> |
if (sd->isDirectional()) { |
249 |
> |
if (sd->isLinear()) { |
250 |
|
ndf_local += 2; |
251 |
|
} else { |
252 |
|
ndf_local += 3; |
253 |
|
} |
254 |
|
} |
255 |
|
} |
256 |
+ |
|
257 |
|
for (atom = mol->beginFluctuatingCharge(k); atom != NULL; |
258 |
|
atom = mol->nextFluctuatingCharge(k)) { |
259 |
|
if (atom->isFluctuatingCharge()) { |
315 |
|
MoleculeIterator i; |
316 |
|
vector<StuntDouble*>::iterator j; |
317 |
|
Molecule* mol; |
318 |
< |
StuntDouble* integrableObject; |
318 |
> |
StuntDouble* sd; |
319 |
|
|
320 |
|
// Raw degrees of freedom that we have to set |
321 |
|
ndfRaw_local = 0; |
322 |
|
|
323 |
|
for (mol = beginMolecule(i); mol != NULL; mol = nextMolecule(i)) { |
321 |
– |
for (integrableObject = mol->beginIntegrableObject(j); integrableObject != NULL; |
322 |
– |
integrableObject = mol->nextIntegrableObject(j)) { |
324 |
|
|
325 |
+ |
for (sd = mol->beginIntegrableObject(j); sd != NULL; |
326 |
+ |
sd = mol->nextIntegrableObject(j)) { |
327 |
+ |
|
328 |
|
ndfRaw_local += 3; |
329 |
|
|
330 |
< |
if (integrableObject->isDirectional()) { |
331 |
< |
if (integrableObject->isLinear()) { |
330 |
> |
if (sd->isDirectional()) { |
331 |
> |
if (sd->isLinear()) { |
332 |
|
ndfRaw_local += 2; |
333 |
|
} else { |
334 |
|
ndfRaw_local += 3; |
388 |
|
Molecule::RigidBodyIterator rbIter; |
389 |
|
RigidBody* rb; |
390 |
|
Molecule::IntegrableObjectIterator ii; |
391 |
< |
StuntDouble* integrableObject; |
391 |
> |
StuntDouble* sd; |
392 |
|
|
393 |
< |
for (integrableObject = mol->beginIntegrableObject(ii); |
394 |
< |
integrableObject != NULL; |
391 |
< |
integrableObject = mol->nextIntegrableObject(ii)) { |
393 |
> |
for (sd = mol->beginIntegrableObject(ii); sd != NULL; |
394 |
> |
sd = mol->nextIntegrableObject(ii)) { |
395 |
|
|
396 |
< |
if (integrableObject->isRigidBody()) { |
397 |
< |
rb = static_cast<RigidBody*>(integrableObject); |
396 |
> |
if (sd->isRigidBody()) { |
397 |
> |
rb = static_cast<RigidBody*>(sd); |
398 |
|
vector<Atom*> atoms = rb->getAtoms(); |
399 |
|
set<int> rigidAtoms; |
400 |
|
for (int i = 0; i < static_cast<int>(atoms.size()); ++i) { |
405 |
|
} |
406 |
|
} else { |
407 |
|
set<int> oneAtomSet; |
408 |
< |
oneAtomSet.insert(integrableObject->getGlobalIndex()); |
409 |
< |
atomGroups.insert(map<int, set<int> >::value_type(integrableObject->getGlobalIndex(), oneAtomSet)); |
408 |
> |
oneAtomSet.insert(sd->getGlobalIndex()); |
409 |
> |
atomGroups.insert(map<int, set<int> >::value_type(sd->getGlobalIndex(), oneAtomSet)); |
410 |
|
} |
411 |
|
} |
412 |
|
|
540 |
|
Molecule::RigidBodyIterator rbIter; |
541 |
|
RigidBody* rb; |
542 |
|
Molecule::IntegrableObjectIterator ii; |
543 |
< |
StuntDouble* integrableObject; |
543 |
> |
StuntDouble* sd; |
544 |
|
|
545 |
< |
for (integrableObject = mol->beginIntegrableObject(ii); |
546 |
< |
integrableObject != NULL; |
544 |
< |
integrableObject = mol->nextIntegrableObject(ii)) { |
545 |
> |
for (sd = mol->beginIntegrableObject(ii); sd != NULL; |
546 |
> |
sd = mol->nextIntegrableObject(ii)) { |
547 |
|
|
548 |
< |
if (integrableObject->isRigidBody()) { |
549 |
< |
rb = static_cast<RigidBody*>(integrableObject); |
548 |
> |
if (sd->isRigidBody()) { |
549 |
> |
rb = static_cast<RigidBody*>(sd); |
550 |
|
vector<Atom*> atoms = rb->getAtoms(); |
551 |
|
set<int> rigidAtoms; |
552 |
|
for (int i = 0; i < static_cast<int>(atoms.size()); ++i) { |
557 |
|
} |
558 |
|
} else { |
559 |
|
set<int> oneAtomSet; |
560 |
< |
oneAtomSet.insert(integrableObject->getGlobalIndex()); |
561 |
< |
atomGroups.insert(map<int, set<int> >::value_type(integrableObject->getGlobalIndex(), oneAtomSet)); |
560 |
> |
oneAtomSet.insert(sd->getGlobalIndex()); |
561 |
> |
atomGroups.insert(map<int, set<int> >::value_type(sd->getGlobalIndex(), oneAtomSet)); |
562 |
|
} |
563 |
|
} |
564 |
|
|
782 |
|
|
783 |
|
void SimInfo::setupSimVariables() { |
784 |
|
useAtomicVirial_ = simParams_->getUseAtomicVirial(); |
785 |
< |
// we only call setAccumulateBoxDipole if the accumulateBoxDipole parameter is true |
785 |
> |
// we only call setAccumulateBoxDipole if the accumulateBoxDipole |
786 |
> |
// parameter is true |
787 |
|
calcBoxDipole_ = false; |
788 |
|
if ( simParams_->haveAccumulateBoxDipole() ) |
789 |
|
if ( simParams_->getAccumulateBoxDipole() ) { |
981 |
|
|
982 |
|
for (mol = beginMolecule(mi); mol != NULL; mol = nextMolecule(mi)) { |
983 |
|
|
984 |
< |
for (atom = mol->beginAtom(atomIter); atom != NULL; atom = mol->nextAtom(atomIter)) { |
984 |
> |
for (atom = mol->beginAtom(atomIter); atom != NULL; |
985 |
> |
atom = mol->nextAtom(atomIter)) { |
986 |
|
atom->setSnapshotManager(sman_); |
987 |
|
} |
988 |
|
|
989 |
< |
for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { |
989 |
> |
for (rb = mol->beginRigidBody(rbIter); rb != NULL; |
990 |
> |
rb = mol->nextRigidBody(rbIter)) { |
991 |
|
rb->setSnapshotManager(sman_); |
992 |
|
} |
993 |
|
|
994 |
< |
for (cg = mol->beginCutoffGroup(cgIter); cg != NULL; cg = mol->nextCutoffGroup(cgIter)) { |
994 |
> |
for (cg = mol->beginCutoffGroup(cgIter); cg != NULL; |
995 |
> |
cg = mol->nextCutoffGroup(cgIter)) { |
996 |
|
cg->setSnapshotManager(sman_); |
997 |
|
} |
998 |
|
} |
1007 |
|
|
1008 |
|
|
1009 |
|
StuntDouble* SimInfo::getIOIndexToIntegrableObject(int index) { |
1010 |
< |
return IOIndexToIntegrableObject.at(index); |
1010 |
> |
if (index >= IOIndexToIntegrableObject.size()) { |
1011 |
> |
sprintf(painCave.errMsg, |
1012 |
> |
"SimInfo::getIOIndexToIntegrableObject Error: Integrable Object\n" |
1013 |
> |
"\tindex exceeds number of known objects!\n"); |
1014 |
> |
painCave.isFatal = 1; |
1015 |
> |
simError(); |
1016 |
> |
return NULL; |
1017 |
> |
} else |
1018 |
> |
return IOIndexToIntegrableObject.at(index); |
1019 |
|
} |
1020 |
|
|
1021 |
|
void SimInfo::setIOIndexToIntegrableObject(const vector<StuntDouble*>& v) { |
1022 |
|
IOIndexToIntegrableObject= v; |
1023 |
|
} |
1010 |
– |
/* |
1011 |
– |
void SimInfo::setStuntDoubleFromGlobalIndex(vector<StuntDouble*> v) { |
1012 |
– |
assert( v.size() == nAtoms_ + nRigidBodies_); |
1013 |
– |
sdByGlobalIndex_ = v; |
1014 |
– |
} |
1024 |
|
|
1016 |
– |
StuntDouble* SimInfo::getStuntDoubleFromGlobalIndex(int index) { |
1017 |
– |
//assert(index < nAtoms_ + nRigidBodies_); |
1018 |
– |
return sdByGlobalIndex_.at(index); |
1019 |
– |
} |
1020 |
– |
*/ |
1025 |
|
int SimInfo::getNGlobalConstraints() { |
1026 |
|
int nGlobalConstraints; |
1027 |
|
#ifdef IS_MPI |