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

Comparing trunk/src/applications/staticProps/GofXyz.cpp (file contents):
Revision 1878 by gezelter, Thu Aug 30 17:18:22 2012 UTC vs.
Revision 1879 by gezelter, Sun Jun 16 15:15:42 2013 UTC

# Line 35 | Line 35
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   */
# Line 45 | Line 45
45   #include "applications/staticProps/GofXyz.hpp"
46   #include "utils/simError.h"
47   #include "primitives/Molecule.hpp"
48 + #include "types/MultipoleAdapter.hpp"
49 +
50   namespace OpenMD {
51  
52    GofXyz::GofXyz(SimInfo* info, const std::string& filename, const std::string& sele1, const std::string& sele2, const std::string& sele3, RealType len, int nrbins)
# Line 104 | Line 106 | namespace OpenMD {
106           sd1 != NULL || sd3 != NULL;
107           sd1 = seleMan1_.nextSelected(i), sd3 = seleMan3_.nextSelected(j)) {
108  
109 <      Vector3d r3 =sd3->getPos();
109 >      Vector3d r3 = sd3->getPos();
110        Vector3d r1 = sd1->getPos();
111        Vector3d v1 =  r3 - r1;
112        if (usePeriodicBoundaryConditions_)
113          info_->getSnapshotManager()->getCurrentSnapshot()->wrapVector(v1);
114 <      Vector3d zaxis = sd1->getElectroFrame().getColumn(2);
114 >
115 >      AtomType* atype1 = static_cast<Atom*>(sd1)->getAtomType();
116 >      MultipoleAdapter ma1 = MultipoleAdapter(atype1);
117 >
118 >      Vector3d zaxis;
119 >      if (ma1.isDipole())
120 >        zaxis = sd1->getDipole();
121 >      else
122 >        zaxis = sd1->getA().transpose() * V3Z;
123 >
124        Vector3d xaxis = cross(v1, zaxis);
125        Vector3d yaxis = cross(zaxis, xaxis);
126  
# Line 140 | Line 151 | namespace OpenMD {
151      
152      Vector3d newR12 = i->second * r12;
153      // x, y and z's possible values range -halfLen_ to halfLen_
154 <    int xbin = int((newR12.x() + halfLen_) / deltaR_);
155 <    int ybin = int((newR12.y() + halfLen_) / deltaR_);
156 <    int zbin = int((newR12.z() + halfLen_) / deltaR_);
154 >    int xbin = int( (newR12.x() + halfLen_) / deltaR_);
155 >    int ybin = int( (newR12.y() + halfLen_) / deltaR_);
156 >    int zbin = int( (newR12.z() + halfLen_) / deltaR_);
157  
158      if (xbin < nRBins_ && xbin >=0 &&
159          ybin < nRBins_ && ybin >= 0 &&

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines