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

Comparing trunk/src/applications/staticProps/P2OrderParameter.cpp (file contents):
Revision 1542 by gezelter, Thu Mar 3 20:32:49 2011 UTC vs.
Revision 1782 by gezelter, Wed Aug 22 02:28:28 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 "applications/staticProps/P2OrderParameter.hpp"
# Line 61 | Line 62 | namespace OpenMD {
62      if (!evaluator1_.isDynamic()) {
63        seleMan1_.setSelectionSet(evaluator1_.evaluate());
64      }
64    
65    }
66  
67    P2OrderParameter::P2OrderParameter(SimInfo* info, const string& filename,
# Line 122 | Line 122 | namespace OpenMD {
122      SimInfo::MoleculeIterator mi;
123      Molecule::RigidBodyIterator rbIter;
124      StuntDouble* sd;
125 <    int i;
126 <
125 >    int ii;
126    
127      DumpReader reader(info_, dumpFilename_);    
128      int nFrames = reader.getNFrames();
# Line 131 | Line 130 | namespace OpenMD {
130      for (int i = 0; i < nFrames; i += step_) {
131        reader.readFrame(i);
132        currentSnapshot_ = info_->getSnapshotManager()->getCurrentSnapshot();
133 <
133 >      
134        for (mol = info_->beginMolecule(mi); mol != NULL;
135             mol = info_->nextMolecule(mi)) {
136          //change the positions of atoms which belong to the rigidbodies
# Line 148 | Line 147 | namespace OpenMD {
147          if  (evaluator1_.isDynamic())
148            seleMan1_.setSelectionSet(evaluator1_.evaluate());
149          
150 <        for (sd = seleMan1_.beginSelected(i); sd != NULL;
151 <             sd = seleMan1_.nextSelected(i)) {
150 >        for (sd = seleMan1_.beginSelected(ii); sd != NULL;
151 >             sd = seleMan1_.nextSelected(ii)) {
152            if (sd->isDirectional()) {
153              Vector3d vec = sd->getA().getColumn(2);
154              vec.normalize();
# Line 173 | Line 172 | namespace OpenMD {
172          orderTensor /= sdPairs_.size();
173        }
174        
175 +
176        orderTensor -= (RealType)(1.0/3.0) * Mat3x3d::identity();  
177        
178        Vector3d eigenvalues;
179        Mat3x3d eigenvectors;    
180 +
181        Mat3x3d::diagonalize(orderTensor, eigenvalues, eigenvectors);
182        
183        int which;
# Line 196 | Line 197 | namespace OpenMD {
197        }  
198  
199        RealType angle = 0.0;
199
200        
201        if (doVect_) {
202 <        for (sd = seleMan1_.beginSelected(i); sd != NULL;
203 <             sd = seleMan1_.nextSelected(i)) {
202 >        for (sd = seleMan1_.beginSelected(ii); sd != NULL;
203 >             sd = seleMan1_.nextSelected(ii)) {
204            if (sd->isDirectional()) {
205              Vector3d vec = sd->getA().getColumn(2);
206              vec.normalize();
# Line 214 | Line 214 | namespace OpenMD {
214            Vector3d vec = j->first->getPos() - j->second->getPos();
215            if (usePeriodicBoundaryConditions_)
216              currentSnapshot_->wrapVector(vec);
217 <          vec.normalize();
218 <          
217 >          vec.normalize();          
218            angle += acos(dot(vec, director)) ;
219          }
220          angle = angle / (sdPairs_.size() * NumericConstant::PI) * 180.0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines