| 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); |