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

Comparing:
trunk/src/applications/staticProps/BOPofR.cpp (file contents), Revision 1128 by chuckv, Wed Apr 11 23:27:20 2007 UTC vs.
branches/development/src/applications/staticProps/BOPofR.cpp (file contents), Revision 1668 by gezelter, Fri Jan 6 19:03:05 2012 UTC

# Line 6 | Line 6
6   * redistribute this software in source and binary code form, provided
7   * that the following conditions are met:
8   *
9 < * 1. Acknowledgement of the program authors must be made in any
10 < *    publication of scientific results based in part on use of the
11 < *    program.  An acceptable form of acknowledgement is citation of
12 < *    the article in which the program was described (Matthew
13 < *    A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher
14 < *    J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented
15 < *    Parallel Simulation Engine for Molecular Dynamics,"
16 < *    J. Comput. Chem. 26, pp. 252-271 (2005))
17 < *
18 < * 2. Redistributions of source code must retain the above copyright
9 > * 1. Redistributions of source code must retain the above copyright
10   *    notice, this list of conditions and the following disclaimer.
11   *
12 < * 3. Redistributions in binary form must reproduce the above copyright
12 > * 2. Redistributions in binary form must reproduce the above copyright
13   *    notice, this list of conditions and the following disclaimer in the
14   *    documentation and/or other materials provided with the
15   *    distribution.
# Line 38 | Line 29
29   * University of Notre Dame has been advised of the possibility of
30   * such damages.
31   *
32 < *  BondOrderParameter.cpp
33 < *  OOPSE-4
34 < *
32 > * SUPPORT OPEN SCIENCE!  If you use OpenMD or its source code in your
33 > * research, please cite the appropriate papers when you publish your
34 > * work.  Good starting points are:
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).          
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: BOPofR.cpp,v 1.1 2007-04-11 23:27:20 chuckv Exp $
43 > *  @version $Id$
44   *
45   */
46  
# Line 52 | 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 namespace oopse {
58
57    BOPofR::BOPofR(SimInfo* info, const std::string& filename, const std::string& sele, double rCut,
58                   int nbins, RealType len) : StaticAnalyser(info, filename), selectionScript_(sele), evaluator_(info), seleMan_(info){
59      
# Line 76 | Line 74 | namespace oopse {
74      RCount_.resize(nBins_);
75      WofR_.resize(nBins_);
76      QofR_.resize(nBins_);
77 +
78 +        for (int i = 0; i < nBins_; i++){
79 +                RCount_[i] = 0;
80 +                WofR_[i] = 0;
81 +                QofR_[i] = 0;
82 +        }
83          
84      // Make arrays for Wigner3jm
85 <    double* THRCOF = new double[2*lMax_+1];
85 >    RealType* THRCOF = new RealType[2*lMax_+1];
86      // Variables for Wigner routine
87 <    double lPass, m1Pass, m2m, m2M;
87 >    RealType lPass, m1Pass, m2m, m2M;
88      int error, mSize;
89      mSize = 2*lMax_+1;
90  
91      for (int l = 0; l <= lMax_; l++) {
92 <      lPass = (double)l;
92 >      lPass = (RealType)l;
93        for (int m1 = -l; m1 <= l; m1++) {
94 <        m1Pass = (double)m1;
94 >        m1Pass = (RealType)m1;
95  
96          std::pair<int,int> lm = std::make_pair(l, m1);
97          
# Line 97 | Line 101 | namespace oopse {
101          }
102  
103          // Get Wigner coefficients
104 <        Wigner3jm(&lPass, &lPass, &lPass,
105 <                  &m1Pass, &m2m, &m2M,
106 <                  THRCOF, &mSize, &error);
104 >        Wigner3jm(lPass, lPass, lPass,
105 >                  m1Pass, m2m, m2M,
106 >                  THRCOF, mSize, error);
107          
108          m2Min[lm] = (int)floor(m2m);
109          m2Max[lm] = (int)floor(m2M);
# Line 111 | Line 115 | namespace oopse {
115      }
116  
117      delete [] THRCOF;
118 <    THRCOF = NULL;
115 <        
116 <        
117 <    for (int bin = 0; bin < nBins_; bin++) {
118 <                QofR_[bin].resize(lMax_ + 1);
119 <                WofR_[bin].resize(lMax_ + 1 );
120 <                RCount_[bin].resize(lMax_ + 1);
121 <                
122 <                for (int l = 0; l <= lMax_; l++) {
123 <                        QofR_[bin][l] = 0.0;
124 <                        WofR_[bin][l] = 0.0;
125 <                        RCount_[bin][l] = 1;
126 <                }
127 <                
128 <    }
118 >    THRCOF = NULL;      
119          
120    }
121    
# Line 155 | Line 145 | namespace oopse {
145  
146    
147    void BOPofR::initalizeHistogram() {
148 <    for (int bin = 0; bin < nBins_; bin++) {
149 <      QofR_[bin].resize(lMax_);
150 <      WofR_[bin].resize(lMax_);
151 <      RCount_[bin].resize(lMax_);
152 <      for (int l = 0; l <= lMax_; l++) {
163 <        QofR_[bin][l] = 0;
164 <        WofR_[bin][l] = 0;
165 <                RCount_[bin][l] = 0;
166 <      }
167 <    }
148 >        for (int i = 0; i < nBins_; i++){
149 >                RCount_[i] = 0;
150 >                WofR_[i] = 0;
151 >                QofR_[i] = 0;
152 >        }
153    }
154  
155  
# Line 317 | Line 302 | namespace oopse {
302              }
303            }
304            
305 <          w_hat[l] = w[l] / pow(q2[l], 1.5);
305 >          w_hat[l] = w[l] / pow(q2[l], RealType(1.5));
306          }
307  
308          collectHistogram(q_l, w_hat, distCOM);
309 <        if(real(w_hat[6]) < -0.1){
310 <                        std::cout << real(w_hat[6]) << pos << std::endl;
311 <                }
309 >                
310 > //              printf( "%s  %18.10g %18.10g %18.10g %18.10g \n", sd->getType().c_str(),pos[0],pos[1],pos[2],real(w_hat[6]));
311 >
312        }
313      }
314          
# Line 336 | Line 321 | namespace oopse {
321      if ( distCOM < len_){
322        // Figure out where this distance goes...
323        int whichBin = distCOM / deltaR_;
324 <      
325 <      
326 <      for (int l = 0; l <= lMax_; l++) {
327 <        RCount_[whichBin][l]++;
343 <        QofR_[whichBin][l]=q[l];
344 <        WofR_[whichBin][l]=real(what[l]);
324 >      RCount_[whichBin]++;
325 >
326 >      if(real(what[6]) < -0.15){                                
327 >                WofR_[whichBin]++;
328        }
329 <      
329 >          if(q[6] > 0.5){
330 >        QofR_[whichBin]++;
331 >          }
332      }  
333  
334    }
# Line 359 | Line 344 | namespace oopse {
344        for (int i = 0; i < nBins_; ++i) {
345          RealType Rval = (i + 0.5) * deltaR_;              
346          osq << Rval;
347 <        for (int l = 0; l <= lMax_; l++) {
348 <
349 <          osq << "\t" << (RealType)QofR_[i][l]/(RealType)RCount_[i][l];
350 <        }
351 <        osq << "\n";
347 >                if (RCount_[i] == 0){
348 >                        osq << "\t" << 0;
349 >                        osq << "\n";
350 >                }else{
351 >                osq << "\t" << (RealType)QofR_[i]/(RealType)RCount_[i];        
352 >                osq << "\n";
353 >                }
354        }
355  
356        osq.close();
# Line 382 | Line 369 | namespace oopse {
369        for (int i = 0; i < nBins_; ++i) {
370          RealType Rval = deltaR_ * (i + 0.5);              
371          osw << Rval;
372 <        for (int l = 0; l <= lMax_; l++) {
373 <
374 <          osw << "\t" << (RealType)WofR_[i][l]/(RealType)RCount_[i][l];
375 <        }
376 <        osw << "\n";
372 >                if (RCount_[i] == 0){
373 >                        osw << "\t" << 0;
374 >                        osw << "\n";
375 >                }else{
376 >                osw << "\t" << (RealType)WofR_[i]/(RealType)RCount_[i];
377 >                osw << "\n";
378 >                }
379        }
380  
381        osw.close();

Comparing:
trunk/src/applications/staticProps/BOPofR.cpp (property svn:keywords), Revision 1128 by chuckv, Wed Apr 11 23:27:20 2007 UTC vs.
branches/development/src/applications/staticProps/BOPofR.cpp (property svn:keywords), Revision 1668 by gezelter, Fri Jan 6 19:03:05 2012 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines