Velocities and forces for selections.
[gromacs/qmmm-gamess-us.git] / include / grompp.h
blobf1bb34e6cf27d3ee1077f7501aa47bcdf5502f98
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.
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.
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.
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.
30 * For more info, check our website at http://www.gromacs.org
32 * And Hey:
33 * Gromacs Runs On Most of All Computer Systems
36 #ifndef _grompp_h
37 #define _grompp_h
39 #ifdef HAVE_CONFIG_H
40 #include <config.h>
41 #endif
43 #include <stdio.h>
44 #include "typedefs.h"
45 #include "macros.h"
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
51 #define MAXSLEN 32
53 typedef struct {
54 bool bSet; /* Has this combination been set */
55 real c[4]; /* The non-bonded parameters */
56 } t_nbparam;
57 /* The t_nbparam struct is used to temporary store the explicit
58 * non-bonded parameter combinations, which will be copied to t_params.
61 typedef struct {
62 atom_id a[MAXATOMLIST]; /* The atom list (eg. bonds: particle */
63 /* i = a[0] (AI), j = a[1] (AJ)) */
64 real c[MAXFORCEPARAM]; /* Force parameters (eg. b0 = c[0]) */
65 char s[MAXSLEN]; /* A string (instead of parameters), *
66 * read from the .rtp file in pdb2gmx */
67 } t_param;
69 typedef struct {
70 int nr; /* The number of bonds in this record */
71 int maxnr; /* The amount of elements in the array */
72 t_param *param; /* Array of parameters (dim: nr) */
74 /* CMAP tmp data, there are probably better places for this */
75 int grid_spacing; /* Cmap grid spacing */
76 int nc; /* Number of cmap angles */
78 real *cmap; /* Temporary storage of the raw cmap grid data */
79 int ncmap; /* Number of allocated elements in cmap grid*/
81 int *cmap_types; /* Store the five atomtypes followed by a number that identifies the type */
82 int nct; /* Number of allocated elements in cmap_types */
84 } t_params;
86 typedef struct {
87 int nr; /* The number of exclusions */
88 atom_id *e; /* The excluded atoms */
89 } t_excls;
91 typedef struct {
92 char **name;
93 int nrexcl; /* Number of exclusions per atom */
94 bool excl_set; /* Have exclusions been generated? */
95 bool bProcessed; /* Has the mol been processed */
96 t_atoms atoms; /* Atoms */
97 t_block cgs; /* Charge groups */
98 t_block mols; /* Molecules */
99 t_blocka excls; /* Exclusions */
100 t_params plist[F_NRE]; /* Parameters in old style */
101 } t_molinfo;
103 typedef struct {
104 char *name;
105 int nr;
106 } t_mols;
108 #include "gpp_atomtype.h"
110 extern void choose_ff(char *ff,int maxlen);
111 /* Strange place for this function... */
113 extern bool is_int(double x);
114 /* Returns TRUE when x is integer */
116 extern void print_top_comment(FILE *out,const char *filename,const char *title,bool bITP);
118 extern void print_top_header(FILE *out,const char *filename,const char *title,bool bITP,
119 const char *ff,real mHmult);
121 extern void print_top_mols(FILE *out, const char *title, const char *water,
122 int nincl, char **incls,
123 int nmol, t_mols *mols);
125 extern void write_top(FILE *out, char *pr,char *molname,
126 t_atoms *at,int bts[],t_params plist[],t_excls excls[],
127 gpp_atomtype_t atype,int *cgnr, int nrexcl);
128 /* NOTE: nrexcl is not the size of *excl! */
130 typedef enum {
131 d_defaults,
132 d_atomtypes,
133 d_bondtypes,
134 d_constrainttypes,
135 d_pairtypes,
136 d_angletypes,
137 d_dihedraltypes,
138 d_nonbond_params,
139 d_implicit_genborn_params,
140 d_implicit_surface_params,
141 d_cmaptypes,
142 d_moleculetype,
143 d_atoms,
144 d_vsites2,
145 d_vsites3,
146 d_vsites4,
147 d_vsitesn,
148 d_bonds,
149 d_exclusions,
150 d_pairs,
151 d_pairs_nb,
152 d_angles,
153 d_dihedrals,
154 d_constraints,
155 d_settles,
156 d_polarization,
157 d_water_polarization,
158 d_thole_polarization,
159 d_system,
160 d_molecules,
161 d_position_restraints,
162 d_angle_restraints,
163 d_angle_restraints_z,
164 d_distance_restraints,
165 d_orientation_restraints,
166 d_dihedral_restraints,
167 d_cmap,
168 d_maxdir,
169 d_invalid,
170 d_none
171 } directive;
173 static const char *ds[d_maxdir+1] = {
174 "defaults",
175 "atomtypes",
176 "bondtypes",
177 "constrainttypes",
178 "pairtypes",
179 "angletypes",
180 "dihedraltypes",
181 "nonbond_params",
182 "implicit_genborn_params",
183 "implicit_surface_params",
184 "cmaptypes",
185 /* All the directives above can not appear after moleculetype */
186 "moleculetype",
187 "atoms",
188 "virtual_sites2",
189 "virtual_sites3",
190 "virtual_sites4",
191 "virtual_sitesn",
192 "bonds",
193 "exclusions",
194 "pairs",
195 "pairs_nb",
196 "angles",
197 "dihedrals",
198 "constraints",
199 "settles",
200 "polarization",
201 "water_polarization",
202 "thole_polarization",
203 "system",
204 "molecules",
205 "position_restraints",
206 "angle_restraints",
207 "angle_restraints_z",
208 "distance_restraints",
209 "orientation_restraints",
210 "dihedral_restraints",
211 "cmap",
212 "invalid"
215 #ifdef __cplusplus
217 #endif
219 #endif /* _grompp_h */