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 * check out http://www.gromacs.org for more information.
7 * Copyright (c) 2012,2013, by the GROMACS development team, led by
8 * David van der Spoel, Berk Hess, Erik Lindahl, and including many
9 * others, as listed in the AUTHORS file in the top-level source
10 * directory and at http://www.gromacs.org.
12 * GROMACS is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public License
14 * as published by the Free Software Foundation; either version 2.1
15 * of the License, or (at your option) any later version.
17 * GROMACS is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with GROMACS; if not, see
24 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
25 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27 * If you want to redistribute modifications to GROMACS, please
28 * consider that scientific software is very special. Version
29 * control is crucial - bugs must be traceable. We will be happy to
30 * consider code for inclusion in the official distribution, but
31 * derived work must not be called official GROMACS. Details are found
32 * in the README & COPYING files - if they are missing, get the
33 * official version at http://www.gromacs.org.
35 * To help us fund GROMACS development, we humbly ask that you cite
36 * the research papers on the package. Check out http://www.gromacs.org.
46 } /* fixes auto-indentation problems */
49 /* note: these enums should correspond to the names in gmxlib/names.c */
52 epbcXYZ
, epbcNONE
, epbcXY
, epbcSCREW
, epbcNR
56 etcNO
, etcBERENDSEN
, etcNOSEHOOVER
, etcYES
, etcANDERSEN
, etcANDERSENMASSIVE
, etcVRESCALE
, etcNR
57 }; /* yes is an alias for berendsen */
59 #define ETC_ANDERSEN(e) (((e) == etcANDERSENMASSIVE) || ((e) == etcANDERSEN))
62 epcNO
, epcBERENDSEN
, epcPARRINELLORAHMAN
, epcISOTROPIC
, epcMTTK
, epcNR
63 }; /* isotropic is an alias for berendsen */
65 /* trotter decomposition extended variable parts */
67 etrtNONE
, etrtNHC
, etrtBAROV
, etrtBARONHC
, etrtNHC2
, etrtBAROV2
, etrtBARONHC2
,
68 etrtVELOCITY1
, etrtVELOCITY2
, etrtPOSITION
, etrtSKIPALL
, etrtNR
71 /* sequenced parts of the trotter decomposition */
73 ettTSEQ0
, ettTSEQ1
, ettTSEQ2
, ettTSEQ3
, ettTSEQ4
, ettTSEQMAX
77 epctISOTROPIC
, epctSEMIISOTROPIC
, epctANISOTROPIC
,
78 epctSURFACETENSION
, epctNR
82 erscNO
, erscALL
, erscCOM
, erscNR
86 ecutsGROUP
, ecutsVERLET
, ecutsNR
89 /* Coulomb / VdW interaction modifiers.
90 * grompp replaces eintmodPOTSHIFT_VERLET by eintmodPOTSHIFT or eintmodNONE.
91 * Exactcutoff is only used by Reaction-field-zero, and is not user-selectable.
94 eintmodPOTSHIFT_VERLET
, eintmodPOTSHIFT
, eintmodNONE
, eintmodPOTSWITCH
, eintmodEXACTCUTOFF
, eintmodNR
98 * eelNOTUSED1 used to be GB, but to enable generalized born with different
99 * forms of electrostatics (RF, switch, etc.) in the future it is now selected
100 * separately (through the implicit_solvent option).
103 eelCUT
, eelRF
, eelGRF
, eelPME
, eelEWALD
, eelP3M_AD
,
104 eelPOISSON
, eelSWITCH
, eelSHIFT
, eelUSER
, eelGB_NOTUSED
, eelRF_NEC
, eelENCADSHIFT
,
105 eelPMEUSER
, eelPMESWITCH
, eelPMEUSERSWITCH
, eelRF_ZERO
, eelNR
110 eewg3D
, eewg3DC
, eewgNR
113 #define EEL_RF(e) ((e) == eelRF || (e) == eelGRF || (e) == eelRF_NEC || (e) == eelRF_ZERO )
115 #define EEL_PME(e) ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
116 #define EEL_FULL(e) (EEL_PME(e) || (e) == eelPOISSON || (e) == eelEWALD)
118 #define EEL_SWITCHED(e) ((e) == eelSWITCH || (e) == eelSHIFT || (e) == eelENCADSHIFT || (e) == eelPMESWITCH || (e) == eelPMEUSERSWITCH)
120 #define EEL_USER(e) ((e) == eelUSER || (e) == eelPMEUSER || (e) == (eelPMEUSERSWITCH))
122 #define EEL_IS_ZERO_AT_CUTOFF(e) (EEL_SWITCHED(e) || (e) == eelRF_ZERO)
124 #define EEL_MIGHT_BE_ZERO_AT_CUTOFF(e) (EEL_IS_ZERO_AT_CUTOFF(e) || (e) == eelUSER || (e) == eelPMEUSER)
127 evdwCUT
, evdwSWITCH
, evdwSHIFT
, evdwUSER
, evdwENCADSHIFT
, evdwNR
130 #define EVDW_SWITCHED(e) ((e) == evdwSWITCH || (e) == evdwSHIFT || (e) == evdwENCADSHIFT)
132 #define EVDW_IS_ZERO_AT_CUTOFF(e) EVDW_SWITCHED(e)
134 #define EVDW_MIGHT_BE_ZERO_AT_CUTOFF(e) (EVDW_IS_ZERO_AT_CUTOFF(e) || (e) == evdwUSER)
137 ensGRID
, ensSIMPLE
, ensNR
140 /* 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
141 energy for temperature control */
144 eiMD
, eiSteep
, eiCG
, eiBD
, eiSD2
, eiNM
, eiLBFGS
, eiTPI
, eiTPIC
, eiSD1
, eiVV
, eiVVAK
, eiNR
146 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
147 #define EI_MD(e) ((e) == eiMD || EI_VV(e))
148 #define EI_SD(e) ((e) == eiSD1 || (e) == eiSD2)
149 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
150 /*above integrators may not conserve momenta*/
151 #define EI_DYNAMICS(e) (EI_MD(e) || EI_SD(e) || (e) == eiBD)
152 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
153 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
155 #define EI_STATE_VELOCITY(e) (EI_MD(e) || EI_SD(e))
158 econtLINCS
, econtSHAKE
, econtNR
162 edrNone
, edrSimple
, edrEnsemble
, edrNR
166 edrwConservative
, edrwEqual
, edrwNR
169 /* Combination rule things */
171 eCOMB_NONE
, eCOMB_GEOMETRIC
, eCOMB_ARITHMETIC
, eCOMB_GEOM_SIG_EPS
, eCOMB_NR
176 eNBF_NONE
, eNBF_LJ
, eNBF_BHAM
, eNBF_NR
179 /* simulated tempering methods */
181 esimtempGEOMETRIC
, esimtempEXPONENTIAL
, esimtempLINEAR
, esimtempNR
185 efepNO
, efepYES
, efepSTATIC
, efepSLOWGROWTH
, efepEXPANDED
, efepNR
187 /* if efepNO, there are no evaluations at other states.
188 if efepYES, treated equivalently to efepSTATIC.
189 if efepSTATIC, then lambdas do not change during the simulation.
190 if efepSLOWGROWTH, then the states change monotonically throughout the simulation.
191 if efepEXPANDED, then expanded ensemble simulations are occuring.
194 /* FEP coupling types */
196 efptFEP
, efptMASS
, efptCOUL
, efptVDW
, efptBONDED
, efptRESTRAINT
, efptTEMPERATURE
, efptNR
199 /* How the lambda weights are calculated:
200 elamstatsMETROPOLIS = using the metropolis criteria
201 elamstatsBARKER = using the Barker critera for transition weights - also called unoptimized Bennett
202 elamstatsMINVAR = using Barker + minimum variance for weights
203 elamstatsWL = Wang-Landu (using visitation counts)
204 elamstatsWWL = Weighted Wang-Landau (using optimized gibbs weighted visitation counts)
207 elamstatsNO
, elamstatsMETROPOLIS
, elamstatsBARKER
, elamstatsMINVAR
, elamstatsWL
, elamstatsWWL
, elamstatsNR
210 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
212 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
214 /* How moves in lambda are calculated:
215 elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
216 elmovemcBARKER - using the Barker criteria, and 50% up and down
217 elmovemcGIBBS - computing the transition using the marginalized probabilities of the lambdas
218 elmovemcMETGIBBS - computing the transition using the metropolized version of Gibbs (Monte Carlo Strategies in Scientific computing, Liu, p. 134)
221 elmcmoveNO
, elmcmoveMETROPOLIS
, elmcmoveBARKER
, elmcmoveGIBBS
, elmcmoveMETGIBBS
, elmcmoveNR
224 /* how we decide whether weights have reached equilibrium
225 elmceqNO - never stop, weights keep going
226 elmceqYES - fix the weights from the beginning; no movement
227 elmceqWLDELTA - stop when the WL-delta falls below a certain level
228 elmceqNUMATLAM - stop when we have a certain number of samples at every step
229 elmceqSTEPS - stop when we've run a certain total number of steps
230 elmceqSAMPLES - stop when we've run a certain total number of samples
231 elmceqRATIO - stop when the ratio of samples (lowest to highest) is sufficiently large
234 elmceqNO
, elmceqYES
, elmceqWLDELTA
, elmceqNUMATLAM
, elmceqSTEPS
, elmceqSAMPLES
, elmceqRATIO
, elmceqNR
237 /* separate_dhdl_file selection */
240 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
241 esepdhdlfileYES
, esepdhdlfileNO
, esepdhdlfileNR
244 /* dhdl_derivatives selection */
247 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
248 edhdlderivativesYES
, edhdlderivativesNO
, edhdlderivativesNR
253 esolNO
, esolSPC
, esolTIP4P
, esolNR
256 /* Dispersion correction */
258 edispcNO
, edispcEnerPres
, edispcEner
, edispcAllEnerPres
, edispcAllEner
, edispcNR
261 /* Shell types, for completion stuff */
263 eshellCSH
, eshellBASH
, eshellZSH
, eshellNR
266 /* Center of mass motion selection */
268 ecmLINEAR
, ecmANGULAR
, ecmNO
, ecmNR
271 /* New version of simulated annealing */
273 eannNO
, eannSINGLE
, eannPERIODIC
, eannNR
276 /* Implicit solvent algorithms */
278 eisNO
, eisGBSA
, eisNR
281 /* Algorithms for calculating GB radii */
283 egbSTILL
, egbHCT
, egbOBC
, egbNR
287 esaAPPROX
, esaNO
, esaSTILL
, esaNR
292 ewt93
, ewt104
, ewtTABLE
, ewt126
, ewtNR
297 epullNO
, epullUMBRELLA
, epullCONSTRAINT
, epullCONST_F
, epullNR
301 epullgDIST
, epullgDIR
, epullgCYL
, epullgPOS
, epullgDIRPBC
, epullgNR
304 #define PULL_CYL(pull) ((pull)->eGeom == epullgCYL)
306 /* Enforced rotation groups */
308 erotgISO
, erotgISOPF
,
311 erotgRM2
, erotgRM2PF
,
312 erotgFLEX
, erotgFLEXT
,
313 erotgFLEX2
, erotgFLEX2T
,
318 erotgFitRMSD
, erotgFitNORM
, erotgFitPOT
, erotgFitNR
323 eQMmethodAM1
, eQMmethodPM3
, eQMmethodRHF
,
324 eQMmethodUHF
, eQMmethodDFT
, eQMmethodB3LYP
, eQMmethodMP2
, eQMmethodCASSCF
, eQMmethodB3LYPLAN
,
325 eQMmethodDIRECT
, eQMmethodNR
329 eQMbasisSTO3G
, eQMbasisSTO3G2
, eQMbasis321G
,
330 eQMbasis321Gp
, eQMbasis321dGp
, eQMbasis621G
,
331 eQMbasis631G
, eQMbasis631Gp
, eQMbasis631dGp
,
332 eQMbasis6311G
, eQMbasisNR
336 eQMMMschemenormal
, eQMMMschemeoniom
, eQMMMschemeNR
340 eMultentOptName
, eMultentOptNo
, eMultentOptLast
, eMultentOptNR
344 eAdressOff
, eAdressConst
, eAdressXSplit
, eAdressSphere
, eAdressNR
348 eAdressICOff
, eAdressICThermoForce
, eAdressICNR
352 eAdressSITEcom
, eAdressSITEcog
, eAdressSITEatom
, eAdressSITEatomatom
, eAdressSITENR
356 /* The interactions contained in a (possibly merged) table
357 * for computing electrostatic, VDW repulsion and/or VDW dispersion
360 enum gmx_table_interaction
362 GMX_TABLE_INTERACTION_ELEC
,
363 GMX_TABLE_INTERACTION_VDWREP_VDWDISP
,
364 GMX_TABLE_INTERACTION_VDWEXPREP_VDWDISP
,
365 GMX_TABLE_INTERACTION_VDWDISP
,
366 GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP
,
367 GMX_TABLE_INTERACTION_ELEC_VDWEXPREP_VDWDISP
,
368 GMX_TABLE_INTERACTION_ELEC_VDWDISP
,
369 GMX_TABLE_INTERACTION_NR
372 /* Different formats for table data. Cubic spline tables are typically stored
373 * with the four Y,F,G,H intermediate values (check tables.c for format), which
374 * makes it easy to load with a single 4-way SIMD instruction too.
375 * Linear tables only need one value per table point, or two if both V and F
376 * are calculated. However, with SIMD instructions this makes the loads unaligned,
377 * and in that case we store the data as F, D=F(i+1)-F(i), V, and then a blank value,
378 * which again makes it possible to load as a single instruction.
380 enum gmx_table_format
382 GMX_TABLE_FORMAT_CUBICSPLINE_YFGH
,
383 GMX_TABLE_FORMAT_LINEAR_VF
,
384 GMX_TABLE_FORMAT_LINEAR_V
,
385 GMX_TABLE_FORMAT_LINEAR_F
,
386 GMX_TABLE_FORMAT_LINEAR_FDV0
,
390 /* Neighborlist geometry type.
391 * Kernels will compute interactions between two particles,
392 * 3-center water, 4-center water or coarse-grained beads.
394 enum gmx_nblist_kernel_geometry
396 GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE
,
397 GMX_NBLIST_GEOMETRY_WATER3_PARTICLE
,
398 GMX_NBLIST_GEOMETRY_WATER3_WATER3
,
399 GMX_NBLIST_GEOMETRY_WATER4_PARTICLE
,
400 GMX_NBLIST_GEOMETRY_WATER4_WATER4
,
401 GMX_NBLIST_GEOMETRY_CG_CG
,
402 GMX_NBLIST_GEOMETRY_NR
405 /* Types of electrostatics calculations available inside nonbonded kernels.
406 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
407 * many interactions for instance map to tabulated kernels.
409 enum gmx_nbkernel_elec
411 GMX_NBKERNEL_ELEC_NONE
,
412 GMX_NBKERNEL_ELEC_COULOMB
,
413 GMX_NBKERNEL_ELEC_REACTIONFIELD
,
414 GMX_NBKERNEL_ELEC_CUBICSPLINETABLE
,
415 GMX_NBKERNEL_ELEC_GENERALIZEDBORN
,
416 GMX_NBKERNEL_ELEC_EWALD
,
420 /* Types of vdw calculations available inside nonbonded kernels.
421 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
422 * many interactions for instance map to tabulated kernels.
424 enum gmx_nbkernel_vdw
426 GMX_NBKERNEL_VDW_NONE
,
427 GMX_NBKERNEL_VDW_LENNARDJONES
,
428 GMX_NBKERNEL_VDW_BUCKINGHAM
,
429 GMX_NBKERNEL_VDW_CUBICSPLINETABLE
,
432 /* Types of interactions inside the neighborlist
434 enum gmx_nblist_interaction_type
436 GMX_NBLIST_INTERACTION_STANDARD
,
437 GMX_NBLIST_INTERACTION_FREE_ENERGY
,
438 GMX_NBLIST_INTERACTION_ADRESS
,
439 GMX_NBLIST_INTERACTION_NR
446 #endif /* ENUMS_H_ */