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). |
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 |
|
*/ |
56 |
|
|
57 |
|
SelectionEvaluator::SelectionEvaluator(SimInfo* si) |
58 |
|
: info(si), nameFinder(info), distanceFinder(info), hullFinder(info), |
59 |
< |
indexFinder(info), |
59 |
> |
indexFinder(info), hasSurfaceArea_(false), |
60 |
|
isLoaded_(false){ |
61 |
|
nStuntDouble = info->getNGlobalAtoms() + info->getNGlobalRigidBodies(); |
62 |
|
} |
376 |
|
int property, int comparator, |
377 |
|
float comparisonValue) { |
378 |
|
RealType propertyValue = 0.0; |
379 |
+ |
Vector3d pos; |
380 |
|
switch (property) { |
381 |
|
case Token::mass: |
382 |
|
propertyValue = sd->getMass(); |
403 |
|
case Token::z: |
404 |
|
propertyValue = sd->getPos().z(); |
405 |
|
break; |
406 |
+ |
case Token::wrappedX: |
407 |
+ |
pos = sd->getPos(); |
408 |
+ |
info->getSnapshotManager()->getCurrentSnapshot()->wrapVector(pos); |
409 |
+ |
propertyValue = pos.x(); |
410 |
+ |
break; |
411 |
+ |
case Token::wrappedY: |
412 |
+ |
pos = sd->getPos(); |
413 |
+ |
info->getSnapshotManager()->getCurrentSnapshot()->wrapVector(pos); |
414 |
+ |
propertyValue = pos.y(); |
415 |
+ |
break; |
416 |
+ |
case Token::wrappedZ: |
417 |
+ |
pos = sd->getPos(); |
418 |
+ |
info->getSnapshotManager()->getCurrentSnapshot()->wrapVector(pos); |
419 |
+ |
propertyValue = pos.z(); |
420 |
+ |
break; |
421 |
|
case Token::r: |
422 |
|
propertyValue = sd->getPos().length(); |
423 |
|
break; |
456 |
|
int property, int comparator, |
457 |
|
float comparisonValue, int frame) { |
458 |
|
RealType propertyValue = 0.0; |
459 |
+ |
Vector3d pos; |
460 |
|
switch (property) { |
461 |
|
case Token::mass: |
462 |
|
propertyValue = sd->getMass(); |
483 |
|
case Token::z: |
484 |
|
propertyValue = sd->getPos(frame).z(); |
485 |
|
break; |
486 |
+ |
case Token::wrappedX: |
487 |
+ |
pos = sd->getPos(frame); |
488 |
+ |
info->getSnapshotManager()->getSnapshot(frame)->wrapVector(pos); |
489 |
+ |
propertyValue = pos.x(); |
490 |
+ |
break; |
491 |
+ |
case Token::wrappedY: |
492 |
+ |
pos = sd->getPos(frame); |
493 |
+ |
info->getSnapshotManager()->getSnapshot(frame)->wrapVector(pos); |
494 |
+ |
propertyValue = pos.y(); |
495 |
+ |
break; |
496 |
+ |
case Token::wrappedZ: |
497 |
+ |
pos = sd->getPos(frame); |
498 |
+ |
info->getSnapshotManager()->getSnapshot(frame)->wrapVector(pos); |
499 |
+ |
propertyValue = pos.z(); |
500 |
+ |
break; |
501 |
+ |
|
502 |
|
case Token::r: |
503 |
|
propertyValue = sd->getPos(frame).length(); |
504 |
|
break; |
730 |
|
OpenMDBitSet bs(nStuntDouble); |
731 |
|
|
732 |
|
bs = hullFinder.findHull(); |
733 |
< |
|
733 |
> |
surfaceArea_ = hullFinder.getSurfaceArea(); |
734 |
> |
hasSurfaceArea_ = true; |
735 |
|
return bs; |
736 |
|
} |
737 |
|
|
740 |
|
OpenMDBitSet bs(nStuntDouble); |
741 |
|
|
742 |
|
bs = hullFinder.findHull(frame); |
743 |
< |
|
743 |
> |
|
744 |
|
return bs; |
745 |
|
} |
746 |
|
|