Merge remote-tracking branch 'gerrit/release-4-6'
[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, etcANDERSENMASSIVE, etcVRESCALE, etcNR
48 }; /* yes is an alias for berendsen */
49
50 #define ETC_ANDERSEN(e) (((e) == etcANDERSENMASSIVE) || ((e) == etcANDERSEN))
51
52 enum {
53   epcNO, epcBERENDSEN, epcPARRINELLORAHMAN, epcISOTROPIC, epcMTTK, epcNR
54 }; /* isotropic is an alias for berendsen */
55
56 /* trotter decomposition extended variable parts */
57 enum {
58   etrtNONE, etrtNHC, etrtBAROV, etrtBARONHC, etrtNHC2, etrtBAROV2, etrtBARONHC2, 
59   etrtVELOCITY1, etrtVELOCITY2, etrtPOSITION, etrtSKIPALL, etrtNR
60 };
61
62 /* sequenced parts of the trotter decomposition */
63 enum {
64   ettTSEQ0,  ettTSEQ1,  ettTSEQ2,  ettTSEQ3,  ettTSEQ4, ettTSEQMAX
65 };
66
67 enum {
68   epctISOTROPIC, epctSEMIISOTROPIC, epctANISOTROPIC,
69   epctSURFACETENSION, epctNR
70 };
71
72 enum {
73   erscNO, erscALL, erscCOM, erscNR
74 };
75
76 /*
77  * eelNOTUSED1 used to be GB, but to enable generalized born with different
78  * forms of electrostatics (RF, switch, etc.) in the future it is now selected
79  * separately (through the implicit_solvent option).
80  */
81 enum {
82   eelCUT,     eelRF,     eelGRF,   eelPME,  eelEWALD,  eelP3M_AD, 
83   eelPOISSON, eelSWITCH, eelSHIFT, eelUSER, eelGB_NOTUSED, eelRF_NEC, eelENCADSHIFT, 
84   eelPMEUSER, eelPMESWITCH, eelPMEUSERSWITCH, eelRF_ZERO, eelNR
85 };
86
87 /* Ewald geometry */
88 enum { 
89   eewg3D, eewg3DC, eewgNR
90 };
91
92 #define EEL_RF(e) ((e) == eelRF || (e) == eelGRF || (e) == eelRF_NEC || (e) == eelRF_ZERO )
93
94 #define EEL_PME(e)  ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
95 #define EEL_FULL(e) (EEL_PME(e) || (e) == eelPOISSON || (e) == eelEWALD)
96
97 #define EEL_SWITCHED(e) ((e) == eelSWITCH || (e) == eelSHIFT || (e) == eelENCADSHIFT || (e) == eelPMESWITCH || (e) == eelPMEUSERSWITCH)
98
99 #define EEL_IS_ZERO_AT_CUTOFF(e) (EEL_SWITCHED(e) || (e) == eelRF_ZERO)
100
101 #define EEL_MIGHT_BE_ZERO_AT_CUTOFF(e) (EEL_IS_ZERO_AT_CUTOFF(e) || (e) == eelUSER || (e) == eelPMEUSER)
102
103 enum {
104   evdwCUT, evdwSWITCH, evdwSHIFT, evdwUSER, evdwENCADSHIFT, evdwNR
105 };
106
107 #define EVDW_SWITCHED(e) ((e) == evdwSWITCH || (e) == evdwSHIFT || (e) == evdwENCADSHIFT)
108
109 #define EVDW_IS_ZERO_AT_CUTOFF(e) EVDW_SWITCHED(e)
110
111 #define EVDW_MIGHT_BE_ZERO_AT_CUTOFF(e) (EVDW_IS_ZERO_AT_CUTOFF(e) || (e) == evdwUSER)
112
113 enum { 
114   ensGRID, ensSIMPLE, ensNR
115 };
116
117 /* 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
118    energy for temperature control */
119
120 enum {
121   eiMD, eiSteep, eiCG, eiBD, eiSD2, eiNM, eiLBFGS, eiTPI, eiTPIC, eiSD1, eiVV, eiVVAK, eiNR
122 };
123 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
124 #define EI_SD(e) ((e) == eiSD1 || (e) == eiSD2)
125 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
126 /*above integrators may not conserve momenta*/
127 #define EI_DYNAMICS(e) ((e) == eiMD || EI_SD(e) || (e) == eiBD || EI_VV(e))
128 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
129 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
130
131 #define EI_STATE_VELOCITY(e) ((e) == eiMD || EI_VV(e) || EI_SD(e))
132
133 enum {
134   econtLINCS, econtSHAKE, econtNR
135 };
136
137 enum {
138   edrNone, edrSimple, edrEnsemble, edrNR
139 };
140
141 enum {
142   edrwConservative, edrwEqual, edrwNR
143 };
144
145 /* Combination rule things */
146 enum { 
147   eCOMB_NONE, eCOMB_GEOMETRIC, eCOMB_ARITHMETIC, eCOMB_GEOM_SIG_EPS, eCOMB_NR 
148 };
149
150 /* NBF selection */
151 enum { 
152   eNBF_NONE, eNBF_LJ, eNBF_BHAM, eNBF_NR 
153 };
154
155 /* simulated tempering methods */
156 enum {
157   esimtempGEOMETRIC, esimtempEXPONENTIAL, esimtempLINEAR, esimtempNR
158 };
159 /* FEP selection */
160 enum {
161   efepNO, efepYES, efepSTATIC, efepSLOWGROWTH, efepEXPANDED, efepNR
162 };
163   /* if efepNO, there are no evaluations at other states.
164      if efepYES, treated equivalently to efepSTATIC.
165      if efepSTATIC, then lambdas do not change during the simulation.
166      if efepSLOWGROWTH, then the states change monotonically throughout the simulation.
167      if efepEXPANDED, then expanded ensemble simulations are occuring.
168   */
169
170 /* FEP coupling types */
171 enum {
172   efptFEP,efptMASS,efptCOUL,efptVDW,efptBONDED,efptRESTRAINT,efptTEMPERATURE,efptNR
173 };
174
175 /* How the lambda weights are calculated:
176    elamstatsMETROPOLIS = using the metropolis criteria
177    elamstatsBARKER = using the Barker critera for transition weights - also called unoptimized Bennett
178    elamstatsMINVAR = using Barker + minimum variance for weights
179    elamstatsWL = Wang-Landu (using visitation counts)
180    elamstatsWWL = Weighted Wang-Landau (using optimized gibbs weighted visitation counts)
181 */
182 enum {
183   elamstatsNO, elamstatsMETROPOLIS, elamstatsBARKER, elamstatsMINVAR, elamstatsWL, elamstatsWWL, elamstatsNR
184 };
185
186 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
187
188 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
189
190 /* How moves in lambda are calculated:
191    elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
192    elmovemcBARKER - using the Barker criteria, and 50% up and down
193    elmovemcGIBBS - computing the transition using the marginalized probabilities of the lambdas
194    elmovemcMETGIBBS - computing the transition using the metropolized version of Gibbs (Monte Carlo Strategies in Scientific computing, Liu, p. 134)
195 */
196 enum {
197   elmcmoveNO,elmcmoveMETROPOLIS, elmcmoveBARKER, elmcmoveGIBBS, elmcmoveMETGIBBS, elmcmoveNR
198 };
199
200 /* how we decide whether weights have reached equilibrium
201    elmceqNO - never stop, weights keep going
202    elmceqYES - fix the weights from the beginning; no movement
203    elmceqWLDELTA - stop when the WL-delta falls below a certain level
204    elmceqNUMATLAM - stop when we have a certain number of samples at every step
205    elmceqSTEPS - stop when we've run a certain total number of steps
206    elmceqSAMPLES - stop when we've run a certain total number of samples
207    elmceqRATIO - stop when the ratio of samples (lowest to highest) is sufficiently large
208 */
209 enum {
210   elmceqNO,elmceqYES,elmceqWLDELTA,elmceqNUMATLAM,elmceqSTEPS,elmceqSAMPLES,elmceqRATIO,elmceqNR
211 };
212
213 /* separate_dhdl_file selection */
214 enum
215 {
216   /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
217   esepdhdlfileYES, esepdhdlfileNO, esepdhdlfileNR
218 };
219
220 /* dhdl_derivatives selection */
221 enum
222 {
223   /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
224   edhdlderivativesYES, edhdlderivativesNO, edhdlderivativesNR
225 };
226
227 /* Solvent model */
228 enum {
229   esolNO, esolSPC, esolTIP4P, esolNR
230 };
231
232 /* Dispersion correction */
233 enum {
234   edispcNO, edispcEnerPres, edispcEner, edispcAllEnerPres, edispcAllEner, edispcNR
235 }; 
236
237 /* Shell types, for completion stuff */
238 enum {
239   eshellCSH, eshellBASH, eshellZSH, eshellNR
240 }; 
241
242 /* Center of mass motion selection */
243 enum { 
244   ecmLINEAR, ecmANGULAR, ecmNO, ecmNR 
245 };
246
247 /* New version of simulated annealing */
248 enum { 
249   eannNO, eannSINGLE, eannPERIODIC, eannNR 
250 };
251
252 /* Implicit solvent algorithms */
253 enum { 
254   eisNO, eisGBSA, eisNR
255 };
256
257 /* Algorithms for calculating GB radii */
258 enum { 
259   egbSTILL, egbHCT, egbOBC, egbNR 
260 };
261
262 enum {
263   esaAPPROX, esaNO, esaSTILL, esaNR
264 };
265
266 /* Wall types */
267 enum {
268   ewt93, ewt104, ewtTABLE, ewt126, ewtNR
269 };
270
271 /* Pull stuff */
272 enum {
273   epullNO, epullUMBRELLA, epullCONSTRAINT, epullCONST_F, epullNR
274 };
275
276 enum {
277   epullgDIST, epullgDIR, epullgCYL, epullgPOS, epullgDIRPBC, epullgNR
278 };
279
280 #define PULL_CYL(pull) ((pull)->eGeom == epullgCYL)
281
282 /* Enforced rotation groups */
283 enum {
284   erotgISO  , erotgISOPF ,
285   erotgPM   , erotgPMPF  ,
286   erotgRM   , erotgRMPF  ,
287   erotgRM2  , erotgRM2PF ,
288   erotgFLEX , erotgFLEXT ,
289   erotgFLEX2, erotgFLEX2T,
290   erotgNR
291 };
292
293 enum {
294     erotgFitRMSD, erotgFitNORM, erotgFitPOT, erotgFitNR
295 };
296
297 /* QMMM */
298 enum {
299   eQMmethodAM1, eQMmethodPM3, eQMmethodRHF, 
300   eQMmethodUHF, eQMmethodDFT, eQMmethodB3LYP, eQMmethodMP2, eQMmethodCASSCF, eQMmethodB3LYPLAN,
301   eQMmethodDIRECT, eQMmethodNR
302 };
303
304 enum {
305   eQMbasisSTO3G, eQMbasisSTO3G2, eQMbasis321G, 
306   eQMbasis321Gp, eQMbasis321dGp, eQMbasis621G,
307   eQMbasis631G, eQMbasis631Gp, eQMbasis631dGp, 
308   eQMbasis6311G, eQMbasisNR
309 };
310
311 enum {
312   eQMMMschemenormal,eQMMMschemeoniom,eQMMMschemeNR
313 };
314
315 enum {
316   eMultentOptName, eMultentOptNo, eMultentOptLast, eMultentOptNR
317 };
318
319 enum {
320   eAdressOff,eAdressConst, eAdressXSplit, eAdressSphere, eAdressNR
321 };
322
323 enum {
324   eAdressICOff, eAdressICThermoForce, eAdressICNR
325 };
326
327 enum {
328   eAdressSITEcom,eAdressSITEcog, eAdressSITEatom, eAdressSITEatomatom, eAdressSITENR
329 };
330
331 #ifdef __cplusplus
332 }
333 #endif
334