Finish removing ENCAD shifts and table generation
[gromacs.git] / src / gromacs / mdtypes / md_enums.h
blob2fb7296bdac60bb1928e9202b754a56027384ad2
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 epcNR
120 //! String corresponding to pressure coupling algorithm
121 extern const char* epcoupl_names[epcNR + 1];
122 //! Macro to return the correct pcoupling string
123 #define EPCOUPLTYPE(e) enum_name(e, epcNR, epcoupl_names)
125 //! Flat-bottom posres geometries
126 enum
128 efbposresZERO,
129 efbposresSPHERE,
130 efbposresCYLINDER,
131 efbposresX,
132 efbposresY,
133 efbposresZ,
134 efbposresCYLINDERX,
135 efbposresCYLINDERY,
136 efbposresCYLINDERZ,
137 efbposresNR
140 //! Relative coordinate scaling type for position restraints.
141 enum
143 erscNO,
144 erscALL,
145 erscCOM,
146 erscNR
148 //! String corresponding to relativ coordinate scaling.
149 extern const char* erefscaling_names[erscNR + 1];
150 //! Macro to select correct coordinate scaling string.
151 #define EREFSCALINGTYPE(e) enum_name(e, erscNR, erefscaling_names)
153 //! Trotter decomposition extended variable parts.
154 enum
156 etrtNONE,
157 etrtNHC,
158 etrtBAROV,
159 etrtBARONHC,
160 etrtNHC2,
161 etrtBAROV2,
162 etrtBARONHC2,
163 etrtVELOCITY1,
164 etrtVELOCITY2,
165 etrtPOSITION,
166 etrtSKIPALL,
167 etrtNR
170 //! Sequenced parts of the trotter decomposition.
171 enum
173 ettTSEQ0,
174 ettTSEQ1,
175 ettTSEQ2,
176 ettTSEQ3,
177 ettTSEQ4,
178 ettTSEQMAX
181 //! Pressure coupling type
182 enum
184 epctISOTROPIC,
185 epctSEMIISOTROPIC,
186 epctANISOTROPIC,
187 epctSURFACETENSION,
188 epctNR
190 //! String corresponding to pressure coupling type
191 extern const char* epcoupltype_names[epctNR + 1];
192 //! Macro to select the right string for pcoupl type
193 #define EPCOUPLTYPETYPE(e) enum_name(e, epctNR, epcoupltype_names)
195 //! \\brief Cutoff scheme
196 enum
198 ecutsVERLET,
199 ecutsGROUP,
200 ecutsNR
202 //! String corresponding to cutoff scheme
203 extern const char* ecutscheme_names[ecutsNR + 1];
204 //! Macro to select the right string for cutoff scheme
205 #define ECUTSCHEME(e) enum_name(e, ecutsNR, ecutscheme_names)
207 /*! \brief Coulomb / VdW interaction modifiers.
209 * grompp replaces eintmodPOTSHIFT_VERLET_UNSUPPORTED by eintmodPOTSHIFT.
210 * Exactcutoff is only used by Reaction-field-zero, and is not user-selectable.
212 enum eintmod
214 eintmodPOTSHIFT_VERLET_UNSUPPORTED,
215 eintmodPOTSHIFT,
216 eintmodNONE,
217 eintmodPOTSWITCH,
218 eintmodEXACTCUTOFF,
219 eintmodFORCESWITCH,
220 eintmodNR
222 //! String corresponding to interaction modifiers
223 extern const char* eintmod_names[eintmodNR + 1];
224 //! Macro to select the correct string for modifiers
225 #define INTMODIFIER(e) enum_name(e, eintmodNR, eintmod_names)
227 /*! \brief Cut-off treatment for Coulomb */
228 enum
230 eelCUT,
231 eelRF,
232 eelGRF_NOTUSED,
233 eelPME,
234 eelEWALD,
235 eelP3M_AD,
236 eelPOISSON,
237 eelSWITCH,
238 eelSHIFT,
239 eelUSER,
240 eelGB_NOTUSED,
241 eelRF_NEC_UNSUPPORTED,
242 eelENCADSHIFT_NOTUSED,
243 eelPMEUSER,
244 eelPMESWITCH,
245 eelPMEUSERSWITCH,
246 eelRF_ZERO,
247 eelNR
249 //! String corresponding to Coulomb treatment
250 extern const char* eel_names[eelNR + 1];
251 //! Macro for correct string for Coulomb treatment
252 #define EELTYPE(e) enum_name(e, eelNR, eel_names)
254 //! Ewald geometry.
255 enum
257 eewg3D,
258 eewg3DC,
259 eewgNR
261 //! String corresponding to Ewald geometry
262 extern const char* eewg_names[eewgNR + 1];
264 //! Macro telling us whether we use reaction field
265 #define EEL_RF(e) \
266 ((e) == eelRF || (e) == eelGRF_NOTUSED || (e) == eelRF_NEC_UNSUPPORTED || (e) == eelRF_ZERO)
268 //! Macro telling us whether we use PME
269 #define EEL_PME(e) \
270 ((e) == eelPME || (e) == eelPMESWITCH || (e) == eelPMEUSER || (e) == eelPMEUSERSWITCH || (e) == eelP3M_AD)
271 //! Macro telling us whether we use PME or full Ewald
272 #define EEL_PME_EWALD(e) (EEL_PME(e) || (e) == eelEWALD)
273 //! Macro telling us whether we use full electrostatics of any sort
274 #define EEL_FULL(e) (EEL_PME_EWALD(e) || (e) == eelPOISSON)
275 //! Macro telling us whether we use user defined electrostatics
276 #define EEL_USER(e) ((e) == eelUSER || (e) == eelPMEUSER || (e) == (eelPMEUSERSWITCH))
278 //! Van der Waals interaction treatment
279 enum
281 evdwCUT,
282 evdwSWITCH,
283 evdwSHIFT,
284 evdwUSER,
285 evdwENCADSHIFT_UNUSED,
286 evdwPME,
287 evdwNR
289 //! String corresponding to Van der Waals treatment
290 extern const char* evdw_names[evdwNR + 1];
291 //! Macro for selecting correct string for VdW treatment
292 #define EVDWTYPE(e) enum_name(e, evdwNR, evdw_names)
294 //! Type of long-range VdW treatment of combination rules
295 enum
297 eljpmeGEOM,
298 eljpmeLB,
299 eljpmeNR
301 //! String for LJPME combination rule treatment
302 extern const char* eljpme_names[eljpmeNR + 1];
303 //! Macro for correct LJPME comb rule name
304 #define ELJPMECOMBNAMES(e) enum_name(e, eljpmeNR, eljpme_names)
306 //! Macro to tell us whether we use LJPME
307 #define EVDW_PME(e) ((e) == evdwPME)
309 /*! \brief Integrator algorithm
311 * eiSD2 has been removed, but we keep a renamed enum entry,
312 * so we can refuse to do MD with such .tpr files.
313 * eiVV is normal velocity verlet
314 * eiVVAK uses 1/2*(KE(t-dt/2)+KE(t+dt/2)) as the kinetic energy,
315 * and the half step kinetic energy for temperature control
317 enum
319 eiMD,
320 eiSteep,
321 eiCG,
322 eiBD,
323 eiSD2_REMOVED,
324 eiNM,
325 eiLBFGS,
326 eiTPI,
327 eiTPIC,
328 eiSD1,
329 eiVV,
330 eiVVAK,
331 eiMimic,
332 eiNR
334 //! Name of the integrator algorithm
335 extern const char* ei_names[eiNR + 1];
336 //! Macro returning integrator string
337 #define EI(e) enum_name(e, eiNR, ei_names)
338 //! Do we use MiMiC QM/MM?
339 #define EI_MIMIC(e) ((e) == eiMimic)
340 //! Do we use velocity Verlet
341 #define EI_VV(e) ((e) == eiVV || (e) == eiVVAK)
342 //! Do we use molecular dynamics
343 #define EI_MD(e) ((e) == eiMD || EI_VV(e) || EI_MIMIC(e))
344 //! Do we use stochastic dynamics
345 #define EI_SD(e) ((e) == eiSD1)
346 //! Do we use any stochastic integrator
347 #define EI_RANDOM(e) (EI_SD(e) || (e) == eiBD)
348 /*above integrators may not conserve momenta*/
349 //! Do we use any type of dynamics
350 #define EI_DYNAMICS(e) (EI_MD(e) || EI_RANDOM(e))
351 //! Or do we use minimization
352 #define EI_ENERGY_MINIMIZATION(e) ((e) == eiSteep || (e) == eiCG || (e) == eiLBFGS)
353 //! Do we apply test particle insertion
354 #define EI_TPI(e) ((e) == eiTPI || (e) == eiTPIC)
355 //! Do we deal with particle velocities
356 #define EI_STATE_VELOCITY(e) (EI_MD(e) || EI_SD(e))
358 //! Constraint algorithm
359 enum
361 econtLINCS,
362 econtSHAKE,
363 econtNR
365 //! String corresponding to constraint algorithm
366 extern const char* econstr_names[econtNR + 1];
367 //! Macro to select the correct string
368 #define ECONSTRTYPE(e) enum_name(e, econtNR, econstr_names)
370 //! Distance restraint refinement algorithm
371 enum
373 edrNone,
374 edrSimple,
375 edrEnsemble,
376 edrNR
378 //! String corresponding to distance restraint algorithm
379 extern const char* edisre_names[edrNR + 1];
380 //! Macro to select the right disre algorithm string
381 #define EDISRETYPE(e) enum_name(e, edrNR, edisre_names)
383 //! Distance restraints weighting type
384 enum
386 edrwConservative,
387 edrwEqual,
388 edrwNR
390 //! String corresponding to distance restraint weighting
391 extern const char* edisreweighting_names[edrwNR + 1];
392 //! Macro corresponding to dr weighting
393 #define EDISREWEIGHTING(e) enum_name(e, edrwNR, edisreweighting_names)
395 //! Combination rule algorithm.
396 enum
398 eCOMB_NONE,
399 eCOMB_GEOMETRIC,
400 eCOMB_ARITHMETIC,
401 eCOMB_GEOM_SIG_EPS,
402 eCOMB_NR
404 //! String for combination rule algorithm
405 extern const char* ecomb_names[eCOMB_NR + 1];
406 //! Macro to select the comb rule string
407 #define ECOMBNAME(e) enum_name(e, eCOMB_NR, ecomb_names)
409 //! Van der Waals potential.
410 enum
412 eNBF_NONE,
413 eNBF_LJ,
414 eNBF_BHAM,
415 eNBF_NR
417 //! String corresponding to Van der Waals potential
418 extern const char* enbf_names[eNBF_NR + 1];
419 //! Macro for correct VdW potential string
420 #define ENBFNAME(e) enum_name(e, eNBF_NR, enbf_names)
422 //! Simulated tempering methods.
423 enum
425 esimtempGEOMETRIC,
426 esimtempEXPONENTIAL,
427 esimtempLINEAR,
428 esimtempNR
430 //! String corresponding to simulated tempering
431 extern const char* esimtemp_names[esimtempNR + 1];
432 //! Macro for correct tempering string
433 #define ESIMTEMP(e) enum_name(e, esimtempNR, esimtemp_names)
435 /*! \brief Free energy perturbation type
437 * efepNO, there are no evaluations at other states.
438 * efepYES, treated equivalently to efepSTATIC.
439 * efepSTATIC, then lambdas do not change during the simulation.
440 * efepSLOWGROWTH, then the states change monotonically
441 * throughout the simulation.
442 * efepEXPANDED, then expanded ensemble simulations are occuring.
444 enum
446 efepNO,
447 efepYES,
448 efepSTATIC,
449 efepSLOWGROWTH,
450 efepEXPANDED,
451 efepNR
453 //! String corresponding to FEP type.
454 extern const char* efep_names[efepNR + 1];
455 //! Macro corresponding to FEP string.
456 #define EFEPTYPE(e) enum_name(e, efepNR, efep_names)
458 //! Free energy pertubation coupling types.
459 enum
461 efptFEP,
462 efptMASS,
463 efptCOUL,
464 efptVDW,
465 efptBONDED,
466 efptRESTRAINT,
467 efptTEMPERATURE,
468 efptNR
470 //! String for FEP coupling type
471 extern const char* efpt_names[efptNR + 1];
472 //! Long names for FEP coupling type
473 extern const char* efpt_singular_names[efptNR + 1];
475 /*! \brief What to print for free energy calculations
477 * Printing the energy to the free energy dhdl file.
478 * YES is an alias to TOTAL, and
479 * will be converted in readir, so we never have to account for it in code.
481 enum
483 edHdLPrintEnergyNO,
484 edHdLPrintEnergyTOTAL,
485 edHdLPrintEnergyPOTENTIAL,
486 edHdLPrintEnergyYES,
487 edHdLPrintEnergyNR
489 //! String corresponding to printing of free energy
490 extern const char* edHdLPrintEnergy_names[edHdLPrintEnergyNR + 1];
492 /*! \brief How the lambda weights are calculated
494 * elamstatsMETROPOLIS - using the metropolis criteria
495 * elamstatsBARKER - using the Barker critera for transition weights,
496 * also called unoptimized Bennett
497 * elamstatsMINVAR - using Barker + minimum variance for weights
498 * elamstatsWL - Wang-Landu (using visitation counts)
499 * elamstatsWWL - Weighted Wang-Landau (using optimized Gibbs
500 * weighted visitation counts)
502 enum
504 elamstatsNO,
505 elamstatsMETROPOLIS,
506 elamstatsBARKER,
507 elamstatsMINVAR,
508 elamstatsWL,
509 elamstatsWWL,
510 elamstatsNR
512 //! String corresponding to lambda weights
513 extern const char* elamstats_names[elamstatsNR + 1];
514 //! Macro telling us whether we use expanded ensemble
515 #define ELAMSTATS_EXPANDED(e) ((e) > elamstatsNO)
516 //! Macro telling us whether we use some kind of Wang-Landau
517 #define EWL(e) ((e) == elamstatsWL || (e) == elamstatsWWL)
519 /*! \brief How moves in lambda are calculated
521 * elmovemcMETROPOLIS - using the Metropolis criteria, and 50% up and down
522 * elmovemcBARKER - using the Barker criteria, and 50% up and down
523 * elmovemcGIBBS - computing the transition using the marginalized
524 * probabilities of the lambdas
525 * elmovemcMETGIBBS - computing the transition using the metropolized
526 * version of Gibbs (Monte Carlo Strategies in
527 * Scientific computing, Liu, p. 134)
529 enum
531 elmcmoveNO,
532 elmcmoveMETROPOLIS,
533 elmcmoveBARKER,
534 elmcmoveGIBBS,
535 elmcmoveMETGIBBS,
536 elmcmoveNR
538 //! String corresponding to lambda moves
539 extern const char* elmcmove_names[elmcmoveNR + 1];
541 /*! \brief How we decide whether weights have reached equilibrium
543 * elmceqNO - never stop, weights keep going
544 * elmceqYES - fix the weights from the beginning; no movement
545 * elmceqWLDELTA - stop when the WL-delta falls below a certain level
546 * elmceqNUMATLAM - stop when we have a certain number of samples at
547 * every step
548 * elmceqSTEPS - stop when we've run a certain total number of steps
549 * elmceqSAMPLES - stop when we've run a certain total number of samples
550 * elmceqRATIO - stop when the ratio of samples (lowest to highest)
551 * is sufficiently large
553 enum
555 elmceqNO,
556 elmceqYES,
557 elmceqWLDELTA,
558 elmceqNUMATLAM,
559 elmceqSTEPS,
560 elmceqSAMPLES,
561 elmceqRATIO,
562 elmceqNR
564 //! String corresponding to equilibrium algorithm
565 extern const char* elmceq_names[elmceqNR + 1];
567 /*! \brief separate_dhdl_file selection
569 * NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool
571 enum
573 esepdhdlfileYES,
574 esepdhdlfileNO,
575 esepdhdlfileNR
577 //! String corresponding to separate DHDL file selection
578 extern const char* separate_dhdl_file_names[esepdhdlfileNR + 1];
579 //! Monster macro for DHDL file selection
580 #define SEPDHDLFILETYPE(e) enum_name(e, esepdhdlfileNR, separate_dhdl_file_names)
582 /*! \brief dhdl_derivatives selection \
584 * NOTE: YES is the first one. Do NOT interpret this one as a gmx_bool
586 enum
588 edhdlderivativesYES,
589 edhdlderivativesNO,
590 edhdlderivativesNR
592 //! String for DHDL derivatives
593 extern const char* dhdl_derivatives_names[edhdlderivativesNR + 1];
594 //! YAMM (Yet another monster macro)
595 #define DHDLDERIVATIVESTYPE(e) enum_name(e, edhdlderivativesNR, dhdl_derivatives_names)
597 /*! \brief Solvent model
599 * Distinguishes classical water types with 3 or 4 particles
601 enum
603 esolNO,
604 esolSPC,
605 esolTIP4P,
606 esolNR
608 //! String corresponding to solvent type
609 extern const char* esol_names[esolNR + 1];
610 //! Macro lest we print the wrong solvent model string
611 #define ESOLTYPE(e) enum_name(e, esolNR, esol_names)
613 //! Dispersion correction.
614 enum
616 edispcNO,
617 edispcEnerPres,
618 edispcEner,
619 edispcAllEnerPres,
620 edispcAllEner,
621 edispcNR
623 //! String corresponding to dispersion corrections
624 extern const char* edispc_names[edispcNR + 1];
625 //! Macro for dispcorr string
626 #define EDISPCORR(e) enum_name(e, edispcNR, edispc_names)
628 //! Center of mass motion removal algorithm.
629 enum
631 ecmLINEAR,
632 ecmANGULAR,
633 ecmNO,
634 ecmLINEAR_ACCELERATION_CORRECTION,
635 ecmNR
637 //! String corresponding to COM removal
638 extern const char* ecm_names[ecmNR + 1];
639 //! Macro for COM removal string
640 #define ECOM(e) enum_name(e, ecmNR, ecm_names)
642 //! Algorithm for simulated annealing.
643 enum
645 eannNO,
646 eannSINGLE,
647 eannPERIODIC,
648 eannNR
650 //! String for simulated annealing
651 extern const char* eann_names[eannNR + 1];
652 //! And macro for simulated annealing string
653 #define EANNEAL(e) enum_name(e, eannNR, eann_names)
655 //! Wall types.
656 enum
658 ewt93,
659 ewt104,
660 ewtTABLE,
661 ewt126,
662 ewtNR
664 //! String corresponding to wall type
665 extern const char* ewt_names[ewtNR + 1];
666 //! Macro for wall type string
667 #define EWALLTYPE(e) enum_name(e, ewtNR, ewt_names)
669 //! Pulling algorithm.
670 enum
672 epullUMBRELLA,
673 epullCONSTRAINT,
674 epullCONST_F,
675 epullFLATBOTTOM,
676 epullFLATBOTTOMHIGH,
677 epullEXTERNAL,
678 epullNR
680 //! String for pulling algorithm
681 extern const char* epull_names[epullNR + 1];
682 //! Macro for pulling string
683 #define EPULLTYPE(e) enum_name(e, epullNR, epull_names)
685 //! Control of pull groups
686 enum
688 epullgDIST,
689 epullgDIR,
690 epullgCYL,
691 epullgDIRPBC,
692 epullgDIRRELATIVE,
693 epullgANGLE,
694 epullgDIHEDRAL,
695 epullgANGLEAXIS,
696 epullgNR
698 //! String for pull groups
699 extern const char* epullg_names[epullgNR + 1];
700 //! Macro for pull group string
701 #define EPULLGEOM(e) enum_name(e, epullgNR, epullg_names)
703 //! Enforced rotation groups.
704 enum
706 erotgISO,
707 erotgISOPF,
708 erotgPM,
709 erotgPMPF,
710 erotgRM,
711 erotgRMPF,
712 erotgRM2,
713 erotgRM2PF,
714 erotgFLEX,
715 erotgFLEXT,
716 erotgFLEX2,
717 erotgFLEX2T,
718 erotgNR
720 //! Rotation group names
721 extern const char* erotg_names[erotgNR + 1];
722 //! Macro for rot group names
723 #define EROTGEOM(e) enum_name(e, erotgNR, erotg_names)
724 //! String for rotation group origin names
725 extern const char* erotg_originnames[erotgNR + 1];
726 //! Macro for rot group origin names
727 #define EROTORIGIN(e) enum_name(e, erotgOriginNR, erotg_originnames)
729 //! Rotation group fitting type
730 enum
732 erotgFitRMSD,
733 erotgFitNORM,
734 erotgFitPOT,
735 erotgFitNR
737 //! String corresponding to rotation group fitting
738 extern const char* erotg_fitnames[erotgFitNR + 1];
739 //! Macro for rot group fit names
740 #define EROTFIT(e) enum_name(e, erotgFitNR, erotg_fitnames)
742 /*! \brief Direction along which ion/water swaps happen
744 * Part of "Computational Electrophysiology" (CompEL) setups
746 enum eSwaptype
748 eswapNO,
749 eswapX,
750 eswapY,
751 eswapZ,
752 eSwapTypesNR
754 //! Names for swapping
755 extern const char* eSwapTypes_names[eSwapTypesNR + 1];
756 //! Macro for swapping string
757 #define ESWAPTYPE(e) enum_name(e, eSwapTypesNR, eSwapTypes_names)
759 /*! \brief Swap group splitting type
761 * These are just the fixed groups we need for any setup. In t_swap's grp
762 * entry after that follows the variable number of swap groups.
764 enum
766 eGrpSplit0,
767 eGrpSplit1,
768 eGrpSolvent,
769 eSwapFixedGrpNR
771 //! String for swap group splitting
772 extern const char* eSwapFixedGrp_names[eSwapFixedGrpNR + 1];
774 /*! \brief Neighborlist geometry type.
776 * Kernels will compute interactions between two particles,
777 * 3-center water, 4-center water or coarse-grained beads.
779 enum gmx_nblist_kernel_geometry
781 GMX_NBLIST_GEOMETRY_PARTICLE_PARTICLE,
782 GMX_NBLIST_GEOMETRY_WATER3_PARTICLE,
783 GMX_NBLIST_GEOMETRY_WATER3_WATER3,
784 GMX_NBLIST_GEOMETRY_WATER4_PARTICLE,
785 GMX_NBLIST_GEOMETRY_WATER4_WATER4,
786 GMX_NBLIST_GEOMETRY_CG_CG,
787 GMX_NBLIST_GEOMETRY_NR
789 //! String corresponding to nblist geometry names
790 extern const char* gmx_nblist_geometry_names[GMX_NBLIST_GEOMETRY_NR + 1];
792 /*! \brief Types of electrostatics calculations
794 * Types of electrostatics calculations available inside nonbonded kernels.
795 * Note that these do NOT necessarily correspond to the user selections
796 * in the MDP file; many interactions for instance map to tabulated kernels.
798 enum gmx_nbkernel_elec
800 GMX_NBKERNEL_ELEC_NONE,
801 GMX_NBKERNEL_ELEC_COULOMB,
802 GMX_NBKERNEL_ELEC_REACTIONFIELD,
803 GMX_NBKERNEL_ELEC_CUBICSPLINETABLE,
804 GMX_NBKERNEL_ELEC_EWALD,
805 GMX_NBKERNEL_ELEC_NR
807 //! String corresponding to electrostatics kernels
808 extern const char* gmx_nbkernel_elec_names[GMX_NBKERNEL_ELEC_NR + 1];
810 /*! \brief Types of vdw calculations available
812 * Types of vdw calculations available inside nonbonded kernels.
813 * Note that these do NOT necessarily correspond to the user selections
814 * in the MDP file; many interactions for instance map to tabulated kernels.
816 enum gmx_nbkernel_vdw
818 GMX_NBKERNEL_VDW_NONE,
819 GMX_NBKERNEL_VDW_LENNARDJONES,
820 GMX_NBKERNEL_VDW_BUCKINGHAM,
821 GMX_NBKERNEL_VDW_CUBICSPLINETABLE,
822 GMX_NBKERNEL_VDW_LJEWALD,
823 GMX_NBKERNEL_VDW_NR
825 //! String corresponding to VdW kernels
826 extern const char* gmx_nbkernel_vdw_names[GMX_NBKERNEL_VDW_NR + 1];
828 //! \brief Types of interactions inside the neighborlist
829 enum gmx_nblist_interaction_type
831 GMX_NBLIST_INTERACTION_STANDARD,
832 GMX_NBLIST_INTERACTION_FREE_ENERGY,
833 GMX_NBLIST_INTERACTION_NR
835 //! String corresponding to interactions in neighborlist code
836 extern const char* gmx_nblist_interaction_names[GMX_NBLIST_INTERACTION_NR + 1];
838 #endif /* GMX_MDTYPES_MD_ENUMS_H */