3 * This source code is part of
7 * GROningen MAchine for Chemical Simulations
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.
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.
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.
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.
30 * For more info, check our website at http://www.gromacs.org
33 * GRoups of Organic Molecules in ACtion for Science
43 } /* fixes auto-indentation problems */
46 /* note: these enums should correspond to the names in gmxlib/names.c */
49 epbcXYZ, epbcNONE, epbcXY, epbcSCREW, epbcNR
53 etcNO, etcBERENDSEN, etcNOSEHOOVER, etcYES, etcANDERSEN, etcANDERSENMASSIVE, etcVRESCALE, etcNR
54 }; /* yes is an alias for berendsen */
56 #define ETC_ANDERSEN(e) (((e) == etcANDERSENMASSIVE) || ((e) == etcANDERSEN))
59 epcNO, epcBERENDSEN, epcPARRINELLORAHMAN, epcISOTROPIC, epcMTTK, epcNR
60 }; /* isotropic is an alias for berendsen */
62 /* trotter decomposition extended variable parts */
64 etrtNONE, etrtNHC, etrtBAROV, etrtBARONHC, etrtNHC2, etrtBAROV2, etrtBARONHC2,
65 etrtVELOCITY1, etrtVELOCITY2, etrtPOSITION, etrtSKIPALL, etrtNR
68 /* sequenced parts of the trotter decomposition */
70 ettTSEQ0, ettTSEQ1, ettTSEQ2, ettTSEQ3, ettTSEQ4, ettTSEQMAX
74 epctISOTROPIC, epctSEMIISOTROPIC, epctANISOTROPIC,
75 epctSURFACETENSION, epctNR
79 erscNO, erscALL, erscCOM, erscNR
83 ecutsGROUP, ecutsVERLET, ecutsNR
86 /* Coulomb / VdW interaction modifiers.
87 * grompp replaces eintmodPOTSHIFT_VERLET by eintmodPOTSHIFT or eintmodNONE.
88 * Exactcutoff is only used by Reaction-field-zero, and is not user-selectable.
91 eintmodPOTSHIFT_VERLET, eintmodPOTSHIFT, eintmodNONE, eintmodPOTSWITCH, eintmodEXACTCUTOFF, eintmodNR
95 * eelNOTUSED1 used to be GB, but to enable generalized born with different
96 * forms of electrostatics (RF, switch, etc.) in the future it is now selected
97 * separately (through the implicit_solvent option).
100 eelCUT, eelRF, eelGRF, eelPME, eelEWALD, eelP3M_AD,
101 eelPOISSON, eelSWITCH, eelSHIFT, eelUSER, eelGB_NOTUSED, eelRF_NEC, eelENCADSHIFT,
102 eelPMEUSER, eelPMESWITCH, eelPMEUSERSWITCH, eelRF_ZERO, eelNR
107 eewg3D, eewg3DC, eewgNR
110 #define EEL_RF(e) ((e) == eelRF || (e) == eelGRF || (e) == eelRF_NEC || (e) == eelRF_ZERO )
112 #define EEL_PME(e) ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
113 #define EEL_FULL(e) (EEL_PME(e) || (e) == eelPOISSON || (e) == eelEWALD)
115 #define EEL_SWITCHED(e) ((e) == eelSWITCH || (e) == eelSHIFT || (e) == eelENCADSHIFT || (e) == eelPMESWITCH || (e) == eelPMEUSERSWITCH)
117 #define EEL_USER(e) ((e) == eelUSER || (e) == eelPMEUSER || (e) == (eelPMEUSERSWITCH))
119 #define EEL_IS_ZERO_AT_CUTOFF(e) (EEL_SWITCHED(e) || (e) == eelRF_ZERO)
121 #define EEL_MIGHT_BE_ZERO_AT_CUTOFF(e) (EEL_IS_ZERO_AT_CUTOFF(e) || (e) == eelUSER || (e) == eelPMEUSER)
124 evdwCUT, evdwSWITCH, evdwSHIFT, evdwUSER, evdwENCADSHIFT, evdwNR
127 #define EVDW_SWITCHED(e) ((e) == evdwSWITCH || (e) == evdwSHIFT || (e) == evdwENCADSHIFT)
129 #define EVDW_IS_ZERO_AT_CUTOFF(e) EVDW_SWITCHED(e)
131 #define EVDW_MIGHT_BE_ZERO_AT_CUTOFF(e) (EVDW_IS_ZERO_AT_CUTOFF(e) || (e) == evdwUSER)
134 ensGRID, ensSIMPLE, ensNR
137 /* 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
138 energy for temperature control */
141 eiMD, eiSteep, eiCG, eiBD, eiSD2, eiNM, eiLBFGS, eiTPI, eiTPIC, eiSD1, eiVV, eiVVAK, eiNR
143 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
144 #define EI_MD(e) ((e) == eiMD || EI_VV(e))
145 #define EI_SD(e) ((e) == eiSD1 || (e) == eiSD2)
146 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
147 /*above integrators may not conserve momenta*/
148 #define EI_DYNAMICS(e) (EI_MD(e) || EI_SD(e) || (e) == eiBD)
149 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
150 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
152 #define EI_STATE_VELOCITY(e) (EI_MD(e) || EI_SD(e))
155 econtLINCS, econtSHAKE, econtNR
159 edrNone, edrSimple, edrEnsemble, edrNR
163 edrwConservative, edrwEqual, edrwNR
166 /* Combination rule things */
168 eCOMB_NONE, eCOMB_GEOMETRIC, eCOMB_ARITHMETIC, eCOMB_GEOM_SIG_EPS, eCOMB_NR
173 eNBF_NONE, eNBF_LJ, eNBF_BHAM, eNBF_NR
176 /* simulated tempering methods */
178 esimtempGEOMETRIC, esimtempEXPONENTIAL, esimtempLINEAR, esimtempNR
182 efepNO, efepYES, efepSTATIC, efepSLOWGROWTH, efepEXPANDED, efepNR
184 /* if efepNO, there are no evaluations at other states.
185 if efepYES, treated equivalently to efepSTATIC.
186 if efepSTATIC, then lambdas do not change during the simulation.
187 if efepSLOWGROWTH, then the states change monotonically throughout the simulation.
188 if efepEXPANDED, then expanded ensemble simulations are occuring.
191 /* FEP coupling types */
193 efptFEP, efptMASS, efptCOUL, efptVDW, efptBONDED, efptRESTRAINT, efptTEMPERATURE, efptNR
196 /* How the lambda weights are calculated:
197 elamstatsMETROPOLIS = using the metropolis criteria
198 elamstatsBARKER = using the Barker critera for transition weights - also called unoptimized Bennett
199 elamstatsMINVAR = using Barker + minimum variance for weights
200 elamstatsWL = Wang-Landu (using visitation counts)
201 elamstatsWWL = Weighted Wang-Landau (using optimized gibbs weighted visitation counts)
204 elamstatsNO, elamstatsMETROPOLIS, elamstatsBARKER, elamstatsMINVAR, elamstatsWL, elamstatsWWL, elamstatsNR
207 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
209 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
211 /* How moves in lambda are calculated:
212 elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
213 elmovemcBARKER - using the Barker criteria, and 50% up and down
214 elmovemcGIBBS - computing the transition using the marginalized probabilities of the lambdas
215 elmovemcMETGIBBS - computing the transition using the metropolized version of Gibbs (Monte Carlo Strategies in Scientific computing, Liu, p. 134)
218 elmcmoveNO, elmcmoveMETROPOLIS, elmcmoveBARKER, elmcmoveGIBBS, elmcmoveMETGIBBS, elmcmoveNR
221 /* how we decide whether weights have reached equilibrium
222 elmceqNO - never stop, weights keep going
223 elmceqYES - fix the weights from the beginning; no movement
224 elmceqWLDELTA - stop when the WL-delta falls below a certain level
225 elmceqNUMATLAM - stop when we have a certain number of samples at every step
226 elmceqSTEPS - stop when we've run a certain total number of steps
227 elmceqSAMPLES - stop when we've run a certain total number of samples
228 elmceqRATIO - stop when the ratio of samples (lowest to highest) is sufficiently large
231 elmceqNO, elmceqYES, elmceqWLDELTA, elmceqNUMATLAM, elmceqSTEPS, elmceqSAMPLES, elmceqRATIO, elmceqNR
234 /* separate_dhdl_file selection */
237 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
238 esepdhdlfileYES, esepdhdlfileNO, esepdhdlfileNR
241 /* dhdl_derivatives selection */
244 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
245 edhdlderivativesYES, edhdlderivativesNO, edhdlderivativesNR
250 esolNO, esolSPC, esolTIP4P, esolNR
253 /* Dispersion correction */
255 edispcNO, edispcEnerPres, edispcEner, edispcAllEnerPres, edispcAllEner, edispcNR
258 /* Center of mass motion selection */
260 ecmLINEAR, ecmANGULAR, ecmNO, ecmNR
263 /* New version of simulated annealing */
265 eannNO, eannSINGLE, eannPERIODIC, eannNR
268 /* Implicit solvent algorithms */
270 eisNO, eisGBSA, eisNR
273 /* Algorithms for calculating GB radii */
275 egbSTILL, egbHCT, egbOBC, egbNR
279 esaAPPROX, esaNO, esaSTILL, esaNR
284 ewt93, ewt104, ewtTABLE, ewt126, ewtNR
289 epullNO, epullUMBRELLA, epullCONSTRAINT, epullCONST_F, epullNR
293 epullgDIST, epullgDIR, epullgCYL, epullgPOS, epullgDIRPBC, epullgNR
296 #define PULL_CYL(pull) ((pull)->eGeom == epullgCYL)
298 /* Enforced rotation groups */
300 erotgISO, erotgISOPF,
303 erotgRM2, erotgRM2PF,
304 erotgFLEX, erotgFLEXT,
305 erotgFLEX2, erotgFLEX2T,
310 erotgFitRMSD, erotgFitNORM, erotgFitPOT, erotgFitNR
315 eQMmethodAM1, eQMmethodPM3, eQMmethodRHF,
316 eQMmethodUHF, eQMmethodDFT, eQMmethodB3LYP, eQMmethodMP2, eQMmethodCASSCF, eQMmethodB3LYPLAN,
317 eQMmethodDIRECT, eQMmethodNR
321 eQMbasisSTO3G, eQMbasisSTO3G2, eQMbasis321G,
322 eQMbasis321Gp, eQMbasis321dGp, eQMbasis621G,
323 eQMbasis631G, eQMbasis631Gp, eQMbasis631dGp,
324 eQMbasis6311G, eQMbasisNR
328 eQMMMschemenormal, eQMMMschemeoniom, eQMMMschemeNR
332 eMultentOptName, eMultentOptNo, eMultentOptLast, eMultentOptNR
335 /* flat-bottom posres geometries */
337 efbposresZERO, efbposresSPHERE, efbposresCYLINDER, efbposresX, efbposresY, efbposresZ,
342 eAdressOff, eAdressConst, eAdressXSplit, eAdressSphere, eAdressNR
346 eAdressICOff, eAdressICThermoForce, eAdressICNR
350 eAdressSITEcom, eAdressSITEcog, eAdressSITEatom, eAdressSITEatomatom, eAdressSITENR
354 /* The interactions contained in a (possibly merged) table
355 * for computing electrostatic, VDW repulsion and/or VDW dispersion
358 enum gmx_table_interaction
360 GMX_TABLE_INTERACTION_ELEC,
361 GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
362 GMX_TABLE_INTERACTION_VDWEXPREP_VDWDISP,
363 GMX_TABLE_INTERACTION_VDWDISP,
364 GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
365 GMX_TABLE_INTERACTION_ELEC_VDWEXPREP_VDWDISP,
366 GMX_TABLE_INTERACTION_ELEC_VDWDISP,
367 GMX_TABLE_INTERACTION_NR
370 /* Different formats for table data. Cubic spline tables are typically stored
371 * with the four Y,F,G,H intermediate values (check tables.c for format), which
372 * makes it easy to load with a single 4-way SIMD instruction too.
373 * Linear tables only need one value per table point, or two if both V and F
374 * are calculated. However, with SIMD instructions this makes the loads unaligned,
375 * and in that case we store the data as F, D=F(i+1)-F(i), V, and then a blank value,
376 * which again makes it possible to load as a single instruction.
378 enum gmx_table_format
380 GMX_TABLE_FORMAT_CUBICSPLINE_YFGH,
381 GMX_TABLE_FORMAT_LINEAR_VF,
382 GMX_TABLE_FORMAT_LINEAR_V,
383 GMX_TABLE_FORMAT_LINEAR_F,
384 GMX_TABLE_FORMAT_LINEAR_FDV0,
388 /* Neighborlist geometry type.
389 * Kernels will compute interactions between two particles,
390 * 3-center water, 4-center water or coarse-grained beads.
392 enum gmx_nblist_kernel_geometry
394 GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE,
395 GMX_NBLIST_GEOMETRY_WATER3_PARTICLE,
396 GMX_NBLIST_GEOMETRY_WATER3_WATER3,
397 GMX_NBLIST_GEOMETRY_WATER4_PARTICLE,
398 GMX_NBLIST_GEOMETRY_WATER4_WATER4,
399 GMX_NBLIST_GEOMETRY_CG_CG,
400 GMX_NBLIST_GEOMETRY_NR
403 /* Types of electrostatics calculations available inside nonbonded kernels.
404 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
405 * many interactions for instance map to tabulated kernels.
407 enum gmx_nbkernel_elec
409 GMX_NBKERNEL_ELEC_NONE,
410 GMX_NBKERNEL_ELEC_COULOMB,
411 GMX_NBKERNEL_ELEC_REACTIONFIELD,
412 GMX_NBKERNEL_ELEC_CUBICSPLINETABLE,
413 GMX_NBKERNEL_ELEC_GENERALIZEDBORN,
414 GMX_NBKERNEL_ELEC_EWALD,
418 /* Types of vdw calculations available inside nonbonded kernels.
419 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
420 * many interactions for instance map to tabulated kernels.
422 enum gmx_nbkernel_vdw
424 GMX_NBKERNEL_VDW_NONE,
425 GMX_NBKERNEL_VDW_LENNARDJONES,
426 GMX_NBKERNEL_VDW_BUCKINGHAM,
427 GMX_NBKERNEL_VDW_CUBICSPLINETABLE,
430 /* Types of interactions inside the neighborlist
432 enum gmx_nblist_interaction_type
434 GMX_NBLIST_INTERACTION_STANDARD,
435 GMX_NBLIST_INTERACTION_FREE_ENERGY,
436 GMX_NBLIST_INTERACTION_ADRESS,
437 GMX_NBLIST_INTERACTION_NR
444 #endif /* ENUMS_H_ */