added Verlet scheme and NxN non-bonded functionality
[alexxy/gromacs.git] / include / types / nrnb.h
1 /*
2  * 
3  *                This source code is part of
4  * 
5  *                 G   R   O   M   A   C   S
6  * 
7  *          GROningen MAchine for Chemical Simulations
8  * 
9  *                        VERSION 3.2.0
10  * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
11  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
12  * Copyright (c) 2001-2004, The GROMACS development team,
13  * check out http://www.gromacs.org for more information.
14
15  * This program is free software; you can redistribute it and/or
16  * modify it under the terms of the GNU General Public License
17  * as published by the Free Software Foundation; either version 2
18  * of the License, or (at your option) any later version.
19  * 
20  * If you want to redistribute modifications, please consider that
21  * scientific software is very special. Version control is crucial -
22  * bugs must be traceable. We will be happy to consider code for
23  * inclusion in the official distribution, but derived work must not
24  * be called official GROMACS. Details are found in the README & COPYING
25  * files - if they are missing, get the official version at www.gromacs.org.
26  * 
27  * To help us fund GROMACS development, we humbly ask that you cite
28  * the papers on the package - you can find them in the top README file.
29  * 
30  * For more info, check our website at http://www.gromacs.org
31  * 
32  * And Hey:
33  * GRoups of Organic Molecules in ACtion for Science
34  */
35 #ifndef _types_nrnb_h
36 #define _types_nrnb_h
37
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 /* The nonbonded kernels are documented in gmxlib/nonbonded_kernels, 
44  * but here's a lazy version of the numbering. The first position
45  * is the Coulomb interaction (0 for none), second is Van der Waals
46  * (again, 0 means no interaction), and the third is the water optimization
47  * (0 meaning no water optimization = standard atom-atom loop)
48  *
49  *                                     value
50  * pos                 1                   2           3              4
51  * 1st Coul        Normal,1/r       Reaction-field  Table            Generalized born
52  * 2nd Vdw         Lennard-Jones    Buckingham      Table             n/a
53  * 3rd Water. opt  SPC-other atom   SPC-SPC         TIP4p-other at.  TIP4p-TIP4p 
54  */
55
56 #define eNR_NBKERNEL_NONE -1
57
58 enum 
59 {
60     eNR_NBKERNEL010, eNR_NBKERNEL020, eNR_NBKERNEL030,
61     eNR_NBKERNEL100, eNR_NBKERNEL101, eNR_NBKERNEL102, eNR_NBKERNEL103, eNR_NBKERNEL104,
62     eNR_NBKERNEL110, eNR_NBKERNEL111, eNR_NBKERNEL112, eNR_NBKERNEL113, eNR_NBKERNEL114,
63     eNR_NBKERNEL120, eNR_NBKERNEL121, eNR_NBKERNEL122, eNR_NBKERNEL123, eNR_NBKERNEL124,
64     eNR_NBKERNEL130, eNR_NBKERNEL131, eNR_NBKERNEL132, eNR_NBKERNEL133, eNR_NBKERNEL134,
65     eNR_NBKERNEL200, eNR_NBKERNEL201, eNR_NBKERNEL202, eNR_NBKERNEL203, eNR_NBKERNEL204,
66     eNR_NBKERNEL210, eNR_NBKERNEL211, eNR_NBKERNEL212, eNR_NBKERNEL213, eNR_NBKERNEL214,
67     eNR_NBKERNEL220, eNR_NBKERNEL221, eNR_NBKERNEL222, eNR_NBKERNEL223, eNR_NBKERNEL224,
68     eNR_NBKERNEL230, eNR_NBKERNEL231, eNR_NBKERNEL232, eNR_NBKERNEL233, eNR_NBKERNEL234,
69     eNR_NBKERNEL300, eNR_NBKERNEL301, eNR_NBKERNEL302, eNR_NBKERNEL303, eNR_NBKERNEL304,
70     eNR_NBKERNEL310, eNR_NBKERNEL311, eNR_NBKERNEL312, eNR_NBKERNEL313, eNR_NBKERNEL314,
71     eNR_NBKERNEL320, eNR_NBKERNEL321, eNR_NBKERNEL322, eNR_NBKERNEL323, eNR_NBKERNEL324,
72     eNR_NBKERNEL330, eNR_NBKERNEL331, eNR_NBKERNEL332, eNR_NBKERNEL333, eNR_NBKERNEL334,
73     eNR_NBKERNEL400, eNR_NBKERNEL410, eNR_NBKERNEL430,
74     eNR_NBKERNEL010NF, eNR_NBKERNEL020NF, eNR_NBKERNEL030NF,
75     eNR_NBKERNEL100NF, eNR_NBKERNEL101NF, eNR_NBKERNEL102NF, eNR_NBKERNEL103NF, eNR_NBKERNEL104NF,
76     eNR_NBKERNEL110NF, eNR_NBKERNEL111NF, eNR_NBKERNEL112NF, eNR_NBKERNEL113NF, eNR_NBKERNEL114NF,
77     eNR_NBKERNEL120NF, eNR_NBKERNEL121NF, eNR_NBKERNEL122NF, eNR_NBKERNEL123NF, eNR_NBKERNEL124NF,
78     eNR_NBKERNEL130NF, eNR_NBKERNEL131NF, eNR_NBKERNEL132NF, eNR_NBKERNEL133NF, eNR_NBKERNEL134NF,
79     eNR_NBKERNEL200NF, eNR_NBKERNEL201NF, eNR_NBKERNEL202NF, eNR_NBKERNEL203NF, eNR_NBKERNEL204NF,
80     eNR_NBKERNEL210NF, eNR_NBKERNEL211NF, eNR_NBKERNEL212NF, eNR_NBKERNEL213NF, eNR_NBKERNEL214NF,
81     eNR_NBKERNEL220NF, eNR_NBKERNEL221NF, eNR_NBKERNEL222NF, eNR_NBKERNEL223NF, eNR_NBKERNEL224NF,
82     eNR_NBKERNEL230NF, eNR_NBKERNEL231NF, eNR_NBKERNEL232NF, eNR_NBKERNEL233NF, eNR_NBKERNEL234NF,
83     eNR_NBKERNEL300NF, eNR_NBKERNEL301NF, eNR_NBKERNEL302NF, eNR_NBKERNEL303NF, eNR_NBKERNEL304NF,
84     eNR_NBKERNEL310NF, eNR_NBKERNEL311NF, eNR_NBKERNEL312NF, eNR_NBKERNEL313NF, eNR_NBKERNEL314NF,
85     eNR_NBKERNEL320NF, eNR_NBKERNEL321NF, eNR_NBKERNEL322NF, eNR_NBKERNEL323NF, eNR_NBKERNEL324NF,
86     eNR_NBKERNEL330NF, eNR_NBKERNEL331NF, eNR_NBKERNEL332NF, eNR_NBKERNEL333NF, eNR_NBKERNEL334NF,
87     eNR_NBKERNEL400NF, eNR_NBKERNEL410NF, eNR_NBKERNEL430NF, 
88     eNR_NBKERNEL_NR,
89     eNR_NBKERNEL_FREE_ENERGY = eNR_NBKERNEL_NR,
90     eNR_NBKERNEL_ALLVSALL,
91     eNR_NBKERNEL_ALLVSALLGB,
92     eNR_NBKERNEL_OUTER,
93     eNR_NBNXN_DIST2,
94     eNR_NBNXN_LJ_RF,  eNR_NBNXN_LJ_RF_E,
95     eNR_NBNXN_LJ_TAB, eNR_NBNXN_LJ_TAB_E,
96     eNR_NBNXN_LJ,     eNR_NBNXN_LJ_E,
97     eNR_NBNXN_RF,     eNR_NBNXN_RF_E,
98     eNR_NBNXN_TAB,    eNR_NBNXN_TAB_E,
99     eNR_NB14,
100     eNR_BORN_RADII_STILL,     eNR_BORN_RADII_HCT_OBC,
101     eNR_BORN_CHAINRULE,
102     eNR_BORN_AVA_RADII_STILL, eNR_BORN_AVA_RADII_HCT_OBC,
103     eNR_BORN_AVA_CHAINRULE,
104     eNR_WEIGHTS,              eNR_SPREADQ,              eNR_SPREADQBSP,
105     eNR_GATHERF,              eNR_GATHERFBSP,           eNR_FFT,
106     eNR_CONV,                 eNR_SOLVEPME,eNR_NS,      eNR_RESETX,
107     eNR_SHIFTX,               eNR_CGCM,                 eNR_FSUM,
108     eNR_BONDS,                eNR_G96BONDS,             eNR_FENEBONDS,
109     eNR_TABBONDS,             eNR_RESTRBONDS,           eNR_LINEAR_ANGLES,
110     eNR_ANGLES,               eNR_G96ANGLES,            eNR_QANGLES,
111     eNR_TABANGLES,            eNR_PROPER,               eNR_IMPROPER,
112     eNR_RB,                   eNR_FOURDIH,              eNR_TABDIHS,
113     eNR_DISRES,               eNR_ORIRES,               eNR_DIHRES,
114     eNR_POSRES,               eNR_ANGRES,               eNR_ANGRESZ,
115     eNR_MORSE,                eNR_CUBICBONDS,           eNR_WALLS,
116     eNR_POLARIZE,             eNR_ANHARM_POL,
117     eNR_WPOL,                 eNR_THOLE,                eNR_VIRIAL,
118     eNR_UPDATE,               eNR_EXTUPDATE,            eNR_STOPCM,
119     eNR_PCOUPL,               eNR_EKIN,                 eNR_LINCS,
120     eNR_LINCSMAT,             eNR_SHAKE,                eNR_CONSTR_V,
121     eNR_SHAKE_RIJ,            eNR_CONSTR_VIR,           eNR_SETTLE,
122     eNR_VSITE2,               eNR_VSITE3,               eNR_VSITE3FD,
123     eNR_VSITE3FAD,            eNR_VSITE3OUT,            eNR_VSITE4FD,
124     eNR_VSITE4FDN,            eNR_VSITEN,               eNR_GB,
125         eNR_CMAP,
126     eNRNB
127 };
128
129
130 typedef struct {
131   double n[eNRNB];
132 } t_nrnb;
133
134
135 typedef struct gmx_wallcycle *gmx_wallcycle_t;
136
137 #ifdef __cplusplus
138 }
139 #endif
140
141 #endif