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 */
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 */