Allow for "computational electrophysiology" simulations (CompEl)
[alexxy/gromacs.git] / src / gromacs / legacyheaders / types / inputrec.h
index 2e8d678cfffd40fdba1af13ca15c7d03b1dff9fe..e2f2fcf682e4bd88ec95144a862d939cca6e1d20 100644 (file)
@@ -271,6 +271,32 @@ typedef struct {
 } t_rot;
 
 
+/* 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                    */
     gmx_bool bnew_wf;        /* enable new AdResS weighting function         */
@@ -414,6 +440,8 @@ 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;
     real            cos_accel;               /* Acceleration for viscosity calculation       */
     tensor          deform;                  /* Triclinic deformation velocities (nm/ps)     */
     int             userint1;                /* User determined parameters                   */