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,2015, 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_PME_EWALD(e) (EEL_PME(e) || (e) == eelEWALD)
116 #define EEL_FULL(e) (EEL_PME_EWALD(e) || (e) == eelPOISSON)
118 #define EEL_USER(e) ((e) == eelUSER || (e) == eelPMEUSER || (e) == (eelPMEUSERSWITCH))
121 evdwCUT, evdwSWITCH, evdwSHIFT, evdwUSER, evdwENCADSHIFT,
126 eljpmeGEOM, eljpmeLB, eljpmeNR
129 #define EVDW_PME(e) ((e) == evdwPME)
132 ensGRID, ensSIMPLE, ensNR
135 /* 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
136 energy for temperature control */
139 eiMD, eiSteep, eiCG, eiBD, eiSD2, eiNM, eiLBFGS, eiTPI, eiTPIC, eiSD1, eiVV, eiVVAK, eiNR
141 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
142 #define EI_MD(e) ((e) == eiMD || EI_VV(e))
143 #define EI_SD(e) ((e) == eiSD1 || (e) == eiSD2)
144 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
145 /*above integrators may not conserve momenta*/
146 #define EI_DYNAMICS(e) (EI_MD(e) || EI_SD(e) || (e) == eiBD)
147 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
148 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
150 #define EI_STATE_VELOCITY(e) (EI_MD(e) || EI_SD(e))
153 econtLINCS, econtSHAKE, econtNR
157 edrNone, edrSimple, edrEnsemble, edrNR
161 edrwConservative, edrwEqual, edrwNR
164 /* Combination rule things */
166 eCOMB_NONE, eCOMB_GEOMETRIC, eCOMB_ARITHMETIC, eCOMB_GEOM_SIG_EPS, eCOMB_NR
171 eNBF_NONE, eNBF_LJ, eNBF_BHAM, eNBF_NR
174 /* simulated tempering methods */
176 esimtempGEOMETRIC, esimtempEXPONENTIAL, esimtempLINEAR, esimtempNR
180 efepNO, efepYES, efepSTATIC, efepSLOWGROWTH, efepEXPANDED, efepNR
182 /* if efepNO, there are no evaluations at other states.
183 if efepYES, treated equivalently to efepSTATIC.
184 if efepSTATIC, then lambdas do not change during the simulation.
185 if efepSLOWGROWTH, then the states change monotonically throughout the simulation.
186 if efepEXPANDED, then expanded ensemble simulations are occuring.
189 /* FEP coupling types */
191 efptFEP, efptMASS, efptCOUL, efptVDW, efptBONDED, efptRESTRAINT, efptTEMPERATURE, efptNR
194 /* Printing the energy to the free energy dhdl file. YES is an alias to TOTAL, and
195 * will be converted in readir, so we never have to account for it in code.
198 edHdLPrintEnergyNO, edHdLPrintEnergyTOTAL, edHdLPrintEnergyPOTENTIAL, edHdLPrintEnergyYES, edHdLPrintEnergyNR
201 /* How the lambda weights are calculated:
202 elamstatsMETROPOLIS = using the metropolis criteria
203 elamstatsBARKER = using the Barker critera for transition weights - also called unoptimized Bennett
204 elamstatsMINVAR = using Barker + minimum variance for weights
205 elamstatsWL = Wang-Landu (using visitation counts)
206 elamstatsWWL = Weighted Wang-Landau (using optimized gibbs weighted visitation counts)
209 elamstatsNO, elamstatsMETROPOLIS, elamstatsBARKER, elamstatsMINVAR, elamstatsWL, elamstatsWWL, elamstatsNR
212 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
214 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
216 /* How moves in lambda are calculated:
217 elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
218 elmovemcBARKER - using the Barker criteria, and 50% up and down
219 elmovemcGIBBS - computing the transition using the marginalized probabilities of the lambdas
220 elmovemcMETGIBBS - computing the transition using the metropolized version of Gibbs (Monte Carlo Strategies in Scientific computing, Liu, p. 134)
223 elmcmoveNO, elmcmoveMETROPOLIS, elmcmoveBARKER, elmcmoveGIBBS, elmcmoveMETGIBBS, elmcmoveNR
226 /* how we decide whether weights have reached equilibrium
227 elmceqNO - never stop, weights keep going
228 elmceqYES - fix the weights from the beginning; no movement
229 elmceqWLDELTA - stop when the WL-delta falls below a certain level
230 elmceqNUMATLAM - stop when we have a certain number of samples at every step
231 elmceqSTEPS - stop when we've run a certain total number of steps
232 elmceqSAMPLES - stop when we've run a certain total number of samples
233 elmceqRATIO - stop when the ratio of samples (lowest to highest) is sufficiently large
236 elmceqNO, elmceqYES, elmceqWLDELTA, elmceqNUMATLAM, elmceqSTEPS, elmceqSAMPLES, elmceqRATIO, elmceqNR
239 /* separate_dhdl_file selection */
242 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
243 esepdhdlfileYES, esepdhdlfileNO, esepdhdlfileNR
246 /* dhdl_derivatives selection */
249 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
250 edhdlderivativesYES, edhdlderivativesNO, edhdlderivativesNR
255 esolNO, esolSPC, esolTIP4P, esolNR
258 /* Dispersion correction */
260 edispcNO, edispcEnerPres, edispcEner, edispcAllEnerPres, edispcAllEner, edispcNR
263 /* Center of mass motion selection */
265 ecmLINEAR, ecmANGULAR, ecmNO, ecmNR
268 /* New version of simulated annealing */
270 eannNO, eannSINGLE, eannPERIODIC, eannNR
273 /* Implicit solvent algorithms */
275 eisNO, eisGBSA, eisNR
278 /* Algorithms for calculating GB radii */
280 egbSTILL, egbHCT, egbOBC, egbNR
284 esaAPPROX, esaNO, esaSTILL, esaNR
289 ewt93, ewt104, ewtTABLE, ewt126, ewtNR
294 epullUMBRELLA, epullCONSTRAINT, epullCONST_F, epullFLATBOTTOM, epullNR
298 epullgDIST, epullgDIR, epullgCYL, epullgDIRPBC, epullgDIRRELATIVE, epullgNR
301 /* Enforced rotation groups */
303 erotgISO, erotgISOPF,
306 erotgRM2, erotgRM2PF,
307 erotgFLEX, erotgFLEXT,
308 erotgFLEX2, erotgFLEX2T,
313 erotgFitRMSD, erotgFitNORM, erotgFitPOT, erotgFitNR
316 /* Direction along which ion/water swaps happen in "Computational
317 * Electrophysiology" (CompEL) setups */
319 eswapNO, eswapX, eswapY, eswapZ, eSwapTypesNR
324 eQMmethodAM1, eQMmethodPM3, eQMmethodRHF,
325 eQMmethodUHF, eQMmethodDFT, eQMmethodB3LYP, eQMmethodMP2, eQMmethodCASSCF, eQMmethodB3LYPLAN,
326 eQMmethodDIRECT, eQMmethodNR
330 eQMbasisSTO3G, eQMbasisSTO3G2, eQMbasis321G,
331 eQMbasis321Gp, eQMbasis321dGp, eQMbasis621G,
332 eQMbasis631G, eQMbasis631Gp, eQMbasis631dGp,
333 eQMbasis6311G, eQMbasisNR
337 eQMMMschemenormal, eQMMMschemeoniom, eQMMMschemeNR
341 eMultentOptName, eMultentOptNo, eMultentOptLast, eMultentOptNR
344 /* flat-bottom posres geometries */
346 efbposresZERO, efbposresSPHERE, efbposresCYLINDER, efbposresX, efbposresY, efbposresZ,
347 efbposresCYLINDERX, efbposresCYLINDERY, efbposresCYLINDERZ, efbposresNR
351 eAdressOff, eAdressConst, eAdressXSplit, eAdressSphere, eAdressNR
355 eAdressICOff, eAdressICThermoForce, eAdressICNR
359 eAdressSITEcom, eAdressSITEcog, eAdressSITEatom, eAdressSITEatomatom, eAdressSITENR
363 /* The interactions contained in a (possibly merged) table
364 * for computing electrostatic, VDW repulsion and/or VDW dispersion
367 enum gmx_table_interaction
369 GMX_TABLE_INTERACTION_ELEC,
370 GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
371 GMX_TABLE_INTERACTION_VDWEXPREP_VDWDISP,
372 GMX_TABLE_INTERACTION_VDWDISP,
373 GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
374 GMX_TABLE_INTERACTION_ELEC_VDWEXPREP_VDWDISP,
375 GMX_TABLE_INTERACTION_ELEC_VDWDISP,
376 GMX_TABLE_INTERACTION_NR
379 /* Different formats for table data. Cubic spline tables are typically stored
380 * with the four Y,F,G,H intermediate values (check tables.c for format), which
381 * makes it easy to load with a single 4-way SIMD instruction too.
382 * Linear tables only need one value per table point, or two if both V and F
383 * are calculated. However, with SIMD instructions this makes the loads unaligned,
384 * and in that case we store the data as F, D=F(i+1)-F(i), V, and then a blank value,
385 * which again makes it possible to load as a single instruction.
387 enum gmx_table_format
389 GMX_TABLE_FORMAT_CUBICSPLINE_YFGH,
390 GMX_TABLE_FORMAT_LINEAR_VF,
391 GMX_TABLE_FORMAT_LINEAR_V,
392 GMX_TABLE_FORMAT_LINEAR_F,
393 GMX_TABLE_FORMAT_LINEAR_FDV0,
397 /* Neighborlist geometry type.
398 * Kernels will compute interactions between two particles,
399 * 3-center water, 4-center water or coarse-grained beads.
401 enum gmx_nblist_kernel_geometry
403 GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE,
404 GMX_NBLIST_GEOMETRY_WATER3_PARTICLE,
405 GMX_NBLIST_GEOMETRY_WATER3_WATER3,
406 GMX_NBLIST_GEOMETRY_WATER4_PARTICLE,
407 GMX_NBLIST_GEOMETRY_WATER4_WATER4,
408 GMX_NBLIST_GEOMETRY_CG_CG,
409 GMX_NBLIST_GEOMETRY_NR
412 /* Types of electrostatics calculations available inside nonbonded kernels.
413 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
414 * many interactions for instance map to tabulated kernels.
416 enum gmx_nbkernel_elec
418 GMX_NBKERNEL_ELEC_NONE,
419 GMX_NBKERNEL_ELEC_COULOMB,
420 GMX_NBKERNEL_ELEC_REACTIONFIELD,
421 GMX_NBKERNEL_ELEC_CUBICSPLINETABLE,
422 GMX_NBKERNEL_ELEC_GENERALIZEDBORN,
423 GMX_NBKERNEL_ELEC_EWALD,
427 /* Types of vdw calculations available inside nonbonded kernels.
428 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
429 * many interactions for instance map to tabulated kernels.
431 enum gmx_nbkernel_vdw
433 GMX_NBKERNEL_VDW_NONE,
434 GMX_NBKERNEL_VDW_LENNARDJONES,
435 GMX_NBKERNEL_VDW_BUCKINGHAM,
436 GMX_NBKERNEL_VDW_CUBICSPLINETABLE,
437 GMX_NBKERNEL_VDW_LJEWALD,
440 /* Types of interactions inside the neighborlist
442 enum gmx_nblist_interaction_type
444 GMX_NBLIST_INTERACTION_STANDARD,
445 GMX_NBLIST_INTERACTION_FREE_ENERGY,
446 GMX_NBLIST_INTERACTION_ADRESS,
447 GMX_NBLIST_INTERACTION_NR
454 #endif /* ENUMS_H_ */