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 1442 by gezelter, Mon May 10 17:28:26 2010 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  
# Line 149 | 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 158 | Line 159 | namespace OpenMD {
159        case Token::expressionEnd:
160          break;
161        case Token::all:
162 <        bs = OpenMDBitSet(nStuntDouble);
162 <        bs.setAll();
162 >        bs = allInstruction();
163          stack.push(bs);            
164          break;
165        case Token::none:
# Line 221 | Line 221 | namespace OpenMD {
221      int comparator = instruction.tok;
222      int property = instruction.intValue;
223      float comparisonValue = boost::any_cast<float>(instruction.value);
224    float propertyValue;
224      OpenMDBitSet bs(nStuntDouble);
225      bs.clearAll();
226      
# Line 278 | 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 444 | 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      
# Line 453 | Line 482 | namespace OpenMD {
482      return bs;
483    }
484  
456
457
485    RealType SelectionEvaluator::getCharge(Atom* atom) {
486      RealType charge =0.0;
487      AtomType* atomType = atom->getAtomType();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines