From 4d1515cac0af6b11df3d34a0bb19ea885676ee73 Mon Sep 17 00:00:00 2001 From: hackbard Date: Sun, 17 Feb 2008 19:16:52 +0100 Subject: [PATCH] added normalization to pair correlation calc --- moldyn.c | 15 ++++++++------- pair_corr_calc_script | 3 ++- pair_correlation_calc.c | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/moldyn.c b/moldyn.c index 93c72da..f2923c3 100644 --- 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 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 */ diff --git a/pair_corr_calc_script b/pair_corr_calc_script index f2c64ec..7f25a74 100755 --- a/pair_corr_calc_script +++ b/pair_corr_calc_script @@ -39,11 +39,12 @@ set ytic auto set title 'Pair correlation function' set xlabel 'r [A]' set ylabel 'g(r) [a.u.]' +unset ytics set terminal postscript eps enhanced color solid lw 1 'Helvetica' 14 set output '$pdir/pair_corr.eps' EOF -echo -en "plot [1.5:3.0] " >> $pfile +echo -en "plot [1.5:6.0] " >> $pfile komma=0 diff --git a/pair_correlation_calc.c b/pair_correlation_calc.c index f04c4e4..e5903aa 100644 --- a/pair_correlation_calc.c +++ b/pair_correlation_calc.c @@ -52,7 +52,7 @@ int main(int argc,char **argv) { //moldyn.cutoff_square*=4; dr=atof(argv[2]); - slots=moldyn.cutoff/dr; + slots=2.0*moldyn.cutoff/dr; printf("[pair corr calc]\n"); printf(" slots: %d\n",slots); printf(" cutoff: %f\n",moldyn.cutoff); -- 2.20.1