#include <vector>
#include "gromacs/math/vectypes.h"
+#include "gromacs/topology/ifunc.h"
#include "gromacs/utility/basedefinitions.h"
#include "gromacs/utility/real.h"
-/* check kernel/toppush.c when you change these numbers */
-#define MAXATOMLIST 6
-#define MAXFORCEPARAM 12
-#define NR_RBDIHS 6
-#define NR_CBTDIHS 6
-#define NR_FOURDIHS 4
-
-typedef int t_iatom;
-
-/* this MUST correspond to the
- t_interaction_function[F_NRE] in gmxlib/ifunc.c */
-enum {
- F_BONDS,
- F_G96BONDS,
- F_MORSE,
- F_CUBICBONDS,
- F_CONNBONDS,
- F_HARMONIC,
- F_FENEBONDS,
- F_TABBONDS,
- F_TABBONDSNC,
- F_RESTRBONDS,
- F_ANGLES,
- F_G96ANGLES,
- F_RESTRANGLES,
- F_LINEAR_ANGLES,
- F_CROSS_BOND_BONDS,
- F_CROSS_BOND_ANGLES,
- F_UREY_BRADLEY,
- F_QUARTIC_ANGLES,
- F_TABANGLES,
- F_PDIHS,
- F_RBDIHS,
- F_RESTRDIHS,
- F_CBTDIHS,
- F_FOURDIHS,
- F_IDIHS,
- F_PIDIHS,
- F_TABDIHS,
- F_CMAP,
- F_GB12_NOLONGERUSED,
- F_GB13_NOLONGERUSED,
- F_GB14_NOLONGERUSED,
- F_GBPOL_NOLONGERUSED,
- F_NPSOLVATION_NOLONGERUSED,
- F_LJ14,
- F_COUL14,
- F_LJC14_Q,
- F_LJC_PAIRS_NB,
- F_LJ,
- F_BHAM,
- F_LJ_LR_NOLONGERUSED,
- F_BHAM_LR_NOLONGERUSED,
- F_DISPCORR,
- F_COUL_SR,
- F_COUL_LR_NOLONGERUSED,
- F_RF_EXCL,
- F_COUL_RECIP,
- F_LJ_RECIP,
- F_DPD,
- F_POLARIZATION,
- F_WATER_POL,
- F_THOLE_POL,
- F_ANHARM_POL,
- F_POSRES,
- F_FBPOSRES,
- F_DISRES,
- F_DISRESVIOL,
- F_ORIRES,
- F_ORIRESDEV,
- F_ANGRES,
- F_ANGRESZ,
- F_DIHRES,
- F_DIHRESVIOL,
- F_CONSTR,
- F_CONSTRNC,
- F_SETTLE,
- F_VSITE2,
- F_VSITE3,
- F_VSITE3FD,
- F_VSITE3FAD,
- F_VSITE3OUT,
- F_VSITE4FD,
- F_VSITE4FDN,
- F_VSITEN,
- F_COM_PULL,
- F_EQM,
- F_EPOT,
- F_EKIN,
- F_ETOT,
- F_ECONSERVED,
- F_TEMP,
- F_VTEMP_NOLONGERUSED,
- F_PDISPCORR,
- F_PRES,
- F_DVDL_CONSTR,
- F_DVDL,
- F_DKDL,
- F_DVDL_COUL,
- F_DVDL_VDW,
- F_DVDL_BONDED,
- F_DVDL_RESTRAINT,
- F_DVDL_TEMPERATURE, /* not calculated for now, but should just be the energy (NVT) or enthalpy (NPT), or 0 (NVE) */
- F_NRE /* This number is for the total number of energies */
-};
-
-#define IS_RESTRAINT_TYPE(ifunc) ((((ifunc) == F_POSRES) || ((ifunc) == F_FBPOSRES) || ((ifunc) == F_DISRES) || ((ifunc) == F_RESTRBONDS) || ((ifunc) == F_DISRESVIOL) || ((ifunc) == F_ORIRES) || ((ifunc) == F_ORIRESDEV) || ((ifunc) == F_ANGRES) || ((ifunc) == F_ANGRESZ) || ((ifunc) == F_DIHRES)))
-
typedef union t_iparams
{
/* Some parameters have A and B values for free energy calculations.