Fixes for Windows/ICC--typecasting
[gromacs.git] / include / grompp.h
blob437a5a4609cc6c28604cdc40e8769493b5361a11
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 bool is_int(double x);
111 /* Returns TRUE when x is integer */
113 extern void print_top_comment(FILE *out,const char *filename,const char *title,bool bITP);
115 extern void print_top_header(FILE *out,const char *filename,const char *title,bool bITP,
116 const char *ffdir,real mHmult);
118 extern void print_top_mols(FILE *out,
119 const char *title, const char *ffdir, const char *water,
120 int nincl, char **incls,
121 int nmol, t_mols *mols);
123 extern void write_top(FILE *out, char *pr,char *molname,
124 t_atoms *at,bool bRTPresname,
125 int bts[],t_params plist[],t_excls excls[],
126 gpp_atomtype_t atype,int *cgnr, int nrexcl);
127 /* NOTE: nrexcl is not the size of *excl! */
129 typedef enum {
130 d_defaults,
131 d_atomtypes,
132 d_bondtypes,
133 d_constrainttypes,
134 d_pairtypes,
135 d_angletypes,
136 d_dihedraltypes,
137 d_nonbond_params,
138 d_implicit_genborn_params,
139 d_implicit_surface_params,
140 d_cmaptypes,
141 d_moleculetype,
142 d_atoms,
143 d_vsites2,
144 d_vsites3,
145 d_vsites4,
146 d_vsitesn,
147 d_bonds,
148 d_exclusions,
149 d_pairs,
150 d_pairs_nb,
151 d_angles,
152 d_dihedrals,
153 d_constraints,
154 d_settles,
155 d_polarization,
156 d_water_polarization,
157 d_thole_polarization,
158 d_system,
159 d_molecules,
160 d_position_restraints,
161 d_angle_restraints,
162 d_angle_restraints_z,
163 d_distance_restraints,
164 d_orientation_restraints,
165 d_dihedral_restraints,
166 d_cmap,
167 d_maxdir,
168 d_invalid,
169 d_none
170 } directive;
172 static const char *ds[d_maxdir+1] = {
173 "defaults",
174 "atomtypes",
175 "bondtypes",
176 "constrainttypes",
177 "pairtypes",
178 "angletypes",
179 "dihedraltypes",
180 "nonbond_params",
181 "implicit_genborn_params",
182 "implicit_surface_params",
183 "cmaptypes",
184 /* All the directives above can not appear after moleculetype */
185 "moleculetype",
186 "atoms",
187 "virtual_sites2",
188 "virtual_sites3",
189 "virtual_sites4",
190 "virtual_sitesn",
191 "bonds",
192 "exclusions",
193 "pairs",
194 "pairs_nb",
195 "angles",
196 "dihedrals",
197 "constraints",
198 "settles",
199 "polarization",
200 "water_polarization",
201 "thole_polarization",
202 "system",
203 "molecules",
204 "position_restraints",
205 "angle_restraints",
206 "angle_restraints_z",
207 "distance_restraints",
208 "orientation_restraints",
209 "dihedral_restraints",
210 "cmap",
211 "invalid"
214 #ifdef __cplusplus
216 #endif
218 #endif /* _grompp_h */