5a25a651f49bb50b6f77a03c7d292596ad66193e
[alexxy/gromacs.git] / include / grompp.h
1 /*
2  * 
3  *                This source code is part of
4  * 
5  *                 G   R   O   M   A   C   S
6  * 
7  *          GROningen MAchine for Chemical Simulations
8  * 
9  *                        VERSION 3.2.0
10  * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
11  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
12  * Copyright (c) 2001-2004, The GROMACS development team,
13  * check out http://www.gromacs.org for more information.
14
15  * This program is free software; you can redistribute it and/or
16  * modify it under the terms of the GNU General Public License
17  * as published by the Free Software Foundation; either version 2
18  * of the License, or (at your option) any later version.
19  * 
20  * If you want to redistribute modifications, please consider that
21  * scientific software is very special. Version control is crucial -
22  * bugs must be traceable. We will be happy to consider code for
23  * inclusion in the official distribution, but derived work must not
24  * be called official GROMACS. Details are found in the README & COPYING
25  * files - if they are missing, get the official version at www.gromacs.org.
26  * 
27  * To help us fund GROMACS development, we humbly ask that you cite
28  * the papers on the package - you can find them in the top README file.
29  * 
30  * For more info, check our website at http://www.gromacs.org
31  * 
32  * And Hey:
33  * Gromacs Runs On Most of All Computer Systems
34  */
35
36 #ifndef _grompp_h
37 #define _grompp_h
38
39 #include <stdio.h>
40 #include "typedefs.h"
41 #include "macros.h"
42
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46
47 #define MAXSLEN 32
48
49 typedef struct {
50   bool bSet;                    /* Has this combination been set        */
51   real c[4];                    /* The non-bonded parameters            */
52 } t_nbparam;
53 /* The t_nbparam struct is used to temporary store the explicit
54  * non-bonded parameter combinations, which will be copied to t_params.
55  */
56
57 typedef struct {
58   atom_id    a[MAXATOMLIST];    /* The atom list (eg. bonds: particle   */
59                                 /* i = a[0] (AI), j = a[1] (AJ))        */
60   real       c[MAXFORCEPARAM];  /* Force parameters (eg. b0 = c[0])     */
61   char       s[MAXSLEN];        /* A string (instead of parameters),    *
62                                  * read from the .rtp file in pdb2gmx   */
63 } t_param;
64
65 typedef struct {
66         int                 nr;         /* The number of bonds in this record   */
67         int         maxnr;          /* The amount of elements in the array  */
68         t_param         *param;         /* Array of parameters (dim: nr)        */
69
70         /* CMAP tmp data, there are probably better places for this */
71         int        grid_spacing; /* Cmap grid spacing */
72         int        nc;           /* Number of cmap angles */
73         
74         real       *cmap;  /* Temporary storage of the raw cmap grid data */
75         int        ncmap;    /* Number of allocated elements in cmap grid*/
76         
77         int        *cmap_types;  /* Store the five atomtypes followed by a number that identifies the type */
78         int         nct;         /* Number of allocated elements in cmap_types */
79         
80 } t_params;
81
82 typedef struct {
83   int           nr;             /* The number of exclusions             */
84   atom_id       *e;             /* The excluded atoms                   */
85 } t_excls;
86
87 typedef struct {
88   char          **name;
89   int           nrexcl;         /* Number of exclusions per atom        */
90   bool          excl_set;       /* Have exclusions been generated?      */
91   bool          bProcessed;     /* Has the mol been processed           */
92   t_atoms       atoms;          /* Atoms                                */
93   t_block       cgs;            /* Charge groups                        */
94   t_block       mols;           /* Molecules                            */
95   t_blocka      excls;          /* Exclusions                           */
96   t_params      plist[F_NRE];   /* Parameters in old style              */
97 } t_molinfo;
98
99 typedef struct {
100   char *name;
101   int  nr;
102 } t_mols;
103
104 bool is_int(double x);
105 /* Returns TRUE when x is integer */
106
107 typedef enum {
108   d_defaults,
109   d_atomtypes,
110   d_bondtypes,
111   d_constrainttypes,
112   d_pairtypes,
113   d_angletypes,
114   d_dihedraltypes,
115   d_nonbond_params,
116   d_implicit_genborn_params,
117   d_implicit_surface_params,
118   d_cmaptypes,
119   d_moleculetype,
120   d_atoms,
121   d_vsites2,
122   d_vsites3,
123   d_vsites4,
124   d_vsitesn,
125   d_bonds,
126   d_exclusions,
127   d_pairs,
128   d_pairs_nb,
129   d_angles,
130   d_dihedrals,
131   d_constraints,
132   d_settles,
133   d_polarization,
134   d_water_polarization,
135   d_thole_polarization,
136   d_system,
137   d_molecules,
138   d_position_restraints,
139   d_angle_restraints,
140   d_angle_restraints_z,
141   d_distance_restraints,
142   d_orientation_restraints,
143   d_dihedral_restraints,
144   d_cmap,
145   d_maxdir,
146   d_invalid,
147   d_none
148 } directive;
149
150 static const char *ds[d_maxdir+1] = {
151   "defaults",
152   "atomtypes",
153   "bondtypes",
154   "constrainttypes",
155   "pairtypes",
156   "angletypes",
157   "dihedraltypes",
158   "nonbond_params",
159   "implicit_genborn_params",
160   "implicit_surface_params",
161   "cmaptypes",
162   /* All the directives above can not appear after moleculetype */
163   "moleculetype",
164   "atoms",
165   "virtual_sites2",
166   "virtual_sites3",
167   "virtual_sites4",
168   "virtual_sitesn",
169   "bonds",
170   "exclusions",
171   "pairs",
172   "pairs_nb",
173   "angles",
174   "dihedrals",
175   "constraints",
176   "settles",
177   "polarization",
178   "water_polarization",
179   "thole_polarization",
180   "system",
181   "molecules",
182   "position_restraints",
183   "angle_restraints",
184   "angle_restraints_z",
185   "distance_restraints",
186   "orientation_restraints",
187   "dihedral_restraints",
188   "cmap",
189   "invalid"
190   };
191
192 #ifdef __cplusplus
193 }
194 #endif
195
196 #endif  /* _grompp_h */
197
198
199
200
201
202
203
204