Merge branch 'master' into rotation
[alexxy/gromacs.git] / include / types / inputrec.h
index ad57f430f22172a493827ab0b2ff64a9138c8669..f0f05b3abccca968d0ef58fab9946973f228f401 100644 (file)
@@ -149,6 +149,39 @@ typedef struct {
   FILE       *out_f;      /* output file for pull data */
 } t_pull;
 
+
+/* Abstract types for enforced rotation only defined in pull_rotation.c       */
+typedef struct gmx_enfrot *gmx_enfrot_t;
+typedef struct gmx_enfrotgrp *gmx_enfrotgrp_t;
+
+typedef struct {
+  int        eType;          /* Rotation type for this group                  */
+  int        bMassW;         /* Use mass-weighed positions?                   */
+  int        nat;            /* Number of atoms in the group                  */
+  atom_id    *ind;           /* The global atoms numbers                      */
+  rvec       *x_ref;         /* The reference positions                       */
+  rvec       vec;            /* The normalized rotation vector                */
+  real       rate;           /* Rate of rotation (degree/ps)                  */
+  real       k;              /* Force constant (kJ/(mol nm^2)                 */
+  rvec       pivot;          /* Pivot point of rotation axis (nm)             */
+  int        eFittype;       /* Type of fit to determine actual group angle   */
+  real       slab_dist;      /* Slab distance (nm)                            */
+  real       min_gaussian;   /* Minimum value the gaussian must have so that 
+                                the force is actually evaluated               */
+  real       eps;            /* Additive constant for radial motion2 and
+                                flexible2 potentials (nm^2)                   */
+  gmx_enfrotgrp_t enfrotgrp; /* Stores non-inputrec rotation data per group   */
+} t_rotgrp;
+
+typedef struct {
+  int        ngrp;           /* Number of rotation groups                     */
+  int        nstrout;        /* Main output frequency for angle and potential */
+  int        nsttout;        /* Outfreq. for torque, fitangles, slab centers  */
+  t_rotgrp   *grp;           /* Groups to rotate                              */
+  gmx_enfrot_t enfrot;       /* Stores non-inputrec enforced rotation data    */
+} t_rot;
+
+
 typedef struct {
   int  eI;              /* Integration method                          */
   gmx_large_int_t nsteps;      /* number of steps to be taken                  */
@@ -262,6 +295,8 @@ typedef struct {
   real wall_ewald_zfac; /* Scaling factor for the box for Ewald         */
   int  ePull;           /* Type of pulling: no, umbrella or constraint  */
   t_pull *pull;         /* The data for center of mass pulling          */
+  bool bRot;            /* Calculate enforced rotation potential(s)?    */
+  t_rot *rot;           /* The data for enforced rotation potentials    */
   real cos_accel;       /* Acceleration for viscosity calculation       */
   tensor deform;        /* Triclinic deformation velocities (nm/ps)     */
   int  userint1;        /* User determined parameters                   */