Merge release-4-6 (commit 'Ic142a690')
[alexxy/gromacs.git] / src / gromacs / legacyheaders / types / enums.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
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39
40 /* note: these enums should correspond to the names in gmxlib/names.c */
41
42 enum {
43   epbcXYZ, epbcNONE, epbcXY, epbcSCREW, epbcNR
44 };
45
46 enum {
47   etcNO, etcBERENDSEN, etcNOSEHOOVER, etcYES, etcANDERSEN, etcANDERSENINTERVAL, etcVRESCALE, etcNR
48 }; /* yes is an alias for berendsen */
49
50 enum {
51   epcNO, epcBERENDSEN, epcPARRINELLORAHMAN, epcISOTROPIC, epcMTTK, epcNR
52 }; /* isotropic is an alias for berendsen */
53
54 /* trotter decomposition extended variable parts */
55 enum {
56   etrtNONE, etrtNHC, etrtBAROV, etrtBARONHC, etrtNHC2, etrtBAROV2, etrtBARONHC2, 
57   etrtVELOCITY1, etrtVELOCITY2, etrtPOSITION, etrtSKIPALL, etrtNR
58 };
59
60 /* sequenced parts of the trotter decomposition */
61 enum {
62   ettTSEQ0,  ettTSEQ1,  ettTSEQ2,  ettTSEQ3,  ettTSEQ4, ettTSEQMAX
63 };
64
65 enum {
66   epctISOTROPIC, epctSEMIISOTROPIC, epctANISOTROPIC,
67   epctSURFACETENSION, epctNR
68 };
69
70 enum {
71   erscNO, erscALL, erscCOM, erscNR
72 };
73
74 /*
75  * eelNOTUSED1 used to be GB, but to enable generalized born with different
76  * forms of electrostatics (RF, switch, etc.) in the future it is now selected
77  * separately (through the implicit_solvent option).
78  */
79 enum {
80   eelCUT,     eelRF,     eelGRF,   eelPME,  eelEWALD,  eelP3M_AD, 
81   eelPOISSON, eelSWITCH, eelSHIFT, eelUSER, eelGB_NOTUSED, eelRF_NEC, eelENCADSHIFT, 
82   eelPMEUSER, eelPMESWITCH, eelPMEUSERSWITCH, eelRF_ZERO, eelNR
83 };
84
85 /* Ewald geometry */
86 enum { 
87   eewg3D, eewg3DC, eewgNR
88 };
89
90 #define EEL_RF(e) ((e) == eelRF || (e) == eelGRF || (e) == eelRF_NEC || (e) == eelRF_ZERO )
91
92 #define EEL_PME(e)  ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
93 #define EEL_FULL(e) (EEL_PME(e) || (e) == eelPOISSON || (e) == eelEWALD)
94
95 #define EEL_SWITCHED(e) ((e) == eelSWITCH || (e) == eelSHIFT || (e) == eelENCADSHIFT || (e) == eelPMESWITCH || (e) == eelPMEUSERSWITCH)
96
97 #define EEL_IS_ZERO_AT_CUTOFF(e) (EEL_SWITCHED(e) || (e) == eelRF_ZERO)
98
99 #define EEL_MIGHT_BE_ZERO_AT_CUTOFF(e) (EEL_IS_ZERO_AT_CUTOFF(e) || (e) == eelUSER || (e) == eelPMEUSER)
100
101 enum {
102   evdwCUT, evdwSWITCH, evdwSHIFT, evdwUSER, evdwENCADSHIFT, evdwNR
103 };
104
105 #define EVDW_SWITCHED(e) ((e) == evdwSWITCH || (e) == evdwSHIFT || (e) == evdwENCADSHIFT)
106
107 #define EVDW_IS_ZERO_AT_CUTOFF(e) EVDW_SWITCHED(e)
108
109 #define EVDW_MIGHT_BE_ZERO_AT_CUTOFF(e) (EVDW_IS_ZERO_AT_CUTOFF(e) || (e) == evdwUSER)
110
111 enum { 
112   ensGRID, ensSIMPLE, ensNR
113 };
114
115 /* eiVV is normal velocity verlet -- eiVVAK uses 1/2*(KE(t-dt/2)+KE(t+dt/2)) as the kinetic energy, and the half step kinetic
116    energy for temperature control */
117
118 enum {
119   eiMD, eiSteep, eiCG, eiBD, eiSD2, eiNM, eiLBFGS, eiTPI, eiTPIC, eiSD1, eiVV, eiVVAK, eiNR
120 };
121 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
122 #define EI_SD(e) ((e) == eiSD1 || (e) == eiSD2)
123 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
124 /*above integrators may not conserve momenta*/
125 #define EI_DYNAMICS(e) ((e) == eiMD || EI_SD(e) || (e) == eiBD || EI_VV(e))
126 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
127 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
128
129 #define EI_STATE_VELOCITY(e) ((e) == eiMD || EI_VV(e) || EI_SD(e))
130
131 enum {
132   econtLINCS, econtSHAKE, econtNR
133 };
134
135 enum {
136   edrNone, edrSimple, edrEnsemble, edrNR
137 };
138
139 enum {
140   edrwConservative, edrwEqual, edrwNR
141 };
142
143 /* Combination rule things */
144 enum { 
145   eCOMB_NONE, eCOMB_GEOMETRIC, eCOMB_ARITHMETIC, eCOMB_GEOM_SIG_EPS, eCOMB_NR 
146 };
147
148 /* NBF selection */
149 enum { 
150   eNBF_NONE, eNBF_LJ, eNBF_BHAM, eNBF_NR 
151 };
152
153 /* FEP selection */
154 enum {
155   efepNO, efepYES, efepNR
156 };
157
158 /* separate_dhdl_file selection */
159 enum
160 {
161     /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
162     sepdhdlfileYES, sepdhdlfileNO, sepdhdlfileNR
163 };
164
165 /* dhdl_derivatives selection */
166 enum
167 {
168     /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
169     dhdlderivativesYES, dhdlderivativesNO, dhdlderivativesNR
170 };
171
172 /* Solvent model */
173 enum {
174   esolNO, esolSPC, esolTIP4P, esolNR
175 };
176
177 /* Dispersion correction */
178 enum {
179   edispcNO, edispcEnerPres, edispcEner, edispcAllEnerPres, edispcAllEner, edispcNR
180 }; 
181
182 /* Shell types, for completion stuff */
183 enum {
184   eshellCSH, eshellBASH, eshellZSH, eshellNR
185 }; 
186
187 /* Center of mass motion selection */
188 enum { 
189   ecmLINEAR, ecmANGULAR, ecmNO, ecmNR 
190 };
191
192 /* New version of simulated annealing */
193 enum { 
194   eannNO, eannSINGLE, eannPERIODIC, eannNR 
195 };
196
197 /* Implicit solvent algorithms */
198 enum { 
199         eisNO, eisGBSA, eisNR 
200 };
201
202 /* Algorithms for calculating GB radii */
203 enum { 
204   egbSTILL, egbHCT, egbOBC, egbNR 
205 };
206
207 enum {
208   esaAPPROX, esaNO, esaSTILL, esaNR
209 };
210
211 /* Wall types */
212 enum {
213   ewt93, ewt104, ewtTABLE, ewt126, ewtNR
214 };
215
216 /* Pull stuff */
217 enum {
218   epullNO, epullUMBRELLA, epullCONSTRAINT, epullCONST_F, epullNR
219 };
220
221 enum {
222   epullgDIST, epullgDIR, epullgCYL, epullgPOS, epullgDIRPBC, epullgNR
223 };
224
225 #define PULL_CYL(pull) ((pull)->eGeom == epullgCYL)
226
227 /* Enforced rotation groups */
228 enum {
229   erotgISO  , erotgISOPF ,
230   erotgPM   , erotgPMPF  ,
231   erotgRM   , erotgRMPF  ,
232   erotgRM2  , erotgRM2PF ,
233   erotgFLEX , erotgFLEXT ,
234   erotgFLEX2, erotgFLEX2T,
235   erotgNR
236 };
237
238 enum {
239     erotgFitRMSD, erotgFitNORM, erotgFitPOT, erotgFitNR
240 };
241
242 /* QMMM */
243 enum {
244   eQMmethodAM1, eQMmethodPM3, eQMmethodRHF, 
245   eQMmethodUHF, eQMmethodDFT, eQMmethodB3LYP, eQMmethodMP2, eQMmethodCASSCF, eQMmethodB3LYPLAN,
246   eQMmethodDIRECT, eQMmethodNR
247 };
248
249 enum {
250   eQMbasisSTO3G, eQMbasisSTO3G2, eQMbasis321G, 
251   eQMbasis321Gp, eQMbasis321dGp, eQMbasis621G,
252   eQMbasis631G, eQMbasis631Gp, eQMbasis631dGp, 
253   eQMbasis6311G, eQMbasisNR
254 };
255
256 enum {
257   eQMMMschemenormal,eQMMMschemeoniom,eQMMMschemeNR
258 };
259
260 enum {
261   eMultentOptName, eMultentOptNo, eMultentOptLast, eMultentOptNR
262 };
263
264 enum {
265   eAdressOff,eAdressConst, eAdressXSplit, eAdressSphere, eAdressNR
266 };
267
268 enum {
269   eAdressICOff, eAdressICThermoForce, eAdressICNR
270 };
271
272 enum {
273   eAdressSITEcom,eAdressSITEcog, eAdressSITEatom, eAdressSITEatomatom, eAdressSITENR
274 };
275
276 #ifdef __cplusplus
277 }
278 #endif
279