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) == (eelPMESWITCH))
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 /* Shell types, for completion stuff */
260 eshellCSH, eshellBASH, eshellZSH, eshellNR
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 epullNO, epullUMBRELLA, epullCONSTRAINT, epullCONST_F, epullNR
298 epullgDIST, epullgDIR, epullgCYL, epullgPOS, epullgDIRPBC, epullgNR
301 #define PULL_CYL(pull) ((pull)->eGeom == epullgCYL)
303 /* Enforced rotation groups */
305 erotgISO , erotgISOPF ,
306 erotgPM , erotgPMPF ,
307 erotgRM , erotgRMPF ,
308 erotgRM2 , erotgRM2PF ,
309 erotgFLEX , erotgFLEXT ,
310 erotgFLEX2, erotgFLEX2T,
315 erotgFitRMSD, erotgFitNORM, erotgFitPOT, erotgFitNR
320 eQMmethodAM1, eQMmethodPM3, eQMmethodRHF,
321 eQMmethodUHF, eQMmethodDFT, eQMmethodB3LYP, eQMmethodMP2, eQMmethodCASSCF, eQMmethodB3LYPLAN,
322 eQMmethodDIRECT, eQMmethodNR
326 eQMbasisSTO3G, eQMbasisSTO3G2, eQMbasis321G,
327 eQMbasis321Gp, eQMbasis321dGp, eQMbasis621G,
328 eQMbasis631G, eQMbasis631Gp, eQMbasis631dGp,
329 eQMbasis6311G, eQMbasisNR
333 eQMMMschemenormal,eQMMMschemeoniom,eQMMMschemeNR
337 eMultentOptName, eMultentOptNo, eMultentOptLast, eMultentOptNR
341 eAdressOff,eAdressConst, eAdressXSplit, eAdressSphere, eAdressNR
345 eAdressICOff, eAdressICThermoForce, eAdressICNR
349 eAdressSITEcom,eAdressSITEcog, eAdressSITEatom, eAdressSITEatomatom, eAdressSITENR
353 /* The interactions contained in a (possibly merged) table
354 * for computing electrostatic, VDW repulsion and/or VDW dispersion
357 enum gmx_table_interaction
359 GMX_TABLE_INTERACTION_ELEC,
360 GMX_TABLE_INTERACTION_VDWREP_VDWDISP,
361 GMX_TABLE_INTERACTION_VDWEXPREP_VDWDISP,
362 GMX_TABLE_INTERACTION_VDWDISP,
363 GMX_TABLE_INTERACTION_ELEC_VDWREP_VDWDISP,
364 GMX_TABLE_INTERACTION_ELEC_VDWEXPREP_VDWDISP,
365 GMX_TABLE_INTERACTION_ELEC_VDWDISP,
366 GMX_TABLE_INTERACTION_NR
369 /* Different formats for table data. Cubic spline tables are typically stored
370 * with the four Y,F,G,H intermediate values (check tables.c for format), which
371 * makes it easy to load with a single 4-way SIMD instruction too.
372 * Linear tables only need one value per table point, or two if both V and F
373 * are calculated. However, with SIMD instructions this makes the loads unaligned,
374 * and in that case we store the data as F, D=F(i+1)-F(i), V, and then a blank value,
375 * which again makes it possible to load as a single instruction.
377 enum gmx_table_format
379 GMX_TABLE_FORMAT_CUBICSPLINE_YFGH,
380 GMX_TABLE_FORMAT_LINEAR_VF,
381 GMX_TABLE_FORMAT_LINEAR_V,
382 GMX_TABLE_FORMAT_LINEAR_F,
383 GMX_TABLE_FORMAT_LINEAR_FDV0,
387 /* Neighborlist geometry type.
388 * Kernels will compute interactions between two particles,
389 * 3-center water, 4-center water or coarse-grained beads.
391 enum gmx_nblist_kernel_geometry
393 GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE,
394 GMX_NBLIST_GEOMETRY_WATER3_PARTICLE,
395 GMX_NBLIST_GEOMETRY_WATER3_WATER3,
396 GMX_NBLIST_GEOMETRY_WATER4_PARTICLE,
397 GMX_NBLIST_GEOMETRY_WATER4_WATER4,
398 GMX_NBLIST_GEOMETRY_CG_CG,
399 GMX_NBLIST_GEOMETRY_NR
402 /* Types of electrostatics calculations available inside nonbonded kernels.
403 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
404 * many interactions for instance map to tabulated kernels.
406 enum gmx_nbkernel_elec
408 GMX_NBKERNEL_ELEC_NONE,
409 GMX_NBKERNEL_ELEC_COULOMB,
410 GMX_NBKERNEL_ELEC_REACTIONFIELD,
411 GMX_NBKERNEL_ELEC_CUBICSPLINETABLE,
412 GMX_NBKERNEL_ELEC_GENERALIZEDBORN,
413 GMX_NBKERNEL_ELEC_EWALD,
417 /* Types of vdw calculations available inside nonbonded kernels.
418 * Note that these do NOT necessarily correspond to the user selections in the MDP file;
419 * many interactions for instance map to tabulated kernels.
421 enum gmx_nbkernel_vdw
423 GMX_NBKERNEL_VDW_NONE,
424 GMX_NBKERNEL_VDW_LENNARDJONES,
425 GMX_NBKERNEL_VDW_BUCKINGHAM,
426 GMX_NBKERNEL_VDW_CUBICSPLINETABLE,
436 #endif /* ENUMS_H_ */