Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / legacyheaders / types / inputrec.h
index b3746da2cacd98886ead20922ab4a6d099c3c320..26af01e0efe4865b2dd13aba0d38ee38e05120dd 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
 #ifndef _inputrec_h_
 #define _inputrec_h_
 
+#include <stdio.h>
 
-#include "simple.h"
-#include "enums.h"
-#include "../sysstuff.h"
+#include "gromacs/legacyheaders/types/enums.h"
+#include "gromacs/legacyheaders/types/simple.h"
+#include "gromacs/swap/enums.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -150,7 +151,7 @@ typedef struct {
                                        valid value if positive)   */
     int      init_fep_state;        /* the initial number of the state                   */
     double   delta_lambda;          /* change of lambda per time step (fraction of (0.1) */
-    gmx_bool bPrintEnergy;          /* Whether to print the energy in the dhdl           */
+    int      edHdLPrintEnergy;      /* print no, total or potential energies in dhdl    */
     int      n_lambda;              /* The number of foreign lambda points               */
     double **all_lambda;            /* The array of all lambda values                    */
     int      lambda_neighbors;      /* The number of neighboring lambda states to
@@ -224,13 +225,15 @@ typedef struct {
     t_pull_coord  *coord;      /* the pull coordinates */
 
     /* Variables not present in mdp, but used at run time */
-    t_pull_group  *dyna;       /* dynamic groups for use with local constraints */
-    rvec          *rbuf;       /* COM calculation buffer */
-    dvec          *dbuf;       /* COM calculation buffer */
-    double        *dbuf_cyl;   /* cylinder ref. groups COM calculation buffer */
+    t_pull_group  *dyna;         /* dynamic groups for use with local constraints */
+    gmx_bool       bSetPBCatoms; /* Do we need to set x_pbc for the groups? */
 
-    FILE          *out_x;      /* output file for pull data */
-    FILE          *out_f;      /* output file for pull data */
+    rvec          *rbuf;         /* COM calculation buffer */
+    dvec          *dbuf;         /* COM calculation buffer */
+    double        *dbuf_cyl;     /* cylinder ref. groups COM calculation buffer */
+
+    FILE          *out_x;        /* output file for pull data */
+    FILE          *out_f;        /* output file for pull data */
 } t_pull;
 
 
@@ -270,6 +273,40 @@ typedef struct {
     gmx_enfrot_t enfrot;     /* Stores non-inputrec enforced rotation data    */
 } t_rot;
 
+/* Abstract type for IMD only defined in IMD.c */
+typedef struct gmx_IMD *t_gmx_IMD;
+
+typedef struct {
+    int         nat;         /* Number of interactive atoms                   */
+    atom_id    *ind;         /* The global indices of the interactive atoms   */
+    t_gmx_IMD   setup;       /* Stores non-inputrec IMD data                  */
+} t_IMD;
+
+/* Abstract types for position swapping only defined in swapcoords.c */
+typedef struct swap *gmx_swapcoords_t;
+
+typedef struct {
+    int              nstswap;           /* Every how many steps a swap is attempted?    */
+    int              nat;               /* Number of atoms in the ion group             */
+    int              nat_split[2];      /* Number of atoms in the split group           */
+    int              nat_sol;           /* Number of atoms in the solvent group         */
+    atom_id         *ind;               /* The global ion group atoms numbers           */
+    atom_id         *ind_split[2];      /* Split groups for compartment partitioning    */
+    atom_id         *ind_sol;           /* The global solvent group atom numbers        */
+    gmx_bool         massw_split[2];    /* Use mass-weighted positions in split group?  */
+    real             cyl0r, cyl1r;      /* Split cylinders defined by radius, upper and */
+    real             cyl0u, cyl1u;      /* ... lower extension. The split cylinders de- */
+    real             cyl0l, cyl1l;      /* ... fine the channels and are each anchored  */
+                                        /* ... in the center of the split group         */
+    int              nanions[eCompNR];  /* Requested number of anions and               */
+    int              nAverage;          /* Coupling constant (nr of swap attempt steps) */
+    real             threshold;         /* Ion counts may deviate from the requested
+                                           values by +-threshold before a swap is done  */
+    int              ncations[eCompNR]; /* ... cations for both compartments            */
+    gmx_swapcoords_t si_priv;           /* swap private data accessible in
+                                         * swapcoords.c                                 */
+} t_swapcoords;
+
 
 typedef struct {
     int      type;           /* type of AdResS simulation                    */
@@ -295,16 +332,15 @@ typedef struct {
     int             eI;                      /* Integration method                 */
     gmx_int64_t     nsteps;                  /* number of steps to be taken                    */
     int             simulation_part;         /* Used in checkpointing to separate chunks */
-    gmx_int64_t     init_step;               /* start at a stepcount >0 (used w. tpbconv)    */
+    gmx_int64_t     init_step;               /* start at a stepcount >0 (used w. convert-tpr)    */
     int             nstcalcenergy;           /* frequency of energy calc. and T/P coupl. upd.  */
     int             cutoff_scheme;           /* group or verlet cutoffs     */
     int             ns_type;                 /* which ns method should we use?               */
     int             nstlist;                 /* number of steps before pairlist is generated   */
     int             ndelta;                  /* number of cells per rlong                      */
     int             nstcomm;                 /* number of steps after which center of mass     */
-    /* motion is removed                               */
+                                             /* motion is removed                              */
     int             comm_mode;               /* Center of mass motion removal algorithm      */
-    int             nstcheckpoint;           /* checkpointing frequency                      */
     int             nstlog;                  /* number of steps after which print to logfile   */
     int             nstxout;                 /* number of steps after which X is output        */
     int             nstvout;                 /* id. for V                                      */
@@ -323,7 +359,6 @@ typedef struct {
     real            ewald_rtol_lj;           /* Real space tolerance for LJ-Ewald            */
     int             ewald_geometry;          /* normal/3d ewald, or pseudo-2d LR corrections */
     real            epsilon_surface;         /* Epsilon for PME dipole correction            */
-    gmx_bool        bOptFFT;                 /* optimize the fft plan at start               */
     int             ljpme_combination_rule;  /* Type of combination rule in LJ-PME          */
     int             ePBC;                    /* Type of periodic boundary conditions           */
     int             bPeriodicMols;           /* Periodic molecules                           */
@@ -387,7 +422,6 @@ typedef struct {
     real            orires_fc;               /* force constant for orientational restraints  */
     real            orires_tau;              /* time constant for memory function in orires    */
     int             nstorireout;             /* frequency of writing tr(SD) to enx           */
-    real            dihre_fc;                /* force constant for dihedral restraints (obsolete)      */
     real            em_stepsize;             /* The stepsize for updating                      */
     real            em_tol;                  /* The tolerance                          */
     int             niter;                   /* Number of iterations for convergence of      */
@@ -403,7 +437,7 @@ typedef struct {
     int             nLincsIter;              /* Number of iterations in the final Lincs step */
     gmx_bool        bShakeSOR;               /* Use successive overrelaxation for shake      */
     real            bd_fric;                 /* Friction coefficient for BD (amu/ps)         */
-    int             ld_seed;                 /* Random seed for SD and BD                    */
+    gmx_int64_t     ld_seed;                 /* Random seed for SD and BD                    */
     int             nwall;                   /* The number of walls                          */
     int             wall_type;               /* The type of walls                            */
     real            wall_r_linpot;           /* The potentail is linear for r<=wall_r_linpot */
@@ -414,6 +448,10 @@ typedef struct {
     t_pull         *pull;                    /* The data for center of mass pulling          */
     gmx_bool        bRot;                    /* Calculate enforced rotation potential(s)?    */
     t_rot          *rot;                     /* The data for enforced rotation potentials    */
+    int             eSwapCoords;             /* Do ion/water position exchanges (CompEL)?    */
+    t_swapcoords   *swap;
+    gmx_bool        bIMD;                    /* Allow interactive MD sessions for this .tpr? */
+    t_IMD          *imd;                     /* Interactive molecular dynamics               */
     real            cos_accel;               /* Acceleration for viscosity calculation       */
     tensor          deform;                  /* Triclinic deformation velocities (nm/ps)     */
     int             userint1;                /* User determined parameters                   */