added normalization to pair correlation calc
[physik/posic.git] / moldyn.c
index 93c72da..f2923c3 100644 (file)
--- a/moldyn.c
+++ b/moldyn.c
@@ -2375,13 +2375,13 @@ int calculate_pair_correlation(t_moldyn *moldyn,double dr,void *ptr) {
        unsigned char bc;
        t_3dvec dist;
        double d;
-       //double norm;
+       double norm;
        int o,s;
        unsigned char ibrand;
 
        lc=&(moldyn->lc);
 
-       slots=moldyn->cutoff/dr;
+       slots=2.0*moldyn->cutoff/dr;
        o=2*slots;
 
        if(slots*dr<=moldyn->cutoff)
@@ -2458,7 +2458,7 @@ int calculate_pair_correlation(t_moldyn *moldyn,double dr,void *ptr) {
                                d=v3_absolute_square(&dist);
 
                                /* ignore if greater or equal cutoff */
-                               if(d>=moldyn->cutoff_square)
+                               if(d>=4.0*moldyn->cutoff_square)
                                        continue;
 
                                /* fill the slots */
@@ -2494,16 +2494,17 @@ int calculate_pair_correlation(t_moldyn *moldyn,double dr,void *ptr) {
                }
        }
 
-       /* normalization 
+       /* normalization */
        for(i=1;i<slots;i++) {
-                // normalization: 4 pi r r dr
+                // normalization: 4 pi r^2 dr
                 // here: not double counting pairs -> 2 pi r r dr
-               norm=2*M_PI*moldyn->count*(i*dr*i*dr)*dr;
+                // ... and actually it's a constant times r^2
+               norm=i*i*dr*dr;
                stat[i]/=norm;
                stat[slots+i]/=norm;
                stat[o+i]/=norm;
        }
-       */
+       /* */
 
        if(ptr==NULL) {
                /* todo: store/print pair correlation function */