4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
12 * Copyright (c) 1991-1999
13 * BIOSON Research Institute, Dept. of Biophysical Chemistry
14 * University of Groningen, The Netherlands
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
27 * Great Red Oystrich Makes All Chemists Sane
29 static char *SRCID_glaasje_c
= "$Id$";
38 void do_glas(FILE *log
,int start
,int homenr
,rvec x
[],rvec f
[],
39 t_forcerec
*fr
,t_mdatoms
*md
,int atnr
,t_inputrec
*ir
,
42 static bool bFirst
=TRUE
,bGlas
;
43 static real d
[2],pi6
,pi12
,rc9
,rc4
,rc10
,rc3
,rc
;
45 real wd
,wdd
,zi
,fz
,dd
,d10
,d4
,d9
,d3
,r9
,r3
,sign
,cc6
,cc12
;
56 /* Check whether these constants have been set. */
57 bGlas
= (pi6
!= 0) && (pi12
!= 0) && (d
[0] != 0) && (d
[1] != 0);
61 fatal_error(0,"Can not have Long Range C6 corrections and GLASMD");
63 rc
= max(fr
->rvdw
,fr
->rlist
);
70 "Constants for GLASMD: pi6 = %10g, pi12 = %10g\n"
71 " d1 = %10g, d2 = %10g\n"
72 " rc3 = %10g, rc4 = %10g\n"
73 " rc9 = %10g, rc10 = %10g\n",
74 pi6
,pi12
,d
[0],d
[1],rc3
,rc4
,rc9
,rc10
);
76 fatal_error(0,"d1 > d2 for GLASMD (check log file)");
81 for(i
=0; (i
<atnr
); i
++) {
82 c6
[i
] = C6 (fr
->nbfp
,atnr
,i
,i
);
83 c12
[i
] = C12(fr
->nbfp
,atnr
,i
,i
);
87 fprintf(stderr
,"No glasmd!\n");
93 for(i
=start
; (i
<start
+homenr
); i
++) {
95 if ((c6
[ti
] != 0) || (c12
[ti
] != 0)) {
97 cc6
= M_PI
*sqrt(c6
[ti
]*pi6
);
98 cc12
= M_PI
*sqrt(c12
[ti
]*pi12
);
100 /* Use a factor for the sign, this saves taking absolute values */
102 for(j
=0; (j
<2); j
++) {
107 wdd
= cc12
/(45.0*d9
) - cc6
/(6.0*d3
);
110 fz
= sign
*(cc12
/(5.0*d10
) - cc6
/(2.0*d4
));
113 wdd
= cc12
*(2.0/(9.0*rc9
) - dd
/(5.0*rc10
)) -
114 cc6
*(2.0/(3.0*rc3
) - dd
/(2.0*rc4
));
115 fz
= sign
*(cc12
/(5.0*rc10
)-cc6
/(2.0*rc4
));