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

Comparing trunk/src/applications/staticProps/BondOrderParameter.cpp (file contents):
Revision 1390 by gezelter, Wed Nov 25 20:02:06 2009 UTC vs.
Revision 1785 by jmichalk, Wed Aug 22 18:43:27 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).                        
40 < *
39 > * [4] Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40 > * [4] , Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011). *
41   *  Created by J. Daniel Gezelter on 09/26/06.
42   *  @author  J. Daniel Gezelter
43 < *  @version $Id: BondOrderParameter.cpp,v 1.23 2009-11-25 20:01:59 gezelter Exp $
43 > *  @version $Id$
44   *
45   */
46  
# Line 49 | Line 49
49   #include "io/DumpReader.hpp"
50   #include "primitives/Molecule.hpp"
51   #include "utils/NumericConstant.hpp"
52 + #include "math/Wigner3jm.hpp"
53  
54 + using namespace MATPACK;
55   namespace OpenMD {
56  
57    BondOrderParameter::BondOrderParameter(SimInfo* info,
# Line 85 | Line 87 | namespace OpenMD {
87      deltaW_ = (MaxW_ - MinW_) / nbins;
88  
89      // Make arrays for Wigner3jm
90 <    double* THRCOF = new double[2*lMax_+1];
90 >    RealType* THRCOF = new RealType[2*lMax_+1];
91      // Variables for Wigner routine
92 <    double lPass, m1Pass, m2m, m2M;
92 >    RealType lPass, m1Pass, m2m, m2M;
93      int error, mSize;
94      mSize = 2*lMax_+1;
95  
96      for (int l = 0; l <= lMax_; l++) {
97 <      lPass = (double)l;
97 >      lPass = (RealType)l;
98        for (int m1 = -l; m1 <= l; m1++) {
99 <        m1Pass = (double)m1;
99 >        m1Pass = (RealType)m1;
100  
101          std::pair<int,int> lm = std::make_pair(l, m1);
102          
# Line 104 | Line 106 | namespace OpenMD {
106          }
107  
108          // Get Wigner coefficients
109 <        Wigner3jm(&lPass, &lPass, &lPass,
110 <                  &m1Pass, &m2m, &m2M,
111 <                  THRCOF, &mSize, &error);
112 <        
109 >        Wigner3jm(lPass, lPass, lPass,
110 >                  m1Pass, m2m, m2M,
111 >                  THRCOF, mSize, error);
112 >      
113          m2Min[lm] = (int)floor(m2m);
114          m2Max[lm] = (int)floor(m2M);
115          
# Line 133 | Line 135 | namespace OpenMD {
135      m2Max.clear();
136    }
137    
138 <  void BondOrderParameter::initalizeHistogram() {
138 >  void BondOrderParameter::initializeHistogram() {
139      for (int bin = 0; bin < nBins_; bin++) {
140        for (int l = 0; l <= lMax_; l++) {
141          Q_histogram_[std::make_pair(bin,l)] = 0;
# Line 155 | Line 157 | namespace OpenMD {
157      RealType costheta;
158      RealType phi;
159      RealType r;
158    RealType dist;
160      std::map<std::pair<int,int>,ComplexType> q;
161      std::vector<RealType> q_l;
162      std::vector<RealType> q2;
# Line 168 | Line 169 | namespace OpenMD {
169      std::vector<ComplexType> W_hat;
170      int nBonds, Nbonds;
171      SphericalHarmonic sphericalHarmonic;
172 <    int i, j;
172 >    int i;
173  
174      DumpReader reader(info_, dumpFilename_);    
175      int nFrames = reader.getNFrames();
# Line 250 | Line 251 | namespace OpenMD {
251                    for(int m = -l; m <= l; m++){
252                      sphericalHarmonic.setM(m);
253                      q[std::make_pair(l,m)] += sphericalHarmonic.getValueAt(costheta, phi);
254 +
255                    }
256                  }
257                  nBonds++;
# Line 262 | Line 264 | namespace OpenMD {
264          for (int l = 0; l <= lMax_; l++) {
265            q2[l] = 0.0;
266            for (int m = -l; m <= l; m++){
267 <            q[std::make_pair(l,m)] /= (RealType)nBonds;            
267 >            q[std::make_pair(l,m)] /= (RealType)nBonds;
268 >
269              q2[l] += norm(q[std::make_pair(l,m)]);
270            }
271            q_l[l] = sqrt(q2[l] * 4.0 * NumericConstant::PI / (RealType)(2*l + 1));
# Line 282 | Line 285 | namespace OpenMD {
285              }
286            }
287            
288 <          w_hat[l] = w[l] / pow(q2[l], 1.5);
288 >          w_hat[l] = w[l] / pow(q2[l], RealType(1.5));
289          }
290  
291          collectHistogram(q_l, w_hat);
# Line 327 | Line 330 | namespace OpenMD {
330          }
331        }
332        
333 <      W_hat[l] = W[l] / pow(Q2[l], 1.5);
333 >      W_hat[l] = W[l] / pow(Q2[l], RealType(1.5));
334      }
335      
336      writeOrderParameter(Q, W_hat);    

Comparing trunk/src/applications/staticProps/BondOrderParameter.cpp (property svn:keywords):
Revision 1390 by gezelter, Wed Nov 25 20:02:06 2009 UTC vs.
Revision 1785 by jmichalk, Wed Aug 22 18:43:27 2012 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines