Move computeSlowForces into stepWork
[gromacs.git] / src / gromacs / mdtypes / md_enums.h
blob508a94f6bf16f2314cca7425277b46a6c5724563
1 /*
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,2016,2017 by the GROMACS development team.
7 * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
8 * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
9 * and including many others, as listed in the AUTHORS file in the
10 * top-level source 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.
38 /*! \file
39 * \brief
40 * Declares enumerated types used throughout the code.
42 * \author David van der Spoel <david.vanderspoel@icm.uu.se>
43 * \inpublicapi
44 * \ingroup module_mdtypes
46 #ifndef GMX_MDTYPES_MD_ENUMS_H
47 #define GMX_MDTYPES_MD_ENUMS_H
49 #include "gromacs/utility/basedefinitions.h"
51 /*! \brief Return a string from a list of strings
53 * If index if within 0 .. max_index-1 returns the corresponding string
54 * or "no name defined" otherwise, in other words this is a range-check that does
55 * not crash.
56 * \param[in] index The index in the array
57 * \param[in] max_index The length of the array
58 * \param[in] names The array
59 * \return the correct string or "no name defined"
61 const char* enum_name(int index, int max_index, const char* names[]);
63 //! Boolean strings no or yes
64 extern const char* yesno_names[BOOL_NR + 1];
66 //! \brief The two compartments for CompEL setups.
67 enum eCompartment
69 eCompA,
70 eCompB,
71 eCompNR
74 /*! \brief The channels that define with their COM the compartment boundaries in CompEL setups.
76 * In principle one could also use modified setups with more than two channels.
78 enum eChannel
80 eChan0,
81 eChan1,
82 eChanNR
85 /*! \brief Temperature coupling type
87 * yes is an alias for berendsen
89 enum
91 etcNO,
92 etcBERENDSEN,
93 etcNOSEHOOVER,
94 etcYES,
95 etcANDERSEN,
96 etcANDERSENMASSIVE,
97 etcVRESCALE,
98 etcNR
100 //! Strings corresponding to temperatyre coupling types
101 extern const char* etcoupl_names[etcNR + 1];
102 //! Macro for selecting t coupling string
103 #define ETCOUPLTYPE(e) enum_name(e, etcNR, etcoupl_names)
104 //! Return whether this is andersen coupling
105 #define ETC_ANDERSEN(e) (((e) == etcANDERSENMASSIVE) || ((e) == etcANDERSEN))
107 /*! \brief Pressure coupling types
109 * isotropic is an alias for berendsen
111 enum
113 epcNO,
114 epcBERENDSEN,
115 epcPARRINELLORAHMAN,
116 epcISOTROPIC,
117 epcMTTK,
118 epcCRESCALE,
119 epcNR
121 //! String corresponding to pressure coupling algorithm
122 extern const char* epcoupl_names[epcNR + 1];
123 //! Macro to return the correct pcoupling string
124 #define EPCOUPLTYPE(e) enum_name(e, epcNR, epcoupl_names)
126 //! Flat-bottom posres geometries
127 enum
129 efbposresZERO,
130 efbposresSPHERE,
131 efbposresCYLINDER,
132 efbposresX,
133 efbposresY,
134 efbposresZ,
135 efbposresCYLINDERX,
136 efbposresCYLINDERY,
137 efbposresCYLINDERZ,
138 efbposresNR
141 //! Relative coordinate scaling type for position restraints.
142 enum
144 erscNO,
145 erscALL,
146 erscCOM,
147 erscNR
149 //! String corresponding to relativ coordinate scaling.
150 extern const char* erefscaling_names[erscNR + 1];
151 //! Macro to select correct coordinate scaling string.
152 #define EREFSCALINGTYPE(e) enum_name(e, erscNR, erefscaling_names)
154 //! Trotter decomposition extended variable parts.
155 enum
157 etrtNONE,
158 etrtNHC,
159 etrtBAROV,
160 etrtBARONHC,
161 etrtNHC2,
162 etrtBAROV2,
163 etrtBARONHC2,
164 etrtVELOCITY1,
165 etrtVELOCITY2,
166 etrtPOSITION,
167 etrtSKIPALL,
168 etrtNR
171 //! Sequenced parts of the trotter decomposition.
172 enum
174 ettTSEQ0,
175 ettTSEQ1,
176 ettTSEQ2,
177 ettTSEQ3,
178 ettTSEQ4,
179 ettTSEQMAX
182 //! Pressure coupling type
183 enum
185 epctISOTROPIC,
186 epctSEMIISOTROPIC,
187 epctANISOTROPIC,
188 epctSURFACETENSION,
189 epctNR
191 //! String corresponding to pressure coupling type
192 extern const char* epcoupltype_names[epctNR + 1];
193 //! Macro to select the right string for pcoupl type
194 #define EPCOUPLTYPETYPE(e) enum_name(e, epctNR, epcoupltype_names)
196 //! \\brief Cutoff scheme
197 enum
199 ecutsVERLET,
200 ecutsGROUP,
201 ecutsNR
203 //! String corresponding to cutoff scheme
204 extern const char* ecutscheme_names[ecutsNR + 1];
205 //! Macro to select the right string for cutoff scheme
206 #define ECUTSCHEME(e) enum_name(e, ecutsNR, ecutscheme_names)
208 /*! \brief Coulomb / VdW interaction modifiers.
210 * grompp replaces eintmodPOTSHIFT_VERLET_UNSUPPORTED by eintmodPOTSHIFT.
211 * Exactcutoff is only used by Reaction-field-zero, and is not user-selectable.
213 enum eintmod
215 eintmodPOTSHIFT_VERLET_UNSUPPORTED,
216 eintmodPOTSHIFT,
217 eintmodNONE,
218 eintmodPOTSWITCH,
219 eintmodEXACTCUTOFF,
220 eintmodFORCESWITCH,
221 eintmodNR
223 //! String corresponding to interaction modifiers
224 extern const char* eintmod_names[eintmodNR + 1];
225 //! Macro to select the correct string for modifiers
226 #define INTMODIFIER(e) enum_name(e, eintmodNR, eintmod_names)
228 /*! \brief Cut-off treatment for Coulomb */
229 enum
231 eelCUT,
232 eelRF,
233 eelGRF_NOTUSED,
234 eelPME,
235 eelEWALD,
236 eelP3M_AD,
237 eelPOISSON,
238 eelSWITCH,
239 eelSHIFT,
240 eelUSER,
241 eelGB_NOTUSED,
242 eelRF_NEC_UNSUPPORTED,
243 eelENCADSHIFT_NOTUSED,
244 eelPMEUSER,
245 eelPMESWITCH,
246 eelPMEUSERSWITCH,
247 eelRF_ZERO,
248 eelNR
250 //! String corresponding to Coulomb treatment
251 extern const char* eel_names[eelNR + 1];
252 //! Macro for correct string for Coulomb treatment
253 #define EELTYPE(e) enum_name(e, eelNR, eel_names)
255 //! Ewald geometry.
256 enum
258 eewg3D,
259 eewg3DC,
260 eewgNR
262 //! String corresponding to Ewald geometry
263 extern const char* eewg_names[eewgNR + 1];
265 //! Macro telling us whether we use reaction field
266 #define EEL_RF(e) \
267 ((e) == eelRF || (e) == eelGRF_NOTUSED || (e) == eelRF_NEC_UNSUPPORTED || (e) == eelRF_ZERO)
269 //! Macro telling us whether we use PME
270 #define EEL_PME(e) \
271 ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
272 //! Macro telling us whether we use PME or full Ewald
273 #define EEL_PME_EWALD(e) (EEL_PME(e) || (e) == eelEWALD)
274 //! Macro telling us whether we use full electrostatics of any sort
275 #define EEL_FULL(e) (EEL_PME_EWALD(e) || (e) == eelPOISSON)
276 //! Macro telling us whether we use user defined electrostatics
277 #define EEL_USER(e) ((e) == eelUSER || (e) == eelPMEUSER || (e) == (eelPMEUSERSWITCH))
279 //! Van der Waals interaction treatment
280 enum
282 evdwCUT,
283 evdwSWITCH,
284 evdwSHIFT,
285 evdwUSER,
286 evdwENCADSHIFT_UNUSED,
287 evdwPME,
288 evdwNR
290 //! String corresponding to Van der Waals treatment
291 extern const char* evdw_names[evdwNR + 1];
292 //! Macro for selecting correct string for VdW treatment
293 #define EVDWTYPE(e) enum_name(e, evdwNR, evdw_names)
295 //! Type of long-range VdW treatment of combination rules
296 enum
298 eljpmeGEOM,
299 eljpmeLB,
300 eljpmeNR
302 //! String for LJPME combination rule treatment
303 extern const char* eljpme_names[eljpmeNR + 1];
304 //! Macro for correct LJPME comb rule name
305 #define ELJPMECOMBNAMES(e) enum_name(e, eljpmeNR, eljpme_names)
307 //! Macro to tell us whether we use LJPME
308 #define EVDW_PME(e) ((e) == evdwPME)
310 /*! \brief Integrator algorithm
312 * eiSD2 has been removed, but we keep a renamed enum entry,
313 * so we can refuse to do MD with such .tpr files.
314 * eiVV is normal velocity verlet
315 * eiVVAK uses 1/2*(KE(t-dt/2)+KE(t+dt/2)) as the kinetic energy,
316 * and the half step kinetic energy for temperature control
318 enum
320 eiMD,
321 eiSteep,
322 eiCG,
323 eiBD,
324 eiSD2_REMOVED,
325 eiNM,
326 eiLBFGS,
327 eiTPI,
328 eiTPIC,
329 eiSD1,
330 eiVV,
331 eiVVAK,
332 eiMimic,
333 eiNR
335 //! Name of the integrator algorithm
336 extern const char* ei_names[eiNR + 1];
337 //! Macro returning integrator string
338 #define EI(e) enum_name(e, eiNR, ei_names)
339 //! Do we use MiMiC QM/MM?
340 #define EI_MIMIC(e) ((e) == eiMimic)
341 //! Do we use velocity Verlet
342 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
343 //! Do we use molecular dynamics
344 #define EI_MD(e) ((e) == eiMD || EI_VV(e) || EI_MIMIC(e))
345 //! Do we use stochastic dynamics
346 #define EI_SD(e) ((e) == eiSD1)
347 //! Do we use any stochastic integrator
348 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
349 /*above integrators may not conserve momenta*/
350 //! Do we use any type of dynamics
351 #define EI_DYNAMICS(e) (EI_MD(e) || EI_RANDOM(e))
352 //! Or do we use minimization
353 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
354 //! Do we apply test particle insertion
355 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
356 //! Do we deal with particle velocities
357 #define EI_STATE_VELOCITY(e) (EI_MD(e) || EI_SD(e))
359 //! Constraint algorithm
360 enum
362 econtLINCS,
363 econtSHAKE,
364 econtNR
366 //! String corresponding to constraint algorithm
367 extern const char* econstr_names[econtNR + 1];
368 //! Macro to select the correct string
369 #define ECONSTRTYPE(e) enum_name(e, econtNR, econstr_names)
371 //! Distance restraint refinement algorithm
372 enum
374 edrNone,
375 edrSimple,
376 edrEnsemble,
377 edrNR
379 //! String corresponding to distance restraint algorithm
380 extern const char* edisre_names[edrNR + 1];
381 //! Macro to select the right disre algorithm string
382 #define EDISRETYPE(e) enum_name(e, edrNR, edisre_names)
384 //! Distance restraints weighting type
385 enum
387 edrwConservative,
388 edrwEqual,
389 edrwNR
391 //! String corresponding to distance restraint weighting
392 extern const char* edisreweighting_names[edrwNR + 1];
393 //! Macro corresponding to dr weighting
394 #define EDISREWEIGHTING(e) enum_name(e, edrwNR, edisreweighting_names)
396 //! Combination rule algorithm.
397 enum
399 eCOMB_NONE,
400 eCOMB_GEOMETRIC,
401 eCOMB_ARITHMETIC,
402 eCOMB_GEOM_SIG_EPS,
403 eCOMB_NR
405 //! String for combination rule algorithm
406 extern const char* ecomb_names[eCOMB_NR + 1];
407 //! Macro to select the comb rule string
408 #define ECOMBNAME(e) enum_name(e, eCOMB_NR, ecomb_names)
410 //! Van der Waals potential.
411 enum
413 eNBF_NONE,
414 eNBF_LJ,
415 eNBF_BHAM,
416 eNBF_NR
418 //! String corresponding to Van der Waals potential
419 extern const char* enbf_names[eNBF_NR + 1];
420 //! Macro for correct VdW potential string
421 #define ENBFNAME(e) enum_name(e, eNBF_NR, enbf_names)
423 //! Simulated tempering methods.
424 enum
426 esimtempGEOMETRIC,
427 esimtempEXPONENTIAL,
428 esimtempLINEAR,
429 esimtempNR
431 //! String corresponding to simulated tempering
432 extern const char* esimtemp_names[esimtempNR + 1];
433 //! Macro for correct tempering string
434 #define ESIMTEMP(e) enum_name(e, esimtempNR, esimtemp_names)
436 /*! \brief Free energy perturbation type
438 * efepNO, there are no evaluations at other states.
439 * efepYES, treated equivalently to efepSTATIC.
440 * efepSTATIC, then lambdas do not change during the simulation.
441 * efepSLOWGROWTH, then the states change monotonically
442 * throughout the simulation.
443 * efepEXPANDED, then expanded ensemble simulations are occuring.
445 enum
447 efepNO,
448 efepYES,
449 efepSTATIC,
450 efepSLOWGROWTH,
451 efepEXPANDED,
452 efepNR
454 //! String corresponding to FEP type.
455 extern const char* efep_names[efepNR + 1];
456 //! Macro corresponding to FEP string.
457 #define EFEPTYPE(e) enum_name(e, efepNR, efep_names)
459 //! Free energy pertubation coupling types.
460 enum
462 efptFEP,
463 efptMASS,
464 efptCOUL,
465 efptVDW,
466 efptBONDED,
467 efptRESTRAINT,
468 efptTEMPERATURE,
469 efptNR
471 //! String for FEP coupling type
472 extern const char* efpt_names[efptNR + 1];
473 //! Long names for FEP coupling type
474 extern const char* efpt_singular_names[efptNR + 1];
476 /*! \brief What to print for free energy calculations
478 * Printing the energy to the free energy dhdl file.
479 * YES is an alias to TOTAL, and
480 * will be converted in readir, so we never have to account for it in code.
482 enum
484 edHdLPrintEnergyNO,
485 edHdLPrintEnergyTOTAL,
486 edHdLPrintEnergyPOTENTIAL,
487 edHdLPrintEnergyYES,
488 edHdLPrintEnergyNR
490 //! String corresponding to printing of free energy
491 extern const char* edHdLPrintEnergy_names[edHdLPrintEnergyNR + 1];
493 /*! \brief How the lambda weights are calculated
495 * elamstatsMETROPOLIS - using the metropolis criteria
496 * elamstatsBARKER - using the Barker critera for transition weights,
497 * also called unoptimized Bennett
498 * elamstatsMINVAR - using Barker + minimum variance for weights
499 * elamstatsWL - Wang-Landu (using visitation counts)
500 * elamstatsWWL - Weighted Wang-Landau (using optimized Gibbs
501 * weighted visitation counts)
503 enum
505 elamstatsNO,
506 elamstatsMETROPOLIS,
507 elamstatsBARKER,
508 elamstatsMINVAR,
509 elamstatsWL,
510 elamstatsWWL,
511 elamstatsNR
513 //! String corresponding to lambda weights
514 extern const char* elamstats_names[elamstatsNR + 1];
515 //! Macro telling us whether we use expanded ensemble
516 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
517 //! Macro telling us whether we use some kind of Wang-Landau
518 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
520 /*! \brief How moves in lambda are calculated
522 * elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
523 * elmovemcBARKER - using the Barker criteria, and 50% up and down
524 * elmovemcGIBBS - computing the transition using the marginalized
525 * probabilities of the lambdas
526 * elmovemcMETGIBBS - computing the transition using the metropolized
527 * version of Gibbs (Monte Carlo Strategies in
528 * Scientific computing, Liu, p. 134)
530 enum
532 elmcmoveNO,
533 elmcmoveMETROPOLIS,
534 elmcmoveBARKER,
535 elmcmoveGIBBS,
536 elmcmoveMETGIBBS,
537 elmcmoveNR
539 //! String corresponding to lambda moves
540 extern const char* elmcmove_names[elmcmoveNR + 1];
542 /*! \brief How we decide whether weights have reached equilibrium
544 * elmceqNO - never stop, weights keep going
545 * elmceqYES - fix the weights from the beginning; no movement
546 * elmceqWLDELTA - stop when the WL-delta falls below a certain level
547 * elmceqNUMATLAM - stop when we have a certain number of samples at
548 * every step
549 * elmceqSTEPS - stop when we've run a certain total number of steps
550 * elmceqSAMPLES - stop when we've run a certain total number of samples
551 * elmceqRATIO - stop when the ratio of samples (lowest to highest)
552 * is sufficiently large
554 enum
556 elmceqNO,
557 elmceqYES,
558 elmceqWLDELTA,
559 elmceqNUMATLAM,
560 elmceqSTEPS,
561 elmceqSAMPLES,
562 elmceqRATIO,
563 elmceqNR
565 //! String corresponding to equilibrium algorithm
566 extern const char* elmceq_names[elmceqNR + 1];
568 /*! \brief separate_dhdl_file selection
570 * NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool
572 enum
574 esepdhdlfileYES,
575 esepdhdlfileNO,
576 esepdhdlfileNR
578 //! String corresponding to separate DHDL file selection
579 extern const char* separate_dhdl_file_names[esepdhdlfileNR + 1];
580 //! Monster macro for DHDL file selection
581 #define SEPDHDLFILETYPE(e) enum_name(e, esepdhdlfileNR, separate_dhdl_file_names)
583 /*! \brief dhdl_derivatives selection \
585 * NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool
587 enum
589 edhdlderivativesYES,
590 edhdlderivativesNO,
591 edhdlderivativesNR
593 //! String for DHDL derivatives
594 extern const char* dhdl_derivatives_names[edhdlderivativesNR + 1];
595 //! YAMM (Yet another monster macro)
596 #define DHDLDERIVATIVESTYPE(e) enum_name(e, edhdlderivativesNR, dhdl_derivatives_names)
598 /*! \brief Solvent model
600 * Distinguishes classical water types with 3 or 4 particles
602 enum
604 esolNO,
605 esolSPC,
606 esolTIP4P,
607 esolNR
609 //! String corresponding to solvent type
610 extern const char* esol_names[esolNR + 1];
611 //! Macro lest we print the wrong solvent model string
612 #define ESOLTYPE(e) enum_name(e, esolNR, esol_names)
614 //! Dispersion correction.
615 enum
617 edispcNO,
618 edispcEnerPres,
619 edispcEner,
620 edispcAllEnerPres,
621 edispcAllEner,
622 edispcNR
624 //! String corresponding to dispersion corrections
625 extern const char* edispc_names[edispcNR + 1];
626 //! Macro for dispcorr string
627 #define EDISPCORR(e) enum_name(e, edispcNR, edispc_names)
629 //! Center of mass motion removal algorithm.
630 enum
632 ecmLINEAR,
633 ecmANGULAR,
634 ecmNO,
635 ecmLINEAR_ACCELERATION_CORRECTION,
636 ecmNR
638 //! String corresponding to COM removal
639 extern const char* ecm_names[ecmNR + 1];
640 //! Macro for COM removal string
641 #define ECOM(e) enum_name(e, ecmNR, ecm_names)
643 //! Algorithm for simulated annealing.
644 enum
646 eannNO,
647 eannSINGLE,
648 eannPERIODIC,
649 eannNR
651 //! String for simulated annealing
652 extern const char* eann_names[eannNR + 1];
653 //! And macro for simulated annealing string
654 #define EANNEAL(e) enum_name(e, eannNR, eann_names)
656 //! Wall types.
657 enum
659 ewt93,
660 ewt104,
661 ewtTABLE,
662 ewt126,
663 ewtNR
665 //! String corresponding to wall type
666 extern const char* ewt_names[ewtNR + 1];
667 //! Macro for wall type string
668 #define EWALLTYPE(e) enum_name(e, ewtNR, ewt_names)
670 //! Pulling algorithm.
671 enum
673 epullUMBRELLA,
674 epullCONSTRAINT,
675 epullCONST_F,
676 epullFLATBOTTOM,
677 epullFLATBOTTOMHIGH,
678 epullEXTERNAL,
679 epullNR
681 //! String for pulling algorithm
682 extern const char* epull_names[epullNR + 1];
683 //! Macro for pulling string
684 #define EPULLTYPE(e) enum_name(e, epullNR, epull_names)
686 //! Control of pull groups
687 enum
689 epullgDIST,
690 epullgDIR,
691 epullgCYL,
692 epullgDIRPBC,
693 epullgDIRRELATIVE,
694 epullgANGLE,
695 epullgDIHEDRAL,
696 epullgANGLEAXIS,
697 epullgNR
699 //! String for pull groups
700 extern const char* epullg_names[epullgNR + 1];
701 //! Macro for pull group string
702 #define EPULLGEOM(e) enum_name(e, epullgNR, epullg_names)
704 //! Enforced rotation groups.
705 enum
707 erotgISO,
708 erotgISOPF,
709 erotgPM,
710 erotgPMPF,
711 erotgRM,
712 erotgRMPF,
713 erotgRM2,
714 erotgRM2PF,
715 erotgFLEX,
716 erotgFLEXT,
717 erotgFLEX2,
718 erotgFLEX2T,
719 erotgNR
721 //! Rotation group names
722 extern const char* erotg_names[erotgNR + 1];
723 //! Macro for rot group names
724 #define EROTGEOM(e) enum_name(e, erotgNR, erotg_names)
725 //! String for rotation group origin names
726 extern const char* erotg_originnames[erotgNR + 1];
727 //! Macro for rot group origin names
728 #define EROTORIGIN(e) enum_name(e, erotgOriginNR, erotg_originnames)
730 //! Rotation group fitting type
731 enum
733 erotgFitRMSD,
734 erotgFitNORM,
735 erotgFitPOT,
736 erotgFitNR
738 //! String corresponding to rotation group fitting
739 extern const char* erotg_fitnames[erotgFitNR + 1];
740 //! Macro for rot group fit names
741 #define EROTFIT(e) enum_name(e, erotgFitNR, erotg_fitnames)
743 /*! \brief Direction along which ion/water swaps happen
745 * Part of "Computational Electrophysiology" (CompEL) setups
747 enum eSwaptype
749 eswapNO,
750 eswapX,
751 eswapY,
752 eswapZ,
753 eSwapTypesNR
755 //! Names for swapping
756 extern const char* eSwapTypes_names[eSwapTypesNR + 1];
757 //! Macro for swapping string
758 #define ESWAPTYPE(e) enum_name(e, eSwapTypesNR, eSwapTypes_names)
760 /*! \brief Swap group splitting type
762 * These are just the fixed groups we need for any setup. In t_swap's grp
763 * entry after that follows the variable number of swap groups.
765 enum
767 eGrpSplit0,
768 eGrpSplit1,
769 eGrpSolvent,
770 eSwapFixedGrpNR
772 //! String for swap group splitting
773 extern const char* eSwapFixedGrp_names[eSwapFixedGrpNR + 1];
775 /*! \brief Neighborlist geometry type.
777 * Kernels will compute interactions between two particles,
778 * 3-center water, 4-center water or coarse-grained beads.
780 enum gmx_nblist_kernel_geometry
782 GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE,
783 GMX_NBLIST_GEOMETRY_WATER3_PARTICLE,
784 GMX_NBLIST_GEOMETRY_WATER3_WATER3,
785 GMX_NBLIST_GEOMETRY_WATER4_PARTICLE,
786 GMX_NBLIST_GEOMETRY_WATER4_WATER4,
787 GMX_NBLIST_GEOMETRY_CG_CG,
788 GMX_NBLIST_GEOMETRY_NR
790 //! String corresponding to nblist geometry names
791 extern const char* gmx_nblist_geometry_names[GMX_NBLIST_GEOMETRY_NR + 1];
793 /*! \brief Types of electrostatics calculations
795 * Types of electrostatics calculations available inside nonbonded kernels.
796 * Note that these do NOT necessarily correspond to the user selections
797 * in the MDP file; many interactions for instance map to tabulated kernels.
799 enum gmx_nbkernel_elec
801 GMX_NBKERNEL_ELEC_NONE,
802 GMX_NBKERNEL_ELEC_COULOMB,
803 GMX_NBKERNEL_ELEC_REACTIONFIELD,
804 GMX_NBKERNEL_ELEC_CUBICSPLINETABLE,
805 GMX_NBKERNEL_ELEC_EWALD,
806 GMX_NBKERNEL_ELEC_NR
808 //! String corresponding to electrostatics kernels
809 extern const char* gmx_nbkernel_elec_names[GMX_NBKERNEL_ELEC_NR + 1];
811 /*! \brief Types of vdw calculations available
813 * Types of vdw calculations available inside nonbonded kernels.
814 * Note that these do NOT necessarily correspond to the user selections
815 * in the MDP file; many interactions for instance map to tabulated kernels.
817 enum gmx_nbkernel_vdw
819 GMX_NBKERNEL_VDW_NONE,
820 GMX_NBKERNEL_VDW_LENNARDJONES,
821 GMX_NBKERNEL_VDW_BUCKINGHAM,
822 GMX_NBKERNEL_VDW_CUBICSPLINETABLE,
823 GMX_NBKERNEL_VDW_LJEWALD,
824 GMX_NBKERNEL_VDW_NR
826 //! String corresponding to VdW kernels
827 extern const char* gmx_nbkernel_vdw_names[GMX_NBKERNEL_VDW_NR + 1];
829 //! \brief Types of interactions inside the neighborlist
830 enum gmx_nblist_interaction_type
832 GMX_NBLIST_INTERACTION_STANDARD,
833 GMX_NBLIST_INTERACTION_FREE_ENERGY,
834 GMX_NBLIST_INTERACTION_NR
836 //! String corresponding to interactions in neighborlist code
837 extern const char* gmx_nblist_interaction_names[GMX_NBLIST_INTERACTION_NR + 1];
839 #endif /* GMX_MDTYPES_MD_ENUMS_H */