# | Line 33 | Line 33 | |
---|---|---|
33 | * research, please cite the appropriate papers when you publish your | |
34 | * work. Good starting points are: | |
35 | * | |
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). |
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] Kuang & Gezelter, J. Chem. Phys. 133, 164101 (2010). |
40 | > | * [5] Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). |
41 | */ | |
42 | ||
43 | #include "selection/SelectionManager.hpp" | |
# | Line 48 | Line 49 | namespace OpenMD { | |
49 | int nStuntDoubles = info_->getNGlobalAtoms() + info_->getNGlobalRigidBodies(); | |
50 | ||
51 | bsSelection_.resize(nStuntDoubles); | |
52 | < | stuntdoubles_.resize(nStuntDoubles); |
52 | > | stuntdoubles_.resize(nStuntDoubles, NULL); |
53 | ||
54 | SimInfo::MoleculeIterator mi; | |
55 | Molecule* mol; | |
# | Line 56 | Line 57 | namespace OpenMD { | |
57 | Atom* atom; | |
58 | Molecule::RigidBodyIterator rbIter; | |
59 | RigidBody* rb; | |
59 | – | |
60 | ||
61 | < | for (mol = info_->beginMolecule(mi); mol != NULL; mol = info_->nextMolecule(mi)) { |
61 | > | for (mol = info_->beginMolecule(mi); mol != NULL; |
62 | > | mol = info_->nextMolecule(mi)) { |
63 | ||
64 | < | for(atom = mol->beginAtom(ai); atom != NULL; atom = mol->nextAtom(ai)) { |
64 | > | for(atom = mol->beginAtom(ai); atom != NULL; |
65 | > | atom = mol->nextAtom(ai)) { |
66 | stuntdoubles_[atom->getGlobalIndex()] = atom; | |
67 | } | |
68 | < | |
69 | < | for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { |
68 | > | |
69 | > | for (rb = mol->beginRigidBody(rbIter); rb != NULL; |
70 | > | rb = mol->nextRigidBody(rbIter)) { |
71 | stuntdoubles_[rb->getGlobalIndex()] = rb; | |
72 | < | } |
73 | < | |
71 | < | } |
72 | < | |
72 | > | } |
73 | > | } |
74 | } | |
75 | ||
75 | – | |
76 | StuntDouble* SelectionManager::beginSelected(int& i) { | |
77 | i = bsSelection_.firstOnBit(); | |
78 | return i == -1 ? NULL : stuntdoubles_[i]; | |
79 | } | |
80 | + | |
81 | StuntDouble* SelectionManager::nextSelected(int& i) { | |
82 | i = bsSelection_.nextOnBit(i); | |
83 | return i == -1 ? NULL : stuntdoubles_[i]; | |
# | Line 86 | Line 87 | namespace OpenMD { | |
87 | i = bsSelection_.firstOffBit(); | |
88 | return i == -1 ? NULL : stuntdoubles_[i]; | |
89 | } | |
90 | + | |
91 | StuntDouble* SelectionManager::nextUnSelected(int& i) { | |
92 | i = bsSelection_.nextOffBit(i); | |
93 | return i == -1 ? NULL : stuntdoubles_[i]; | |
94 | } | |
95 | ||
96 | < | |
97 | < | SelectionManager operator| (const SelectionManager& sman1, const SelectionManager& sman2) { |
96 | > | SelectionManager operator| (const SelectionManager& sman1, |
97 | > | const SelectionManager& sman2) { |
98 | SelectionManager result(sman1); | |
99 | result |= sman2; | |
100 | return result; | |
101 | } | |
102 | < | SelectionManager operator& (const SelectionManager& sman1, const SelectionManager& sman2) { |
102 | > | |
103 | > | SelectionManager operator& (const SelectionManager& sman1, |
104 | > | const SelectionManager& sman2) { |
105 | SelectionManager result(sman1); | |
106 | result &= sman2; | |
107 | return result; | |
104 | – | |
108 | } | |
109 | < | SelectionManager operator^ (const SelectionManager& sman1, const SelectionManager& sman2) { |
109 | > | |
110 | > | SelectionManager operator^ (const SelectionManager& sman1, |
111 | > | const SelectionManager& sman2) { |
112 | SelectionManager result(sman1); | |
113 | result ^= sman2; | |
114 | return result; | |
110 | – | |
115 | } | |
116 | < | SelectionManager operator-(const SelectionManager& sman1, const SelectionManager& sman2){ |
116 | > | |
117 | > | SelectionManager operator-(const SelectionManager& sman1, |
118 | > | const SelectionManager& sman2){ |
119 | SelectionManager result(sman1); | |
120 | result -= sman2; | |
121 | return result; | |
116 | – | |
122 | } | |
123 | ||
124 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |