[gmx-developers] add a new autocorrelation function.

Xavier Periole X.Periole at rug.nl
Fri Jan 11 00:17:12 CET 2008


I am trying to add a new autocorrelation function. The idea if to get
the residence time of water molecules, but it does not really matter.

I am modifying gmx3.3.1.

I made my modifications in gmx_analyze.c to introduce a new option that
calls do_autocorr the following way:

if(bacNewoption) {

I made the same modification for another case where no new function
was needed and it worked pretty good: reproducing C(t) from another
source. So this is safe.

in autocorr.c I also make my changes, defined my variables, etc.

Main change:
       if (MODE(eacNormal)) {
       corr[k] += c1[j]*c1[j+k];
       else if (MODE(eacNewOption) {
       fprintf(stdout,"in there");
       compute the new correlation function;

Everything goes well, no complain at the compilation.
g_analyze calls do_autocorr with the new option but when in autocorr.c
the code in eacNewOption is not executed. The option is recognized.

I find out that the options are defined in include/gstat.h in the
following way:

#define eacNormal (1<<0)
#define eacCos    (1<<1)
#define eacVector (1<<2)
#define eacRcross (1<<3  | eacVector)
#define eacP0     (1<<4  | eacVector)
#define eacP1     (1<<5  | eacVector)
#define eacP2     (1<<6  | eacVector)
#define eacP3     (1<<7  | eacVector)
#define eacP4     (1<<8  | eacVector)

I do not know how to include my eacNewOption in there! I tried several
things but the new option is not understood.

Anyone could give me a hand?


XAvier Periole - PhD

NMR & Molecular Dynamics Group
University of Groningen
The Netherlands

More information about the gromacs.org_gmx-developers mailing list