changed reading hint
[gromacs/adressmacs.git] / src / tools / testacf.c
blob7796ddbb0ee022260e7e8724746fb2443f5b59e5
1 /*
2 * $Id$
3 *
4 * This source code is part of
5 *
6 * G R O M A C S
7 *
8 * GROningen MAchine for Chemical Simulations
9 *
10 * VERSION 2.0
12 * Copyright (c) 1991-1999
13 * BIOSON Research Institute, Dept. of Biophysical Chemistry
14 * University of Groningen, The Netherlands
16 * Please refer to:
17 * GROMACS: A message-passing parallel molecular dynamics implementation
18 * H.J.C. Berendsen, D. van der Spoel and R. van Drunen
19 * Comp. Phys. Comm. 91, 43-56 (1995)
21 * Also check out our WWW page:
22 * http://md.chem.rug.nl/~gmx
23 * or e-mail to:
24 * gromacs@chem.rug.nl
26 * And Hey:
27 * Great Red Oystrich Makes All Chemists Sane
29 static char *SRCID_testacf_c = "$Id$";
31 #include <math.h>
32 #include "typedefs.h"
33 #include "xvgr.h"
34 #include "gstat.h"
35 #include "copyrite.h"
36 #include "macros.h"
37 #include "random.h"
38 #include "smalloc.h"
40 int main(int argc,char *argv[])
42 FILE *fp;
43 static char *desc[] = {
44 "testac tests the functioning of the GROMACS acf routines"
46 static int nframes = 1024;
47 static int datatp = 0;
48 static real a=0.02*M_PI;
49 t_pargs pa[] = {
50 { "-np", FALSE, etINT, &nframes,
51 "Number of data points" },
52 { "-dtp",FALSE, etINT, &datatp,
53 "Which data: 0=all 0.0, 1=all 1.0, 2=cos(a t), 3=random, 4=cos(a t)+random, 5=sin(a t)/(a t)" }
55 static char *str[] = {
56 "all 0.0",
57 "all 1.0",
58 "cos(a t)",
59 "random",
60 "cos(a t)+random",
61 "sin(a t)/(a t)"
63 t_filenm fnm[] = {
64 { efXVG, "-d", "acf-data", ffWRITE },
65 { efXVG, "-c", "acf-corr", ffWRITE },
66 { efXVG, "-comb", "acf-comb.xvg", ffWRITE }
68 #define NFILE asize(fnm)
69 int npargs,i,nlag;
70 int seed=1993;
71 real *data,*data2,x;
72 t_pargs *ppa;
74 CopyRight(stderr,argv[0]);
75 npargs = asize(pa);
76 ppa = add_acf_pargs(&npargs,pa);
77 parse_common_args(&argc,argv,PCA_CAN_TIME | PCA_CAN_VIEW,TRUE,
78 NFILE,fnm,npargs,ppa,asize(desc),desc,0,NULL);
79 snew(data,nframes);
80 snew(data2,nframes);
82 fp = xvgropen(opt2fn("-d",NFILE,fnm),"testac","x","y");
83 for(i=0; (i<nframes); i++) {
84 x = a*i;
85 switch (datatp) {
86 case 1:
87 data[i] = 1;
88 break;
89 case 2:
90 data[i] = cos(x);
91 break;
92 case 3:
93 data[i] = 2*rando(&seed)-1.0;
94 break;
95 case 4:
96 data[i] = cos(x)+2*rando(&seed)-1.0;
97 break;
98 case 5:
99 if (i==0)
100 data[i] = 1;
101 else
102 data[i] = sin(x)/(x);
103 default:
104 /* Data remains 0.0 */
105 break;
107 fprintf(fp,"%10g %10g\n",x,data[i]);
108 data2[i] = data[i];
110 fclose(fp);
112 do_autocorr(opt2fn("-c",NFILE,fnm),str[datatp],
113 nframes,1,&data,a,eacNormal,FALSE);
115 nlag = get_acfnout();
116 fp = xvgropen(opt2fn("-comb",NFILE,fnm),"testac","x","y");
117 for(i=0; (i<nlag); i++) {
118 fprintf(fp,"%10g %10g %10g\n",a*i,data2[i],data[i]);
120 ffclose(fp);
122 xvgr_file(opt2fn("-c",NFILE,fnm),"-nxy");
124 thanx(stdout);
126 return 0;