# | Line 90 | Line 90 | namespace oopse { | |
---|---|---|
90 | ndf_(0), fdf_local(0), ndfRaw_(0), ndfTrans_(0), nZconstraint_(0), | |
91 | nGlobalMols_(0), nGlobalAtoms_(0), nGlobalCutoffGroups_(0), | |
92 | nGlobalIntegrableObjects_(0), nGlobalRigidBodies_(0), | |
93 | < | nAtoms_(0), nBonds_(0), nBends_(0), nTorsions_(0), nRigidBodies_(0), |
94 | < | nIntegrableObjects_(0), nCutoffGroups_(0), nConstraints_(0), |
95 | < | sman_(NULL), fortranInitialized_(false), calcBoxDipole_(false), |
96 | < | useAtomicVirial_(true) { |
93 | > | nAtoms_(0), nBonds_(0), nBends_(0), nTorsions_(0), nInversions_(0), |
94 | > | nRigidBodies_(0), nIntegrableObjects_(0), nCutoffGroups_(0), |
95 | > | nConstraints_(0), sman_(NULL), fortranInitialized_(false), |
96 | > | calcBoxDipole_(false), useAtomicVirial_(true) { |
97 | ||
98 | + | |
99 | MoleculeStamp* molStamp; | |
100 | int nMolWithSameStamp; | |
101 | int nCutoffAtoms = 0; // number of atoms belong to cutoff groups | |
# | Line 102 | Line 103 | namespace oopse { | |
103 | CutoffGroupStamp* cgStamp; | |
104 | RigidBodyStamp* rbStamp; | |
105 | int nRigidAtoms = 0; | |
106 | + | |
107 | std::vector<Component*> components = simParams->getComponents(); | |
108 | ||
109 | for (std::vector<Component*>::iterator i = components.begin(); i !=components.end(); ++i) { | |
# | Line 194 | Line 196 | namespace oopse { | |
196 | nBonds_ += mol->getNBonds(); | |
197 | nBends_ += mol->getNBends(); | |
198 | nTorsions_ += mol->getNTorsions(); | |
199 | + | nInversions_ += mol->getNInversions(); |
200 | nRigidBodies_ += mol->getNRigidBodies(); | |
201 | nIntegrableObjects_ += mol->getNIntegrableObjects(); | |
202 | nCutoffGroups_ += mol->getNCutoffGroups(); | |
# | Line 219 | Line 222 | namespace oopse { | |
222 | nBonds_ -= mol->getNBonds(); | |
223 | nBends_ -= mol->getNBends(); | |
224 | nTorsions_ -= mol->getNTorsions(); | |
225 | + | nInversions_ -= mol->getNInversions(); |
226 | nRigidBodies_ -= mol->getNRigidBodies(); | |
227 | nIntegrableObjects_ -= mol->getNIntegrableObjects(); | |
228 | nCutoffGroups_ -= mol->getNCutoffGroups(); | |
# | Line 354 | Line 358 | namespace oopse { | |
358 | std::vector<Bond*>::iterator bondIter; | |
359 | std::vector<Bend*>::iterator bendIter; | |
360 | std::vector<Torsion*>::iterator torsionIter; | |
361 | + | std::vector<Inversion*>::iterator inversionIter; |
362 | Bond* bond; | |
363 | Bend* bend; | |
364 | Torsion* torsion; | |
365 | + | Inversion* inversion; |
366 | int a; | |
367 | int b; | |
368 | int c; | |
# | Line 419 | Line 425 | namespace oopse { | |
425 | b = torsion->getAtomB()->getGlobalIndex(); | |
426 | c = torsion->getAtomC()->getGlobalIndex(); | |
427 | d = torsion->getAtomD()->getGlobalIndex(); | |
428 | + | std::set<int> rigidSetA = getRigidSet(a, atomGroups); |
429 | + | std::set<int> rigidSetB = getRigidSet(b, atomGroups); |
430 | + | std::set<int> rigidSetC = getRigidSet(c, atomGroups); |
431 | + | std::set<int> rigidSetD = getRigidSet(d, atomGroups); |
432 | + | |
433 | + | exclude_.addPairs(rigidSetA, rigidSetB); |
434 | + | exclude_.addPairs(rigidSetA, rigidSetC); |
435 | + | exclude_.addPairs(rigidSetA, rigidSetD); |
436 | + | exclude_.addPairs(rigidSetB, rigidSetC); |
437 | + | exclude_.addPairs(rigidSetB, rigidSetD); |
438 | + | exclude_.addPairs(rigidSetC, rigidSetD); |
439 | + | |
440 | + | /* |
441 | + | exclude_.addPairs(rigidSetA.begin(), rigidSetA.end(), rigidSetB.begin(), rigidSetB.end()); |
442 | + | exclude_.addPairs(rigidSetA.begin(), rigidSetA.end(), rigidSetC.begin(), rigidSetC.end()); |
443 | + | exclude_.addPairs(rigidSetA.begin(), rigidSetA.end(), rigidSetD.begin(), rigidSetD.end()); |
444 | + | exclude_.addPairs(rigidSetB.begin(), rigidSetB.end(), rigidSetC.begin(), rigidSetC.end()); |
445 | + | exclude_.addPairs(rigidSetB.begin(), rigidSetB.end(), rigidSetD.begin(), rigidSetD.end()); |
446 | + | exclude_.addPairs(rigidSetC.begin(), rigidSetC.end(), rigidSetD.begin(), rigidSetD.end()); |
447 | + | |
448 | + | |
449 | + | exclude_.addPair(a, b); |
450 | + | exclude_.addPair(a, c); |
451 | + | exclude_.addPair(a, d); |
452 | + | exclude_.addPair(b, c); |
453 | + | exclude_.addPair(b, d); |
454 | + | exclude_.addPair(c, d); |
455 | + | */ |
456 | + | } |
457 | + | |
458 | + | for (inversion= mol->beginInversion(inversionIter); inversion != NULL; |
459 | + | inversion = mol->nextInversion(inversionIter)) { |
460 | + | a = inversion->getAtomA()->getGlobalIndex(); |
461 | + | b = inversion->getAtomB()->getGlobalIndex(); |
462 | + | c = inversion->getAtomC()->getGlobalIndex(); |
463 | + | d = inversion->getAtomD()->getGlobalIndex(); |
464 | std::set<int> rigidSetA = getRigidSet(a, atomGroups); | |
465 | std::set<int> rigidSetB = getRigidSet(b, atomGroups); | |
466 | std::set<int> rigidSetC = getRigidSet(c, atomGroups); | |
# | Line 466 | Line 508 | namespace oopse { | |
508 | std::vector<Bond*>::iterator bondIter; | |
509 | std::vector<Bend*>::iterator bendIter; | |
510 | std::vector<Torsion*>::iterator torsionIter; | |
511 | + | std::vector<Inversion*>::iterator inversionIter; |
512 | Bond* bond; | |
513 | Bend* bend; | |
514 | Torsion* torsion; | |
515 | + | Inversion* inversion; |
516 | int a; | |
517 | int b; | |
518 | int c; | |
# | Line 562 | Line 606 | namespace oopse { | |
606 | */ | |
607 | } | |
608 | ||
609 | + | for (inversion= mol->beginInversion(inversionIter); inversion != NULL; inversion = mol->nextInversion(inversionIter)) { |
610 | + | a = inversion->getAtomA()->getGlobalIndex(); |
611 | + | b = inversion->getAtomB()->getGlobalIndex(); |
612 | + | c = inversion->getAtomC()->getGlobalIndex(); |
613 | + | d = inversion->getAtomD()->getGlobalIndex(); |
614 | + | |
615 | + | std::set<int> rigidSetA = getRigidSet(a, atomGroups); |
616 | + | std::set<int> rigidSetB = getRigidSet(b, atomGroups); |
617 | + | std::set<int> rigidSetC = getRigidSet(c, atomGroups); |
618 | + | std::set<int> rigidSetD = getRigidSet(d, atomGroups); |
619 | + | |
620 | + | exclude_.removePairs(rigidSetA, rigidSetB); |
621 | + | exclude_.removePairs(rigidSetA, rigidSetC); |
622 | + | exclude_.removePairs(rigidSetA, rigidSetD); |
623 | + | exclude_.removePairs(rigidSetB, rigidSetC); |
624 | + | exclude_.removePairs(rigidSetB, rigidSetD); |
625 | + | exclude_.removePairs(rigidSetC, rigidSetD); |
626 | + | |
627 | + | /* |
628 | + | exclude_.removePairs(rigidSetA.begin(), rigidSetA.end(), rigidSetB.begin(), rigidSetB.end()); |
629 | + | exclude_.removePairs(rigidSetA.begin(), rigidSetA.end(), rigidSetC.begin(), rigidSetC.end()); |
630 | + | exclude_.removePairs(rigidSetA.begin(), rigidSetA.end(), rigidSetD.begin(), rigidSetD.end()); |
631 | + | exclude_.removePairs(rigidSetB.begin(), rigidSetB.end(), rigidSetC.begin(), rigidSetC.end()); |
632 | + | exclude_.removePairs(rigidSetB.begin(), rigidSetB.end(), rigidSetD.begin(), rigidSetD.end()); |
633 | + | exclude_.removePairs(rigidSetC.begin(), rigidSetC.end(), rigidSetD.begin(), rigidSetD.end()); |
634 | + | |
635 | + | |
636 | + | exclude_.removePair(a, b); |
637 | + | exclude_.removePair(a, c); |
638 | + | exclude_.removePair(a, d); |
639 | + | exclude_.removePair(b, c); |
640 | + | exclude_.removePair(b, d); |
641 | + | exclude_.removePair(c, d); |
642 | + | */ |
643 | + | } |
644 | + | |
645 | for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { | |
646 | std::vector<Atom*> atoms = rb->getAtoms(); | |
647 | for (int i = 0; i < atoms.size() -1 ; ++i) { |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |