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

Comparing branches/development/src/applications/staticProps/BondOrderParameter.cpp (file contents):
Revision 1465 by chuckv, Fri Jul 9 23:08:25 2010 UTC vs.
Revision 1794 by gezelter, Thu Sep 6 19:44:06 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$
# 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);
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);
# 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 262 | Line 263 | namespace OpenMD {
263          for (int l = 0; l <= lMax_; l++) {
264            q2[l] = 0.0;
265            for (int m = -l; m <= l; m++){
266 <            q[std::make_pair(l,m)] /= (RealType)nBonds;            
266 >            q[std::make_pair(l,m)] /= (RealType)nBonds;
267              q2[l] += norm(q[std::make_pair(l,m)]);
268            }
269            q_l[l] = sqrt(q2[l] * 4.0 * NumericConstant::PI / (RealType)(2*l + 1));
# Line 282 | Line 283 | namespace OpenMD {
283              }
284            }
285            
286 <          w_hat[l] = w[l] / pow(q2[l], 1.5);
286 >          w_hat[l] = w[l] / pow(q2[l], RealType(1.5));
287          }
288  
289          collectHistogram(q_l, w_hat);
# Line 327 | Line 328 | namespace OpenMD {
328          }
329        }
330        
331 <      W_hat[l] = W[l] / pow(Q2[l], 1.5);
331 >      W_hat[l] = W[l] / pow(Q2[l], RealType(1.5));
332      }
333      
334      writeOrderParameter(Q, W_hat);    
# Line 338 | Line 339 | namespace OpenMD {
339  
340      for (int l = 0; l <= lMax_; l++) {
341        if (q[l] >= MinQ_ && q[l] < MaxQ_) {
342 <        int qbin = (q[l] - MinQ_) / deltaQ_;
342 >        int qbin = int((q[l] - MinQ_) / deltaQ_);
343          Q_histogram_[std::make_pair(qbin,l)] += 1;
344          Qcount_[l]++;      
345        } else {
# Line 352 | Line 353 | namespace OpenMD {
353  
354      for (int l = 0; l <= lMax_; l++) {
355        if (real(what[l]) >= MinW_ && real(what[l]) < MaxW_) {
356 <        int wbin = (real(what[l]) - MinW_) / deltaW_;
356 >        int wbin = int((real(what[l]) - MinW_) / deltaW_);
357          W_histogram_[std::make_pair(wbin,l)] += 1;
358          Wcount_[l]++;      
359        } else {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines