4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
12 * Copyright (c) 1991-2001
13 * BIOSON Research Institute, Dept. of Biophysical Chemistry
14 * University of Groningen, The Netherlands
16 * This program is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU General Public License
18 * as published by the Free Software Foundation; either version 2
19 * of the License, or (at your option) any later version.
21 * If you want to redistribute modifications, please consider that
22 * scientific software is very special. Version control is crucial -
23 * bugs must be traceable. We will be happy to consider code for
24 * inclusion in the official distribution, but derived work must not
25 * be called official GROMACS. Details are found in the README & COPYING
26 * files - if they are missing, get the official version at www.gromacs.org.
28 * To help us fund GROMACS development, we humbly ask that you cite
29 * the papers on the package - you can find them in the top README file.
31 * Do check out http://www.gromacs.org , or mail us at gromacs@gromacs.org .
34 * Good ROcking Metal Altar for Chronical Sinners
40 typedef enum {eStart, eAfm, eConstraint, eUmbrella, eTest} t_runtype;
41 typedef enum {eCom, eComT0, eDyn, eDynT0} t_reftype;
44 int n; /* number of groups */
45 atom_id **idx; /* indices of pull atoms in full coordinate array */
46 real **weights; /* position depended weight (switch function) */
47 int *ngx; /* pull group sizes */
48 char **grps; /* pull group names */
49 real *tmass; /* total mass of the groups */
50 rvec **x0; /* pull group coordinates at t=0 */
51 rvec **xp; /* pull group coordinates at previous step */
52 rvec *x_ref; /* reference positions */
53 rvec *x_unc; /* center of mass before constraining */
54 rvec *x_con; /* center of mass, obeying constraints */
55 rvec *xprev; /* position of coms in last written structure */
56 rvec *f; /* forces due to the pulling/constraining */
57 rvec *spring; /* coordinates of the springs (eAfm) */
58 rvec *dir; /* direction of constraint */
59 real *d_ref; /* reference distance */
60 rvec *xtarget; /* target coordinates for structure generation */
61 rvec **comhist; /* com over the last nhist steps (for running aver) */
65 t_pullgrps dyna; /* dynamic groups for use with local constraints */
66 t_pullgrps pull; /* groups to pull/restrain/etc/ */
67 t_pullgrps ref; /* reference group, reaction force grps */
68 t_runtype runtype; /* start, afm, constraint, umbrella, test */
69 t_reftype reftype; /* com, com_t0, dynamic, dynamic_t0 */
70 rvec dims; /* used to select components for constraint */
71 rvec coor; /* reaction coordinate */
72 real r; /* radius of cylinder for dynamic COM */
73 real rc; /* radius of cylinder including switch length */
74 int bRot[3]; /* rotation around x, y, z? */
75 real rot_rate; /* rate of rotation, for startstructure run */
76 real xlt_rate; /* rate of translation, for startstructure run */
77 int rot_incr; /* write out structure every rot_incr degrees */
78 real xlt_incr; /* write out structure every xlt_incr nm */
79 real tolerance; /* tolerance for reaching desired coordinates (nm) */
80 real constr_tol;/* absolute tolerance for constraints in (nm) */
81 bool bPull; /* true if we're doing any pulling */
82 bool bCyl; /* true if we're using dynamic ref. groups */
83 bool bReverse; /* reverse reference direction */
84 FILE *out; /* output file for pull data */
85 real k; /* force constant for atoms */
86 real rate; /* pull rate, in nm/timestep */
87 real um_width; /* width umbrella potential */
88 int update; /* update frequency for dynamic grps */
89 int reflag; /* running average over reflag steps for com */
90 bool bVerbose; /* be loud and noise */