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
40 /* note: these enums should correspond to the names in gmxlib/names.c */
43 epbcXYZ, epbcNONE, epbcXY, epbcSCREW, epbcNR
47 etcNO, etcBERENDSEN, etcNOSEHOOVER, etcYES, etcANDERSEN, etcANDERSENMASSIVE, etcVRESCALE, etcNR
48 }; /* yes is an alias for berendsen */
50 #define ETC_ANDERSEN(e) (((e) == etcANDERSENMASSIVE) || ((e) == etcANDERSEN))
53 epcNO, epcBERENDSEN, epcPARRINELLORAHMAN, epcISOTROPIC, epcMTTK, epcNR
54 }; /* isotropic is an alias for berendsen */
56 /* trotter decomposition extended variable parts */
58 etrtNONE, etrtNHC, etrtBAROV, etrtBARONHC, etrtNHC2, etrtBAROV2, etrtBARONHC2,
59 etrtVELOCITY1, etrtVELOCITY2, etrtPOSITION, etrtSKIPALL, etrtNR
62 /* sequenced parts of the trotter decomposition */
64 ettTSEQ0, ettTSEQ1, ettTSEQ2, ettTSEQ3, ettTSEQ4, ettTSEQMAX
68 epctISOTROPIC, epctSEMIISOTROPIC, epctANISOTROPIC,
69 epctSURFACETENSION, epctNR
73 erscNO, erscALL, erscCOM, erscNR
77 * eelNOTUSED1 used to be GB, but to enable generalized born with different
78 * forms of electrostatics (RF, switch, etc.) in the future it is now selected
79 * separately (through the implicit_solvent option).
82 eelCUT, eelRF, eelGRF, eelPME, eelEWALD, eelP3M_AD,
83 eelPOISSON, eelSWITCH, eelSHIFT, eelUSER, eelGB_NOTUSED, eelRF_NEC, eelENCADSHIFT,
84 eelPMEUSER, eelPMESWITCH, eelPMEUSERSWITCH, eelRF_ZERO, eelNR
89 eewg3D, eewg3DC, eewgNR
92 #define EEL_RF(e) ((e) == eelRF || (e) == eelGRF || (e) == eelRF_NEC || (e) == eelRF_ZERO )
94 #define EEL_PME(e) ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
95 #define EEL_FULL(e) (EEL_PME(e) || (e) == eelPOISSON || (e) == eelEWALD)
97 #define EEL_SWITCHED(e) ((e) == eelSWITCH || (e) == eelSHIFT || (e) == eelENCADSHIFT || (e) == eelPMESWITCH || (e) == eelPMEUSERSWITCH)
99 #define EEL_IS_ZERO_AT_CUTOFF(e) (EEL_SWITCHED(e) || (e) == eelRF_ZERO)
101 #define EEL_MIGHT_BE_ZERO_AT_CUTOFF(e) (EEL_IS_ZERO_AT_CUTOFF(e) || (e) == eelUSER || (e) == eelPMEUSER)
104 evdwCUT, evdwSWITCH, evdwSHIFT, evdwUSER, evdwENCADSHIFT, evdwNR
107 #define EVDW_SWITCHED(e) ((e) == evdwSWITCH || (e) == evdwSHIFT || (e) == evdwENCADSHIFT)
109 #define EVDW_IS_ZERO_AT_CUTOFF(e) EVDW_SWITCHED(e)
111 #define EVDW_MIGHT_BE_ZERO_AT_CUTOFF(e) (EVDW_IS_ZERO_AT_CUTOFF(e) || (e) == evdwUSER)
114 ensGRID, ensSIMPLE, ensNR
117 /* 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
118 energy for temperature control */
121 eiMD, eiSteep, eiCG, eiBD, eiSD2, eiNM, eiLBFGS, eiTPI, eiTPIC, eiSD1, eiVV, eiVVAK, eiNR
123 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
124 #define EI_SD(e) ((e) == eiSD1 || (e) == eiSD2)
125 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
126 /*above integrators may not conserve momenta*/
127 #define EI_DYNAMICS(e) ((e) == eiMD || EI_SD(e) || (e) == eiBD || EI_VV(e))
128 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
129 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
131 #define EI_STATE_VELOCITY(e) ((e) == eiMD || EI_VV(e) || EI_SD(e))
134 econtLINCS, econtSHAKE, econtNR
138 edrNone, edrSimple, edrEnsemble, edrNR
142 edrwConservative, edrwEqual, edrwNR
145 /* Combination rule things */
147 eCOMB_NONE, eCOMB_GEOMETRIC, eCOMB_ARITHMETIC, eCOMB_GEOM_SIG_EPS, eCOMB_NR
152 eNBF_NONE, eNBF_LJ, eNBF_BHAM, eNBF_NR
155 /* simulated tempering methods */
157 esimtempGEOMETRIC, esimtempEXPONENTIAL, esimtempLINEAR, esimtempNR
161 efepNO, efepYES, efepSTATIC, efepSLOWGROWTH, efepEXPANDED, efepNR
163 /* if efepNO, there are no evaluations at other states.
164 if efepYES, treated equivalently to efepSTATIC.
165 if efepSTATIC, then lambdas do not change during the simulation.
166 if efepSLOWGROWTH, then the states change monotonically throughout the simulation.
167 if efepEXPANDED, then expanded ensemble simulations are occuring.
170 /* FEP coupling types */
172 efptFEP,efptMASS,efptCOUL,efptVDW,efptBONDED,efptRESTRAINT,efptTEMPERATURE,efptNR
175 /* How the lambda weights are calculated:
176 elamstatsMETROPOLIS = using the metropolis criteria
177 elamstatsBARKER = using the Barker critera for transition weights - also called unoptimized Bennett
178 elamstatsMINVAR = using Barker + minimum variance for weights
179 elamstatsWL = Wang-Landu (using visitation counts)
180 elamstatsWWL = Weighted Wang-Landau (using optimized gibbs weighted visitation counts)
183 elamstatsNO, elamstatsMETROPOLIS, elamstatsBARKER, elamstatsMINVAR, elamstatsWL, elamstatsWWL, elamstatsNR
186 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
188 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
190 /* How moves in lambda are calculated:
191 elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
192 elmovemcBARKER - using the Barker criteria, and 50% up and down
193 elmovemcGIBBS - computing the transition using the marginalized probabilities of the lambdas
194 elmovemcMETGIBBS - computing the transition using the metropolized version of Gibbs (Monte Carlo Strategies in Scientific computing, Liu, p. 134)
197 elmcmoveNO,elmcmoveMETROPOLIS, elmcmoveBARKER, elmcmoveGIBBS, elmcmoveMETGIBBS, elmcmoveNR
200 /* how we decide whether weights have reached equilibrium
201 elmceqNO - never stop, weights keep going
202 elmceqYES - fix the weights from the beginning; no movement
203 elmceqWLDELTA - stop when the WL-delta falls below a certain level
204 elmceqNUMATLAM - stop when we have a certain number of samples at every step
205 elmceqSTEPS - stop when we've run a certain total number of steps
206 elmceqSAMPLES - stop when we've run a certain total number of samples
207 elmceqRATIO - stop when the ratio of samples (lowest to highest) is sufficiently large
210 elmceqNO,elmceqYES,elmceqWLDELTA,elmceqNUMATLAM,elmceqSTEPS,elmceqSAMPLES,elmceqRATIO,elmceqNR
213 /* separate_dhdl_file selection */
216 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
217 esepdhdlfileYES, esepdhdlfileNO, esepdhdlfileNR
220 /* dhdl_derivatives selection */
223 /* NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool */
224 edhdlderivativesYES, edhdlderivativesNO, edhdlderivativesNR
229 esolNO, esolSPC, esolTIP4P, esolNR
232 /* Dispersion correction */
234 edispcNO, edispcEnerPres, edispcEner, edispcAllEnerPres, edispcAllEner, edispcNR
237 /* Shell types, for completion stuff */
239 eshellCSH, eshellBASH, eshellZSH, eshellNR
242 /* Center of mass motion selection */
244 ecmLINEAR, ecmANGULAR, ecmNO, ecmNR
247 /* New version of simulated annealing */
249 eannNO, eannSINGLE, eannPERIODIC, eannNR
252 /* Implicit solvent algorithms */
254 eisNO, eisGBSA, eisNR
257 /* Algorithms for calculating GB radii */
259 egbSTILL, egbHCT, egbOBC, egbNR
263 esaAPPROX, esaNO, esaSTILL, esaNR
268 ewt93, ewt104, ewtTABLE, ewt126, ewtNR
273 epullNO, epullUMBRELLA, epullCONSTRAINT, epullCONST_F, epullNR
277 epullgDIST, epullgDIR, epullgCYL, epullgPOS, epullgDIRPBC, epullgNR
280 #define PULL_CYL(pull) ((pull)->eGeom == epullgCYL)
282 /* Enforced rotation groups */
284 erotgISO , erotgISOPF ,
285 erotgPM , erotgPMPF ,
286 erotgRM , erotgRMPF ,
287 erotgRM2 , erotgRM2PF ,
288 erotgFLEX , erotgFLEXT ,
289 erotgFLEX2, erotgFLEX2T,
294 erotgFitRMSD, erotgFitNORM, erotgFitPOT, erotgFitNR
299 eQMmethodAM1, eQMmethodPM3, eQMmethodRHF,
300 eQMmethodUHF, eQMmethodDFT, eQMmethodB3LYP, eQMmethodMP2, eQMmethodCASSCF, eQMmethodB3LYPLAN,
301 eQMmethodDIRECT, eQMmethodNR
305 eQMbasisSTO3G, eQMbasisSTO3G2, eQMbasis321G,
306 eQMbasis321Gp, eQMbasis321dGp, eQMbasis621G,
307 eQMbasis631G, eQMbasis631Gp, eQMbasis631dGp,
308 eQMbasis6311G, eQMbasisNR
312 eQMMMschemenormal,eQMMMschemeoniom,eQMMMschemeNR
316 eMultentOptName, eMultentOptNo, eMultentOptLast, eMultentOptNR
319 /* flat-bottom posres geometries */
321 efbposresZERO, efbposresSPHERE, efbposresCYLINDER, efbposresX, efbposresY, efbposresZ,
326 eAdressOff,eAdressConst, eAdressXSplit, eAdressSphere, eAdressNR
330 eAdressICOff, eAdressICThermoForce, eAdressICNR
334 eAdressSITEcom,eAdressSITEcog, eAdressSITEatom, eAdressSITEatomatom, eAdressSITENR