# | Line 36 | Line 36 | |
---|---|---|
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). |
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 | } | |
# | Line 78 | Line 77 | namespace OpenMD { | |
77 | root_->bs.resize(nStuntDouble_); | |
78 | root_->bs.setAll(); // | |
79 | ||
80 | < | for (mol = info_->beginMolecule(mi); mol != NULL; mol = info_->nextMolecule(mi)) { |
80 | > | for (mol = info_->beginMolecule(mi); mol != NULL; |
81 | > | mol = info_->nextMolecule(mi)) { |
82 | ||
83 | std::string molName = mol->getMoleculeName(); | |
84 | TreeNode* currentMolNode = createNode(root_, molName); | |
# | Line 91 | Line 91 | namespace OpenMD { | |
91 | currentAtomNode->bs.setBitOn(atom->getGlobalIndex()); | |
92 | } | |
93 | ||
94 | < | for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) { |
94 | > | for (rb = mol->beginRigidBody(rbIter); rb != NULL; |
95 | > | rb = mol->nextRigidBody(rbIter)) { |
96 | std::string rbName = rb->getType(); | |
97 | TreeNode* currentRbNode = createNode(currentMolNode, rbName); | |
98 | ||
# | Line 105 | Line 106 | namespace OpenMD { | |
106 | ||
107 | currentRbAtomNode->bs.setBitOn(atom->getGlobalIndex()); | |
108 | } | |
108 | – | |
109 | } | |
110 | < | |
111 | < | } |
112 | < | |
110 | > | } |
111 | } | |
112 | ||
113 | TreeNode* NameFinder::createNode(TreeNode* parent, const std::string& name) { | |
# | Line 225 | Line 223 | namespace OpenMD { | |
223 | } | |
224 | ||
225 | bool NameFinder::isMatched(const std::string& str, const std::string& wildcard) { | |
226 | < | return Wildcard::wildcardfit (wildcard.c_str(), str.c_str()); |
226 | > | return Wildcard::wildcardfit(wildcard.c_str(), str.c_str()) > 0 ? true : false; |
227 | } | |
228 | ||
229 | ||
# | Line 235 | Line 233 | namespace OpenMD { | |
233 | SimInfo::MoleculeIterator mi; | |
234 | Molecule* mol; | |
235 | ||
236 | < | for (mol = info_->beginMolecule(mi); mol != NULL; mol = info_->nextMolecule(mi)) { |
236 | > | for (mol = info_->beginMolecule(mi); mol != NULL; |
237 | > | mol = info_->nextMolecule(mi)) { |
238 | ||
239 | if (isMatched(mol->getMoleculeName(), name) ) { | |
240 | int natoms = mol->getNAtoms(); | |
# | Line 249 | Line 248 | namespace OpenMD { | |
248 | bs.setBitOn(mol->getRigidBodyAt(internalIndex - natoms)->getGlobalIndex()); | |
249 | } | |
250 | } | |
251 | < | |
253 | < | } |
254 | < | |
251 | > | } |
252 | } | |
253 | ||
254 | bool NameFinder::isInteger(const std::string str) { | |
255 | < | for(int i =0; i < str.size(); ++i){ |
255 | > | for(unsigned int i = 0; i < str.size(); ++i){ |
256 | if (!std::isdigit(str[i])) { | |
257 | return false; | |
258 | } | |
259 | } | |
263 | – | |
260 | return true; | |
261 | } | |
266 | – | |
262 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |