2 * This file is part of the GROMACS molecular simulation package.
4 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
5 * Copyright (c) 2001-2004, The GROMACS development team.
6 * Copyright (c) 2013,2014, by the GROMACS development team, led by
7 * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
8 * and including many others, as listed in the AUTHORS file in the
9 * top-level source directory and at http://www.gromacs.org.
11 * GROMACS is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public License
13 * as published by the Free Software Foundation; either version 2.1
14 * of the License, or (at your option) any later version.
16 * GROMACS is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Lesser General Public License for more details.
21 * You should have received a copy of the GNU Lesser General Public
22 * License along with GROMACS; if not, see
23 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
24 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26 * If you want to redistribute modifications to GROMACS, please
27 * consider that scientific software is very special. Version
28 * control is crucial - bugs must be traceable. We will be happy to
29 * consider code for inclusion in the official distribution, but
30 * derived work must not be called official GROMACS. Details are found
31 * in the README & COPYING files - if they are missing, get the
32 * official version at http://www.gromacs.org.
34 * To help us fund GROMACS development, we humbly ask that you cite
35 * the research papers on the package. Check out http://www.gromacs.org.
45 } /* fixes auto-indentation problems */
48 /* note: these enums should correspond to the names in gmxlib/names.c */
51 epbcXYZ, epbcNONE, epbcXY, epbcSCREW, epbcNR
55 etcNO, etcBERENDSEN, etcNOSEHOOVER, etcYES, etcANDERSEN, etcANDERSENMASSIVE, etcVRESCALE, etcNR
56 }; /* yes is an alias for berendsen */
58 #define ETC_ANDERSEN(e) (((e) == etcANDERSENMASSIVE) || ((e) == etcANDERSEN))
61 epcNO, epcBERENDSEN, epcPARRINELLORAHMAN, epcISOTROPIC, epcMTTK, epcNR
62 }; /* isotropic is an alias for berendsen */
64 /* trotter decomposition extended variable parts */
66 etrtNONE, etrtNHC, etrtBAROV, etrtBARONHC, etrtNHC2, etrtBAROV2, etrtBARONHC2,
67 etrtVELOCITY1, etrtVELOCITY2, etrtPOSITION, etrtSKIPALL, etrtNR
70 /* sequenced parts of the trotter decomposition */
72 ettTSEQ0, ettTSEQ1, ettTSEQ2, ettTSEQ3, ettTSEQ4, ettTSEQMAX
76 epctISOTROPIC, epctSEMIISOTROPIC, epctANISOTROPIC,
77 epctSURFACETENSION, epctNR
81 erscNO, erscALL, erscCOM, erscNR
85 ecutsVERLET, ecutsGROUP, ecutsNR
88 /* Coulomb / VdW interaction modifiers.
89 * grompp replaces eintmodPOTSHIFT_VERLET by eintmodPOTSHIFT or eintmodNONE.
90 * Exactcutoff is only used by Reaction-field-zero, and is not user-selectable.
93 eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodFORCESWITCH, eintmodNR
97 * eelNOTUSED1 used to be GB, but to enable generalized born with different
98 * forms of electrostatics (RF, switch, etc.) in the future it is now selected
99 * separately (through the implicit_solvent option).
102 eelCUT, eelRF, eelGRF, eelPME, eelEWALD, eelP3M_AD,
103 eelPOISSON, eelSWITCH, eelSHIFT, eelUSER, eelGB_NOTUSED, eelRF_NEC, eelENCADSHIFT,
104 eelPMEUSER, eelPMESWITCH, eelPMEUSERSWITCH, eelRF_ZERO, eelNR
109 eewg3D, eewg3DC, eewgNR
112 #define EEL_RF(e) ((e) == eelRF || (e) == eelGRF || (e) == eelRF_NEC || (e) == eelRF_ZERO )
114 #define EEL_PME(e) ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
115 #define EEL_EWALD(e) (EEL_PME(e) || (e) == eelEWALD)
116 #define EEL_FULL(e) (EEL_PME(e) || (e) == eelPOISSON || (e) == eelEWALD)
117 #define EEL_USER(e) ((e) == eelUSER || (e) == eelPMEUSER || (e) == (eelPMEUSERSWITCH))
120 evdwCUT, evdwSWITCH, evdwSHIFT, evdwUSER, evdwENCADSHIFT,
125 eljpmeGEOM, eljpmeLB, eljpmeNR
128 #define EVDW_PME(e) ((e) == evdwPME)
131 ensGRID, ensSIMPLE, ensNR
134 /* 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
135 energy for temperature control */
138 eiMD, eiSteep, eiCG, eiBD, eiSD2, eiNM, eiLBFGS, eiTPI, eiTPIC, eiSD1, eiVV, eiVVAK, eiNR
140 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
141 #define EI_MD(e) ((e) == eiMD || EI_VV(e))
142 #define EI_SD(e) ((e) == eiSD1 || (e) == eiSD2)
143 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
144 /*above integrators may not conserve momenta*/
145 #define EI_DYNAMICS(e) (EI_MD(e) || EI_SD(e) || (e) == eiBD)
146 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
147 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
149 #define EI_STATE_VELOCITY(e) (EI_MD(e) || EI_SD(e))
152 econtLINCS, econtSHAKE, econtNR
156 edrNone, edrSimple, edrEnsemble, edrNR
160 edrwConservative, edrwEqual, edrwNR
163 /* Combination rule things */
165 eCOMB_NONE, eCOMB_GEOMETRIC, eCOMB_ARITHMETIC, eCOMB_GEOM_SIG_EPS, eCOMB_NR
170 eNBF_NONE, eNBF_LJ, eNBF_BHAM, eNBF_NR
173 /* simulated tempering methods */
175 esimtempGEOMETRIC, esimtempEXPONENTIAL, esimtempLINEAR, esimtempNR
179 efepNO, efepYES, efepSTATIC, efepSLOWGROWTH, efepEXPANDED, efepNR
181 /* if efepNO, there are no evaluations at other states.
182 if efepYES, treated equivalently to efepSTATIC.
183 if efepSTATIC, then lambdas do not change during the simulation.
184 if efepSLOWGROWTH, then the states change monotonically throughout the simulation.
185 if efepEXPANDED, then expanded ensemble simulations are occuring.
188 /* FEP coupling types */
190 efptFEP, efptMASS, efptCOUL, efptVDW, efptBONDED, efptRESTRAINT, efptTEMPERATURE, efptNR
193 /* How the lambda weights are calculated:
194 elamstatsMETROPOLIS = using the metropolis criteria
195 elamstatsBARKER = using the Barker critera for transition weights - also called unoptimized Bennett
196 elamstatsMINVAR = using Barker + minimum variance for weights
197 elamstatsWL = Wang-Landu (using visitation counts)
198 elamstatsWWL = Weighted Wang-Landau (using optimized gibbs weighted visitation counts)
201 elamstatsNO, elamstatsMETROPOLIS, elamstatsBARKER, elamstatsMINVAR, elamstatsWL, elamstatsWWL, elamstatsNR
204 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
206 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
208 /* How moves in lambda are calculated:
209 elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
210 elmovemcBARKER - using the Barker criteria, and 50% up and down
211 elmovemcGIBBS - computing the transition using the marginalized probabilities of the lambdas
212 elmovemcMETGIBBS - computing the transition using the metropolized version of Gibbs (Monte Carlo Strategies in Scientific computing, Liu, p. 134)
215 elmcmoveNO, elmcmoveMETROPOLIS, elmcmoveBARKER, elmcmoveGIBBS, elmcmoveMETGIBBS, elmcmoveNR
218 /* how we decide whether weights have reached equilibrium
219 elmceqNO - never stop, weights keep going
220 elmceqYES - fix the weights from the beginning; no movement
221 elmceqWLDELTA - stop when the WL-delta falls below a certain level
222 elmceqNUMATLAM - stop when we have a certain number of samples at every step
223 elmceqSTEPS - stop when we've run a certain total number of steps
224 elmceqSAMPLES - stop when we've run a certain total number of samples
225 elmceqRATIO - stop when the ratio of samples (lowest to highest) is sufficiently large
228 elmceqNO, elmceqYES, elmceqWLDELTA, elmceqNUMATLAM, elmceqSTEPS, elmceqSAMPLES, elmceqRATIO, elmceqNR
231 /* separate_dhdl_file selection */
234 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
235 esepdhdlfileYES, esepdhdlfileNO, esepdhdlfileNR
238 /* dhdl_derivatives selection */
241 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
242 edhdlderivativesYES, edhdlderivativesNO, edhdlderivativesNR
247 esolNO, esolSPC, esolTIP4P, esolNR
250 /* Dispersion correction */
252 edispcNO, edispcEnerPres, edispcEner, edispcAllEnerPres, edispcAllEner, edispcNR
255 /* Center of mass motion selection */
257 ecmLINEAR, ecmANGULAR, ecmNO, ecmNR
260 /* New version of simulated annealing */
262 eannNO, eannSINGLE, eannPERIODIC, eannNR
265 /* Implicit solvent algorithms */
267 eisNO, eisGBSA, eisNR
270 /* Algorithms for calculating GB radii */
272 egbSTILL, egbHCT, egbOBC, egbNR
276 esaAPPROX, esaNO, esaSTILL, esaNR
281 ewt93, ewt104, ewtTABLE, ewt126, ewtNR
286 epullNO, epullUMBRELLA, epullCONSTRAINT, epullCONST_F, epullNR
290 epullgDIST, epullgDIR, epullgCYL, epullgDIRPBC, epullgNR
293 #define PULL_CYL(pull) ((pull)->eGeom == epullgCYL)
295 /* Enforced rotation groups */
297 erotgISO, erotgISOPF,
300 erotgRM2, erotgRM2PF,
301 erotgFLEX, erotgFLEXT,
302 erotgFLEX2, erotgFLEX2T,
307 erotgFitRMSD, erotgFitNORM, erotgFitPOT, erotgFitNR
310 /* Direction along which ion/water swaps happen in "Computational
311 * Electrophysiology" (CompEL) setups */
313 eswapNO, eswapX, eswapY, eswapZ, eSwapTypesNR
315 /* The following three enums are mainly used for indexing arrays and when
316 * looping over the available ions, channels, or compartments. This hopefully
317 * adds to the code's readability because it makes clear which object is dealt
318 * with in a block of code.
320 * The two compartments for CompEL setups */
322 eCompA, eCompB, eCompNR
324 /* The positive and negative ions CompEL setups, future versions of the
325 * protocol might consider more than two types of ions */
327 eIonNEG, eIonPOS, eIonNR
329 /* The chanels that define with their COM the compartment boundaries in
330 * CompEL setups. In principle one could also use modified setups with
331 * more than two channels. */
333 eChan0, eChan1, eChanNR
338 eQMmethodAM1, eQMmethodPM3, eQMmethodRHF,
339 eQMmethodUHF, eQMmethodDFT, eQMmethodB3LYP, eQMmethodMP2, eQMmethodCASSCF, eQMmethodB3LYPLAN,
340 eQMmethodDIRECT, eQMmethodNR
344 eQMbasisSTO3G, eQMbasisSTO3G2, eQMbasis321G,
345 eQMbasis321Gp, eQMbasis321dGp, eQMbasis621G,
346 eQMbasis631G, eQMbasis631Gp, eQMbasis631dGp,
347 eQMbasis6311G, eQMbasisNR
351 eQMMMschemenormal, eQMMMschemeoniom, eQMMMschemeNR
355 eMultentOptName, eMultentOptNo, eMultentOptLast, eMultentOptNR
358 /* flat-bottom posres geometries */
360 efbposresZERO, efbposresSPHERE, efbposresCYLINDER, efbposresX, efbposresY, efbposresZ,
365 eAdressOff, eAdressConst, eAdressXSplit, eAdressSphere, eAdressNR
369 eAdressICOff, eAdressICThermoForce, eAdressICNR
373 eAdressSITEcom, eAdressSITEcog, eAdressSITEatom, eAdressSITEatomatom, eAdressSITENR
377 /* The interactions contained in a (possibly merged) table
378 * for computing electrostatic, VDW repulsion and/or VDW dispersion
381 enum gmx_table_interaction
383 GMX_TABLE_INTERACTION_ELEC,
384 GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
385 GMX_TABLE_INTERACTION_VDWEXPREP_VDWDISP,
386 GMX_TABLE_INTERACTION_VDWDISP,
387 GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
388 GMX_TABLE_INTERACTION_ELEC_VDWEXPREP_VDWDISP,
389 GMX_TABLE_INTERACTION_ELEC_VDWDISP,
390 GMX_TABLE_INTERACTION_NR
393 /* Different formats for table data. Cubic spline tables are typically stored
394 * with the four Y,F,G,H intermediate values (check tables.c for format), which
395 * makes it easy to load with a single 4-way SIMD instruction too.
396 * Linear tables only need one value per table point, or two if both V and F
397 * are calculated. However, with SIMD instructions this makes the loads unaligned,
398 * and in that case we store the data as F, D=F(i+1)-F(i), V, and then a blank value,
399 * which again makes it possible to load as a single instruction.
401 enum gmx_table_format
403 GMX_TABLE_FORMAT_CUBICSPLINE_YFGH,
404 GMX_TABLE_FORMAT_LINEAR_VF,
405 GMX_TABLE_FORMAT_LINEAR_V,
406 GMX_TABLE_FORMAT_LINEAR_F,
407 GMX_TABLE_FORMAT_LINEAR_FDV0,
411 /* Neighborlist geometry type.
412 * Kernels will compute interactions between two particles,
413 * 3-center water, 4-center water or coarse-grained beads.
415 enum gmx_nblist_kernel_geometry
417 GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE,
418 GMX_NBLIST_GEOMETRY_WATER3_PARTICLE,
419 GMX_NBLIST_GEOMETRY_WATER3_WATER3,
420 GMX_NBLIST_GEOMETRY_WATER4_PARTICLE,
421 GMX_NBLIST_GEOMETRY_WATER4_WATER4,
422 GMX_NBLIST_GEOMETRY_CG_CG,
423 GMX_NBLIST_GEOMETRY_NR
426 /* Types of electrostatics calculations available inside nonbonded kernels.
427 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
428 * many interactions for instance map to tabulated kernels.
430 enum gmx_nbkernel_elec
432 GMX_NBKERNEL_ELEC_NONE,
433 GMX_NBKERNEL_ELEC_COULOMB,
434 GMX_NBKERNEL_ELEC_REACTIONFIELD,
435 GMX_NBKERNEL_ELEC_CUBICSPLINETABLE,
436 GMX_NBKERNEL_ELEC_GENERALIZEDBORN,
437 GMX_NBKERNEL_ELEC_EWALD,
441 /* Types of vdw calculations available inside nonbonded kernels.
442 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
443 * many interactions for instance map to tabulated kernels.
445 enum gmx_nbkernel_vdw
447 GMX_NBKERNEL_VDW_NONE,
448 GMX_NBKERNEL_VDW_LENNARDJONES,
449 GMX_NBKERNEL_VDW_BUCKINGHAM,
450 GMX_NBKERNEL_VDW_CUBICSPLINETABLE,
453 /* Types of interactions inside the neighborlist
455 enum gmx_nblist_interaction_type
457 GMX_NBLIST_INTERACTION_STANDARD,
458 GMX_NBLIST_INTERACTION_FREE_ENERGY,
459 GMX_NBLIST_INTERACTION_ADRESS,
460 GMX_NBLIST_INTERACTION_NR
467 #endif /* ENUMS_H_ */