ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/selection/SelectionEvaluator.cpp
(Generate patch)

Comparing trunk/src/selection/SelectionEvaluator.cpp (file contents):
Revision 1390 by gezelter, Wed Nov 25 20:02:06 2009 UTC vs.
Revision 1801 by gezelter, Mon Oct 1 18:21:15 2012 UTC

# 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  
43   #include <stack>
# Line 45 | Line 46
46   #include "primitives/DirectionalAtom.hpp"
47   #include "primitives/RigidBody.hpp"
48   #include "primitives/Molecule.hpp"
49 < #include "io/basic_ifstrstream.hpp"
49 > #include "io/ifstrstream.hpp"
50  
51   namespace OpenMD {
52  
53  
54    SelectionEvaluator::SelectionEvaluator(SimInfo* si)
55 <    : info(si), nameFinder(info), distanceFinder(info), indexFinder(info),
55 >    : info(si), nameFinder(info), distanceFinder(info), hullFinder(info),
56 >      indexFinder(info),
57        isLoaded_(false){    
58        nStuntDouble = info->getNGlobalAtoms() + info->getNGlobalRigidBodies();
59      }            
# Line 148 | Line 150 | namespace OpenMD {
150      OpenMDBitSet bs;
151      std::stack<OpenMDBitSet> stack;
152    
153 <    for (int pc = pcStart; pc < code.size(); ++pc) {
153 >    for (unsigned int pc = pcStart; pc < code.size(); ++pc) {
154        Token instruction = code[pc];
155  
156        switch (instruction.tok) {
# Line 157 | Line 159 | namespace OpenMD {
159        case Token::expressionEnd:
160          break;
161        case Token::all:
162 <        bs = OpenMDBitSet(nStuntDouble);
161 <        bs.setAll();
162 >        bs = allInstruction();
163          stack.push(bs);            
164          break;
165        case Token::none:
# Line 181 | Line 182 | namespace OpenMD {
182        case Token::within:
183          withinInstruction(instruction, stack.top());
184          break;
185 +      case Token::hull:
186 +        stack.push(hull());
187 +        break;
188          //case Token::selected:
189          //  stack.push(getSelectionSet());
190          //  break;
# Line 217 | Line 221 | namespace OpenMD {
221      int comparator = instruction.tok;
222      int property = instruction.intValue;
223      float comparisonValue = boost::any_cast<float>(instruction.value);
220    float propertyValue;
224      OpenMDBitSet bs(nStuntDouble);
225      bs.clearAll();
226      
# Line 274 | Line 277 | namespace OpenMD {
277      case Token::z:
278        propertyValue = sd->getPos().z();
279        break;
280 +    case Token::r:
281 +      propertyValue = sd->getPos().length();
282 +      break;
283      default:
284        unrecognizedAtomProperty(property);
285      }
# Line 440 | Line 446 | namespace OpenMD {
446      return bs;
447    }
448  
449 +  OpenMDBitSet SelectionEvaluator::allInstruction() {
450 +    OpenMDBitSet bs(nStuntDouble);
451  
452 +    SimInfo::MoleculeIterator mi;
453 +    Molecule* mol;
454 +    Molecule::AtomIterator ai;
455 +    Atom* atom;
456 +    Molecule::RigidBodyIterator rbIter;
457 +    RigidBody* rb;
458 +
459 +    // Doing the loop insures that we're actually on this processor.
460 +
461 +    for (mol = info->beginMolecule(mi); mol != NULL;
462 +         mol = info->nextMolecule(mi)) {
463 +
464 +      for(atom = mol->beginAtom(ai); atom != NULL; atom = mol->nextAtom(ai)) {
465 +        bs.setBitOn(atom->getGlobalIndex());
466 +      }
467 +    
468 +      for (rb = mol->beginRigidBody(rbIter); rb != NULL;
469 +           rb = mol->nextRigidBody(rbIter)) {
470 +        bs.setBitOn(rb->getGlobalIndex());
471 +      }
472 +    }
473 +
474 +    return bs;
475 +  }
476 +
477 +  OpenMDBitSet SelectionEvaluator::hull() {
478 +    OpenMDBitSet bs(nStuntDouble);
479 +    
480 +    bs = hullFinder.findHull();
481 +    
482 +    return bs;
483 +  }
484 +
485    RealType SelectionEvaluator::getCharge(Atom* atom) {
486      RealType charge =0.0;
487      AtomType* atomType = atom->getAtomType();

Comparing trunk/src/selection/SelectionEvaluator.cpp (property svn:keywords):
Revision 1390 by gezelter, Wed Nov 25 20:02:06 2009 UTC vs.
Revision 1801 by gezelter, Mon Oct 1 18:21:15 2012 UTC

# Line 0 | Line 1
1 + Author Id Revision Date

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines