ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/staticProps/GofRtheta.cpp
(Generate patch)

Comparing trunk/OOPSE/staticProps/GofRtheta.cpp (file contents):
Revision 872 by mmeineke, Tue Oct 21 19:33:19 2003 UTC vs.
Revision 873 by mmeineke, Fri Nov 21 20:07:14 2003 UTC

# Line 12 | Line 12 | GofRtheta::GofRtheta( char* key1, char* key2, int theN
12   GofRtheta::GofRtheta( char* key1, char* key2, int theNatoms, int theNbins ):
13    PairCorrType(  key1, key2, theNatoms, theNbins )
14   {
15 <  int i;
15 >  int i, j;
16    
17    strcpy( corrType, "GofRtheta" );
18    
19 <  currHist = new int[nBins];
20 <  currGofRtheta = new double[nBins];
21 <  avgGofRtheta  = new double[nBins];
22 <
19 >  currCosHist   = new int*[nBins];
20 >  currGofRtheta = new double*[nBins];
21 >  avgGofRtheta  = new double*[nBins];
22 >  
23    for(i=0;i<nBins;i++){
24 <    currHist[i] = 0;
25 <    currGofRtheta[i] = 0.0;
26 <    avgGofRtheta[i]  = 0.0;
24 >    currCosHist[i]   = new int[nBins];
25 >    currGofRtheta[i] = new double[nBins];
26 >    avgGofRtheta[i]  = new double[nBins];
27 >    
28 >    for(j=0;j<nBins;j++){
29 >      currCosHist[i][j]   = 0;
30 >      currGofRtheta[i][j] = 0.0;
31 >      avgGofRtheta[i][j]  = 0.0;
32 >    }
33    }
34      
35    nFrames = 0;
# Line 31 | Line 37 | GofRtheta::~GofRtheta(){
37  
38   GofRtheta::~GofRtheta(){
39  
40 +  int i;
41 +
42 +  for(i=0;i<nBins;i++){
43 +    delete[] currCosHist[i];
44 +    delete[] currGofRtheta[i];
45 +    delete[] avgGofRtheta[i];
46 +  }
47 +
48    delete[] currHist;
49    delete[] currGofRtheta;
50    delete[] avgGofRtheta;
51   }
52  
53   void GofRtheta::correlate( double Rij[3], double dist,
54 <                      double uHatI[3], double uHatJ[3] ){
55 <  int bin;
56 <
54 >                           double uHatI[3], double uHatJ[3] ){
55 >  int bin, binTheta, i;
56 >  double dot, cosTheta;
57 >  double halfNbins;
58 >  
59    if( correlateMe ){
60 <    
61 <    bin = (int)( dist / delR );
62 <    if( bin < nBins )currHist[bin] += 2;
63 <    
60 >
61 >    if( uHatI != NULL ){
62 >      
63 >      dot= 0.0;
64 >      for(i=0;i<3;i++)
65 >        dot += rij[i] * uHatI[i];
66 >      
67 >      cosTheta = dot / dist;
68 >      
69 >      bin = (int)( dist / delR );
70 >      if( bin < nBins ){
71 >        
72 >        halfNbins = (nBins-1) * 0.5;
73 >        binTheta = (int)( (dot * halfNbins) + halfNbins );
74 >        
75 >        currCosHist[bin][binTheta] += 1;
76 >      }
77 >    }    
78    }
79   }
80  
# Line 63 | Line 93 | void GofRtheta::accumulateFrame( void ){
93      volSlice = ( rUpper * rUpper * rUpper ) - ( rLower * rLower * rLower );
94      nIdeal = volSlice * pairConstant;
95  
96 <    currGofRtheta[i] = currHist[i] / nIdeal;
97 <    currHist[i] = 0;
96 >    for(j=0;j<nBins;j++){
97 >      
98 >      currGofRtheta[i][j] = (currCosHist[i][j] / nIdeal) * nBins;
99 >      currCosHist[i][j]   = 0;
100  
101 <    avgGofRtheta[i] += currGofRtheta[i];    
101 >      avgGofRtheta[i][j] += currGofRtheta[i][j];    
102 >    }
103    }
104   }
105  
106  
107   void GofRtheta::writeCorr( char* outPrefix ){
108  
109 <  double rValue, corrValue;
109 >  double rValue, cosValue, deltaCos, corrValue;
110    double rLower, rUpper, volSlice;
111    double nIdeal;
112    int i;
# Line 95 | Line 128 | void GofRtheta::writeCorr( char* outPrefix ){
128      simError();
129    }
130  
131 <  outStream << "#rValue\tcorrValue\n";
131 >  outStream << "#rValue; cosValue; corrValue\n";
132  
100  for(i=0;i<nBins;i++){
133  
134 +  deltaCos = 2.0 / nBins;
135 +  for(i=0;i<nBins;i++){
136 +    
137      rValue = ( i + 0.5 ) * delR;
138 <    corrValue = avgGofRtheta[i] / nFrames;
139 <
140 <    outStream << rValue << "\t" << corrValue << "\n";
138 >    
139 >    for(j=0;j<nBins;j++){
140 >    
141 >      cosValue = -1 + (j * deltaCos);
142 >        
143 >      corrValue = avgGofRtheta[i] / nFrames;
144 >      
145 >      outStream << rValue << "; " << cosValue << "; " << corrValue << "\n";
146 >    }
147    }
148  
149    outStream.close();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines