7e65418d6c6e8582ffb87a07c95c94e76b062f59
[alexxy/gromacs.git] / include / inloop.h
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
11  * 
12  * Copyright (c) 1991-1999
13  * BIOSON Research Institute, Dept. of Biophysical Chemistry
14  * University of Groningen, The Netherlands
15  * 
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)
20  * 
21  * Also check out our WWW page:
22  * http://md.chem.rug.nl/~gmx
23  * or e-mail to:
24  * gromacs@chem.rug.nl
25  * 
26  * And Hey:
27  * Good ROcking Metal Altar for Chronical Sinners
28  */
29 static char *SRCID_inloop_h = "$Id$";
30
31  
32 #ifndef _in_loop_h_
33 #define _in_loop_h_
34
35 #include "typedefs.h"
36         
37 /******************************************************************
38  *
39  *        C    I N N E R   L O O P S
40  *
41  ******************************************************************/
42 extern void c_coul(real ix,real iy,real iz,real qi,
43                    real pos[],int nj,t_nl_j jjnr[],
44                    real charge[],
45                    real faction[],real fip[3],
46                    real *Vc);
47                    
48 extern void c_ljc(real ix,real iy,real iz,real qi,
49                   real pos[],int nj,int type[],t_nl_j jjnr[],
50                   real charge[],real nbfp[],
51                   real faction[],real fip[],
52                   real *Vc,real *Vnb);
53                   
54 extern void c_bham(real ix,real iy,real iz,real qi,
55                    real pos[],int nj,int type[],t_nl_j jjnr[],
56                    real charge[],real nbfp[],
57                    real faction[],real fip[],
58                    real *Vc,real *Vnb);
59
60 extern void c_water(int  i0,real xw[],real eps,
61                     real pos[],int nj,int type[],t_nl_j jjnr[],
62                     real charge[],real nbfp[],
63                     real faction[],real fw[],
64                     real *Vc,real *Vnb);
65 /* Water loop */
66
67 extern void c_wcoul(int  i0,real xw[],real eps,
68                     real pos[],int nj,t_nl_j jjnr[],
69                     real charge[],real faction[],real fw[],real *Vc);
70 /* Water loop including only coulomb */
71
72 extern void c_ljcfree(real ix,real iy,real iz,int inr,
73                       real pos[],int nj,t_nl_j jjnr[],
74                       int  typeA[],  int typeB[],
75                       real eps,
76                       real chargeA[],real chargeB[],
77                       real nbfpA[],  real nbfpB[],
78                       real faction[],real fip[],
79                       real *Vc,      real *Vnb,
80                       real lambda,   real *dvdlambda,
81                       real k_rf,     real c_rf,
82                       real tfac,real trunctab[]);
83 /* LJ+Coulomb with free energy perturbation calculation 
84  * This also contains a reaction field term. If rffac is zero,
85  * no RF is applied.
86  */
87
88 extern void c_free(real ix,real iy,real iz,int inr,
89                    real pos[],int nj,t_nl_j jjnr[],
90                    int  typeA[],  int typeB[],
91                    real epsilon,
92                    real chargeA[],real chargeB[],
93                    real nbfpA[],  real nbfpB[],
94                    real faction[],real fip[],
95                    real *Vc,      real *Vnb,
96                    real lambda,   real *dvdlambda,
97                    int  ntab,     real tabscale,
98                    real VFtab[]);
99 /* LJ+Coulomb with free energy perturbation calculation 
100  * Potential and forces are calculated using tables.
101  */
102
103 extern void c_tab(real ix,real iy,real iz,real qi,
104                   real pos[],int nj,int type[],int jjnr[],real charge[],
105                   real nbfp[],real faction[],real fip[],
106                   real *Vc,real *Vnb,int ntab,real tabscale,real VFtab[]);
107
108 extern void c_bhamtab(real ix,real iy,real iz,real qi,
109                       real pos[],int nj,int type[],int jjnr[],real charge[],
110                       real nbfp[],real faction[],real fip[],
111                       real *Vc,real *Vnb,int ntab,
112                       real tabscale,real tabscale_bham,real VFtab[]);
113
114 extern void c_coultab(real ix,real iy,real iz,real qi,
115                       real pos[],int nj,int jjnr[],real charge[],
116                       real faction[],real fip[],
117                       real *Vc,int ntab,real tabscale,real VFtab[]);
118 /* These two routines calculate force based on tables.
119  * The first does both LJ and Coulomn, while the second only does coulomb.
120  * More info in inloopc.c
121  */
122 extern void c_watertab(int i0,real xw[],real fudge,
123                        real pos[],int nj,int type[],t_nl_j jjnr[],
124                        real charge[],real nbfp[],
125                        real faction[],real fw[],
126                        real *Vc,real *Vnb,int ntab,real tabscale,real VFtab[]);
127 /* Water loop including tables */
128
129 void c_wcoultab(int i0,real xw[],real fudge,
130                 real pos[],int nj,t_nl_j jjnr[],
131                 real charge[],real faction[],real fw[],
132                 real *Vc,int ntab,real tabscale,real VFtab[]);
133 /*  Water loop including only coulomb, but with a table function */
134
135 #endif /* _in_loop_h_ */