41 |
|
*/ |
42 |
|
|
43 |
|
#include "selection/SelectionManager.hpp" |
44 |
– |
#include "primitives/Molecule.hpp" |
44 |
|
#include "brains/SimInfo.hpp" |
45 |
|
namespace OpenMD { |
46 |
|
SelectionManager::SelectionManager(SimInfo* info) : info_(info){ |
49 |
|
nObjects_.push_back(info_->getNGlobalBends()); |
50 |
|
nObjects_.push_back(info_->getNGlobalTorsions()); |
51 |
|
nObjects_.push_back(info_->getNGlobalInversions()); |
52 |
+ |
nObjects_.push_back(info_->getNGlobalMolecules()); |
53 |
|
|
54 |
|
stuntdoubles_.resize(nObjects_[STUNTDOUBLE]); |
55 |
|
bonds_.resize(nObjects_[BOND]); |
56 |
|
bends_.resize(nObjects_[BEND]); |
57 |
|
torsions_.resize(nObjects_[TORSION]); |
58 |
|
inversions_.resize(nObjects_[INVERSION]); |
59 |
+ |
molecules_.resize(nObjects_[MOLECULE]); |
60 |
|
|
61 |
|
SimInfo::MoleculeIterator mi; |
62 |
|
Molecule::AtomIterator ai; |
76 |
|
|
77 |
|
for (mol = info_->beginMolecule(mi); mol != NULL; |
78 |
|
mol = info_->nextMolecule(mi)) { |
79 |
+ |
molecules_[mol->getGlobalIndex()] = mol; |
80 |
|
|
81 |
|
for(atom = mol->beginAtom(ai); atom != NULL; |
82 |
|
atom = mol->nextAtom(ai)) { |
204 |
|
i = ss_.bitsets_[INVERSION].nextOffBit(i); |
205 |
|
return i == -1 ? NULL : inversions_[i]; |
206 |
|
} |
207 |
+ |
|
208 |
+ |
Molecule* SelectionManager::beginSelectedMolecule(int& i) { |
209 |
+ |
i = ss_.bitsets_[MOLECULE].firstOnBit(); |
210 |
+ |
return i == -1 ? NULL : molecules_[i]; |
211 |
+ |
} |
212 |
|
|
213 |
+ |
Molecule* SelectionManager::nextSelectedMolecule(int& i) { |
214 |
+ |
i = ss_.bitsets_[MOLECULE].nextOnBit(i); |
215 |
+ |
return i == -1 ? NULL : molecules_[i]; |
216 |
+ |
} |
217 |
+ |
|
218 |
+ |
Molecule* SelectionManager::beginUnselectedMolecule(int& i){ |
219 |
+ |
i = ss_.bitsets_[MOLECULE].firstOffBit(); |
220 |
+ |
return i == -1 ? NULL : molecules_[i]; |
221 |
+ |
} |
222 |
+ |
|
223 |
+ |
Molecule* SelectionManager::nextUnSelectedMolecule(int& i) { |
224 |
+ |
i = ss_.bitsets_[MOLECULE].nextOffBit(i); |
225 |
+ |
return i == -1 ? NULL : molecules_[i]; |
226 |
+ |
} |
227 |
+ |
|
228 |
|
SelectionManager operator| (const SelectionManager& sman1, |
229 |
|
const SelectionManager& sman2) { |
230 |
|
SelectionManager result(sman1); |