# | Line 35 | Line 35 | |
---|---|---|
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). |
38 | > | * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 234107 (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 | #include "selection/NameFinder.hpp" | |
43 | #include "utils/wildcards.hpp" | |
# | Line 53 | Line 54 | namespace OpenMD { | |
54 | children.clear(); | |
55 | } | |
56 | ||
56 | – | |
57 | NameFinder::NameFinder(SimInfo* info) : info_(info), root_(NULL){ | |
58 | nStuntDouble_ = info_->getNGlobalAtoms() + info_->getNGlobalRigidBodies(); | |
59 | loadNames(); | |
60 | } | |
61 | ||
62 | – | |
62 | NameFinder::~NameFinder(){ | |
63 | delete root_; | |
64 | } | |
65 | ||
66 | void NameFinder::loadNames() { | |
67 | ||
69 | – | std::map<std::string, TreeNode*>::iterator foundIter; |
68 | SimInfo::MoleculeIterator mi; | |
69 | Molecule* mol; | |
70 | Molecule::AtomIterator ai; | |
# | Line 78 | Line 76 | namespace OpenMD { | |
76 | root_->bs.resize(nStuntDouble_); | |
77 | root_->bs.setAll(); // | |
78 | ||
79 | < | for (mol = info_->beginMolecule(mi); mol != NULL; mol = info_->nextMolecule(mi)) { |
79 | > | for (mol = info_->beginMolecule(mi); mol != NULL; |
80 | > | mol = info_->nextMolecule(mi)) { |
81 | ||
82 | std::string molName = mol->getMoleculeName(); | |
83 | TreeNode* currentMolNode = createNode(root_, molName); | |
# | Line 91 | Line 90 | namespace OpenMD { | |
90 | currentAtomNode->bs.setBitOn(atom->getGlobalIndex()); | |
91 | } | |
92 | ||
93 | < | for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { |
93 | > | for (rb = mol->beginRigidBody(rbIter); rb != NULL; |
94 | > | rb = mol->nextRigidBody(rbIter)) { |
95 | std::string rbName = rb->getType(); | |
96 | TreeNode* currentRbNode = createNode(currentMolNode, rbName); | |
97 | ||
# | Line 105 | Line 105 | namespace OpenMD { | |
105 | ||
106 | currentRbAtomNode->bs.setBitOn(atom->getGlobalIndex()); | |
107 | } | |
108 | – | |
108 | } | |
109 | < | |
111 | < | } |
112 | < | |
109 | > | } |
110 | } | |
111 | ||
112 | TreeNode* NameFinder::createNode(TreeNode* parent, const std::string& name) { | |
# | Line 225 | Line 222 | namespace OpenMD { | |
222 | } | |
223 | ||
224 | bool NameFinder::isMatched(const std::string& str, const std::string& wildcard) { | |
225 | < | return Wildcard::wildcardfit (wildcard.c_str(), str.c_str()); |
225 | > | return Wildcard::wildcardfit(wildcard.c_str(), str.c_str()) > 0 ? true : false; |
226 | } | |
227 | ||
228 | ||
229 | void NameFinder::matchInternalIndex(const std::string& name, int internalIndex, OpenMDBitSet& bs){ | |
230 | ||
234 | – | std::map<std::string, TreeNode*>::iterator foundIter; |
231 | SimInfo::MoleculeIterator mi; | |
232 | Molecule* mol; | |
233 | ||
234 | < | for (mol = info_->beginMolecule(mi); mol != NULL; mol = info_->nextMolecule(mi)) { |
234 | > | for (mol = info_->beginMolecule(mi); mol != NULL; |
235 | > | mol = info_->nextMolecule(mi)) { |
236 | ||
237 | if (isMatched(mol->getMoleculeName(), name) ) { | |
238 | int natoms = mol->getNAtoms(); | |
# | Line 249 | Line 246 | namespace OpenMD { | |
246 | bs.setBitOn(mol->getRigidBodyAt(internalIndex - natoms)->getGlobalIndex()); | |
247 | } | |
248 | } | |
249 | < | |
253 | < | } |
254 | < | |
249 | > | } |
250 | } | |
251 | ||
252 | < | bool NameFinder::isInteger(const std::string str) { |
253 | < | for(int i =0; i < str.size(); ++i){ |
252 | > | bool NameFinder::isInteger(const std::string &str) { |
253 | > | for(unsigned int i = 0; i < str.size(); ++i){ |
254 | if (!std::isdigit(str[i])) { | |
255 | return false; | |
256 | } | |
257 | } | |
263 | – | |
258 | return true; | |
259 | } | |
266 | – | |
260 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |