ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/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.
Revision 1390 by gezelter, Wed Nov 25 20:02:06 2009 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
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]  Vardeman & Gezelter, in progress (2009).                        
40   *
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: BOPofR.cpp,v 1.4 2009-11-25 20:01:58 gezelter Exp $
44   *
45   */
46  
# Line 54 | Line 51
51   #include "utils/NumericConstant.hpp"
52  
53  
54 < namespace oopse {
54 > namespace OpenMD {
55  
56    BOPofR::BOPofR(SimInfo* info, const std::string& filename, const std::string& sele, double rCut,
57                   int nbins, RealType len) : StaticAnalyser(info, filename), selectionScript_(sele), evaluator_(info), seleMan_(info){
# Line 76 | Line 73 | namespace oopse {
73      RCount_.resize(nBins_);
74      WofR_.resize(nBins_);
75      QofR_.resize(nBins_);
76 +
77 +        for (int i = 0; i < nBins_; i++){
78 +                RCount_[i] = 0;
79 +                WofR_[i] = 0;
80 +                QofR_[i] = 0;
81 +        }
82          
83      // Make arrays for Wigner3jm
84      double* THRCOF = new double[2*lMax_+1];
# Line 111 | Line 114 | namespace oopse {
114      }
115  
116      delete [] THRCOF;
117 <    THRCOF = NULL;
117 >    THRCOF = NULL;      
118          
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    }
129        
119    }
120    
121    BOPofR::~BOPofR() {
# Line 155 | Line 144 | namespace oopse {
144  
145    
146    void BOPofR::initalizeHistogram() {
147 <    for (int bin = 0; bin < nBins_; bin++) {
148 <      QofR_[bin].resize(lMax_);
149 <      WofR_[bin].resize(lMax_);
150 <      RCount_[bin].resize(lMax_);
151 <      for (int l = 0; l <= lMax_; l++) {
163 <        QofR_[bin][l] = 0;
164 <        WofR_[bin][l] = 0;
165 <                RCount_[bin][l] = 0;
166 <      }
167 <    }
147 >        for (int i = 0; i < nBins_; i++){
148 >                RCount_[i] = 0;
149 >                WofR_[i] = 0;
150 >                QofR_[i] = 0;
151 >        }
152    }
153  
154  
# Line 321 | Line 305 | namespace oopse {
305          }
306  
307          collectHistogram(q_l, w_hat, distCOM);
308 <        if(real(w_hat[6]) < -0.1){
309 <                        std::cout << real(w_hat[6]) << pos << std::endl;
310 <                }
308 >                
309 > //              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]));
310 >
311        }
312      }
313          
# Line 336 | Line 320 | namespace oopse {
320      if ( distCOM < len_){
321        // Figure out where this distance goes...
322        int whichBin = distCOM / deltaR_;
323 <      
324 <      
325 <      for (int l = 0; l <= lMax_; l++) {
326 <        RCount_[whichBin][l]++;
343 <        QofR_[whichBin][l]=q[l];
344 <        WofR_[whichBin][l]=real(what[l]);
323 >      RCount_[whichBin]++;
324 >
325 >      if(real(what[6]) < -0.15){                                
326 >                WofR_[whichBin]++;
327        }
328 <      
328 >          if(q[6] > 0.5){
329 >        QofR_[whichBin]++;
330 >          }
331      }  
332  
333    }
# Line 359 | Line 343 | namespace oopse {
343        for (int i = 0; i < nBins_; ++i) {
344          RealType Rval = (i + 0.5) * deltaR_;              
345          osq << Rval;
346 <        for (int l = 0; l <= lMax_; l++) {
347 <
348 <          osq << "\t" << (RealType)QofR_[i][l]/(RealType)RCount_[i][l];
349 <        }
350 <        osq << "\n";
346 >                if (RCount_[i] == 0){
347 >                        osq << "\t" << 0;
348 >                        osq << "\n";
349 >                }else{
350 >                osq << "\t" << (RealType)QofR_[i]/(RealType)RCount_[i];        
351 >                osq << "\n";
352 >                }
353        }
354  
355        osq.close();
# Line 382 | Line 368 | namespace oopse {
368        for (int i = 0; i < nBins_; ++i) {
369          RealType Rval = deltaR_ * (i + 0.5);              
370          osw << Rval;
371 <        for (int l = 0; l <= lMax_; l++) {
372 <
373 <          osw << "\t" << (RealType)WofR_[i][l]/(RealType)RCount_[i][l];
374 <        }
375 <        osw << "\n";
371 >                if (RCount_[i] == 0){
372 >                        osw << "\t" << 0;
373 >                        osw << "\n";
374 >                }else{
375 >                osw << "\t" << (RealType)WofR_[i]/(RealType)RCount_[i];
376 >                osw << "\n";
377 >                }
378        }
379  
380        osw.close();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines