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

Comparing trunk/src/applications/staticProps/GofRZ.cpp (file contents):
Revision 1441 by gezelter, Thu Apr 29 14:48:10 2010 UTC vs.
Revision 1796 by gezelter, Mon Sep 10 18:38:44 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).                        
39 > * [4]  Kuang & Gezelter,  J. Chem. Phys. 133, 164101 (2010).
40 > * [5]  Vardeman, Stocker & Gezelter, J. Chem. Theory Comput. 7, 834 (2011).
41   */
42  
43   #include <algorithm>
# Line 47 | Line 48 | namespace OpenMD {
48   namespace OpenMD {
49  
50    GofRZ::GofRZ(SimInfo* info, const std::string& filename, const std::string& sele1,
51 <                       const std::string& sele2, RealType len, int nrbins, int nZBins)
52 <    : RadialDistrFunc(info, filename, sele1, sele2), len_(len), nRBins_(nrbins), nZBins_(nZBins){
51 >               const std::string& sele2, RealType len, RealType zlen, int nrbins, int nZBins)
52 >    : RadialDistrFunc(info, filename, sele1, sele2), len_(len), zLen_(zlen), nRBins_(nrbins), nZBins_(nZBins){
53  
54 <      setOutputName(getPrefix(filename) + ".gofrz");
54 >    setOutputName(getPrefix(filename) + ".gofrz");
55  
56 <      deltaR_ = len_ / (double) nRBins_;
57 <      deltaZ_ = len_ / (double)nZBins_;    
57 <      histogram_.resize(nRBins_);
58 <      avgGofr_.resize(nRBins_);
59 <      for (int i = 0 ; i < nRBins_; ++i) {
60 <        histogram_[i].resize(nZBins_);
61 <        avgGofr_[i].resize(nZBins_);
62 <      }
63 <    }
56 >    deltaR_ = len_ / (double) nRBins_;
57 >    deltaZ_ = zLen_ / (double)nZBins_;    // for solvated_NVT.md4
58  
59 +    histogram_.resize(nRBins_);
60 +    avgGofr_.resize(nRBins_);
61 +    for (int i = 0 ; i < nRBins_; ++i) {
62 +      histogram_[i].resize(nZBins_);
63 +      avgGofr_[i].resize(nZBins_);
64 +    }
65 +  }
66  
67    void GofRZ::preProcess() {
68 <    for (int i = 0; i < avgGofr_.size(); ++i) {
68 >    for (unsigned int i = 0; i < avgGofr_.size(); ++i) {
69        std::fill(avgGofr_[i].begin(), avgGofr_[i].end(), 0);
70      }
71    }
72  
73 <  void GofRZ::initalizeHistogram() {
73 >  void GofRZ::initializeHistogram() {
74      npairs_ = 0;
75 <    for (int i = 0; i < histogram_.size(); ++i){
75 >    for (unsigned int i = 0; i < histogram_.size(); ++i){
76        std::fill(histogram_[i].begin(), histogram_[i].end(), 0);
77      }
78    }
# Line 79 | Line 80 | namespace OpenMD {
80    void GofRZ::processHistogram() {
81      int nPairs = getNPairs();
82      RealType volume = info_->getSnapshotManager()->getCurrentSnapshot()->getVolume();
83 <    RealType pairDensity = nPairs / volume;
83 >    RealType pairDensity = nPairs / volume * 2.0;
84  
85 <    for(int i = 0 ; i < histogram_.size(); ++i){
85 >    for(unsigned int i = 0 ; i < histogram_.size(); ++i){
86  
87        RealType rLower = i * deltaR_;
88        RealType rUpper = rLower + deltaR_;
89        RealType volSlice = NumericConstant::PI * deltaZ_ * (( rUpper * rUpper ) - ( rLower * rLower ));
90        RealType nIdeal = volSlice * pairDensity;
91  
92 <      for (int j = 0; j < histogram_[i].size(); ++j){
93 <        avgGofr_[i][j] += histogram_[i][j] / nIdeal;    
92 >      for (unsigned int j = 0; j < histogram_[i].size(); ++j){
93 >        avgGofr_[i][j] += histogram_[i][j] / nIdeal;    
94        }
95      }
96  
# Line 108 | Line 109 | namespace OpenMD {
109  
110      RealType distance = sqrt(pow(r12.x(), 2) + pow(r12.y(), 2));
111  
112 <    int whichRBin = distance / deltaR_;
112 >    int whichRBin = int(distance / deltaR_);
113  
114      if (distance <= len_) {
115      
116 <      RealType Z = abs(r12.z());
116 >      RealType Z = fabs(r12.z());
117  
118 <      if (Z <= len_) {
119 <        int whichZBin = Z / deltaZ_;
118 >      if (Z <= zLen_) {
119 >        int whichZBin = int(Z / deltaZ_);
120 >              
121          ++histogram_[whichRBin][whichZBin];        
122          ++npairs_;
123        }
# Line 129 | Line 131 | namespace OpenMD {
131        rdfStream << "#selection1: (" << selectionScript1_ << ")\t";
132        rdfStream << "selection2: (" << selectionScript2_ << ")\n";
133        rdfStream << "#nRBins = " << nRBins_ << "\t maxLen = " << len_ << "deltaR = " << deltaR_ <<"\n";
134 <      rdfStream << "#nZBins =" << nZBins_ << "deltaZ = " << deltaZ_ << "\n";
135 <      for (int i = 0; i < avgGofr_.size(); ++i) {
136 <        RealType r = deltaR_ * (i + 0.5);
134 >      rdfStream << "#nZBins =" << nZBins_ << "\t deltaZ = " << deltaZ_ << "\n";
135 >      for (unsigned int i = 0; i < avgGofr_.size(); ++i) {
136 >        // RealType r = deltaR_ * (i + 0.5);
137  
138 <        for(int j = 0; j < avgGofr_[i].size(); ++j) {
139 <          RealType z = deltaZ_ * (j + 0.5);
140 <          rdfStream << avgGofr_[i][j]/nProcessed_ << "\t";
141 <        }
138 >        for(unsigned int j = 0; j < avgGofr_[i].size(); ++j) {
139 >          // RealType z = deltaZ_ * (j + 0.5);
140 >          rdfStream << avgGofr_[i][j]/nProcessed_ << "\t";
141 >        }
142  
143 <        rdfStream << "\n";
143 >        rdfStream << "\n";
144        }
145          
146      } else {

Comparing trunk/src/applications/staticProps/GofRZ.cpp (property svn:keywords):
Revision 1441 by gezelter, Thu Apr 29 14:48:10 2010 UTC vs.
Revision 1796 by gezelter, Mon Sep 10 18:38:44 2012 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines