Merge remote-tracking branch 'origin/release-4-6' into HEAD
[alexxy/gromacs.git] / src / gromacs / gmxpreprocess / toppush.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  * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
34  */
35
36 #ifndef _toppush_h
37 #define _toppush_h
38
39 #include "typedefs.h"
40 #include "toputil.h"
41 #include "gpp_atomtype.h"
42 #include "gpp_bond_atomtype.h"
43 #include "warninp.h"
44
45 typedef struct {
46   int     nr;   /* The number of entries in the list                    */
47   int     nra2; /* The total number of entries in a                     */
48   atom_id *nra; /* The number of entries in each a array (dim nr)       */
49   atom_id **a;  /* The atom numbers (dim nr) the length of each element */
50                 /* i is nra[i]                                          */
51 } t_block2;
52
53 extern void generate_nbparams(int comb,int funct,t_params plist[],
54                               gpp_atomtype_t atype,
55                               warninp_t wi);
56                               
57 extern void push_at (t_symtab *symtab,gpp_atomtype_t at,
58                      t_bond_atomtype bat,char *line,int nb_funct,
59                      t_nbparam ***nbparam,t_nbparam ***pair,
60                      warninp_t wi);
61
62 extern void push_bt(directive d,t_params bt[], int nral,
63                     gpp_atomtype_t at,t_bond_atomtype bat,char *line,
64                     warninp_t wi);
65
66 extern void push_dihedraltype(directive d,t_params bt[],
67                               t_bond_atomtype bat,char *line,
68                               warninp_t wi);
69
70 extern void push_cmaptype(directive d,t_params bt[], int nral, gpp_atomtype_t at,
71                           t_bond_atomtype bat,char *line,
72                           warninp_t wi);
73
74 extern void push_nbt(directive d,t_nbparam **nbt,gpp_atomtype_t atype,
75                      char *plines,int nb_funct,
76                      warninp_t wi);
77
78 void
79 push_gb_params(gpp_atomtype_t atype,
80                char       *line,
81                warninp_t wi);
82
83 extern void push_atom(t_symtab   *symtab, 
84                       t_block    *cgs,
85                       t_atoms    *at,
86                       gpp_atomtype_t atype,
87                       char       *line,
88                       int        *lastcg,
89                       warninp_t  wi);
90
91 extern void push_bond(directive d,t_params bondtype[],t_params bond[],
92                       t_atoms *at,gpp_atomtype_t atype,char *line,
93                       gmx_bool bBonded,gmx_bool bGenPairs,real fudgeQQ,
94                       gmx_bool bZero,gmx_bool *bWarn_copy_A_B,
95                       warninp_t wi);
96
97 extern void push_cmap(directive d, t_params bondtype[], t_params bond[],
98                       t_atoms *at, gpp_atomtype_t atype, char *line,
99                       gmx_bool *bWarn_copy_A_B,
100                       warninp_t wi);
101
102 extern void push_vsitesn(directive d,t_params bondtype[],t_params bond[],
103                          t_atoms *at,gpp_atomtype_t atype,char *line,
104                          warninp_t wi);
105
106 extern void push_mol(int nrmols,t_molinfo mols[],char *pline,
107                      int *whichmol,int *nrcopies,
108                      warninp_t wi);
109
110 extern void push_molt(t_symtab *symtab,int *nmol,t_molinfo **mol,char *line,
111                       warninp_t wi);
112
113 extern void init_block2(t_block2 *b2, int natom);
114         
115 extern void done_block2(t_block2 *b2);
116
117 extern void push_excl(char *line, t_block2 *b2);
118
119 extern void merge_excl(t_blocka *excl, t_block2 *b2);
120
121 extern void b_to_b2(t_blocka *b, t_block2 *b2);
122
123 extern void b2_to_b(t_block2 *b2, t_blocka *b);
124
125 extern int add_atomtype_decoupled(t_symtab *symtab,gpp_atomtype_t at,
126                                   t_nbparam ***nbparam,t_nbparam ***pair);
127 /* Add an atom type with all parameters set to zero (no interactions).
128  * Returns the atom type number.
129  */
130
131 extern void convert_moltype_couple(t_molinfo *mol,int atomtype_decouple,
132                                    real fudgeQQ,
133                                    int couple_lam0,int couple_lam1,
134                                    gmx_bool bCoupleIntra,
135                                    int nb_funct,t_params *nbp);
136 /* Setup mol such that the B-state has no interaction with the rest
137  * of the system, but full interaction with itself.
138  */
139
140 #endif  /* _toppush_h */