Used IWYU to partially clean up some includes
[alexxy/gromacs.git] / src / gromacs / legacyheaders / types / genborn.h
1 /*
2  * This file is part of the GROMACS molecular simulation package.
3  *
4  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
5  * Copyright (c) 2001-2008, The GROMACS development team.
6  * Copyright (c) 2010,2014, by the GROMACS development team, led by
7  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
8  * and including many others, as listed in the AUTHORS file in the
9  * top-level source directory and at http://www.gromacs.org.
10  *
11  * GROMACS is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Lesser General Public License
13  * as published by the Free Software Foundation; either version 2.1
14  * of the License, or (at your option) any later version.
15  *
16  * GROMACS is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with GROMACS; if not, see
23  * http://www.gnu.org/licenses, or write to the Free Software Foundation,
24  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
25  *
26  * If you want to redistribute modifications to GROMACS, please
27  * consider that scientific software is very special. Version
28  * control is crucial - bugs must be traceable. We will be happy to
29  * consider code for inclusion in the official distribution, but
30  * derived work must not be called official GROMACS. Details are found
31  * in the README & COPYING files - if they are missing, get the
32  * official version at http://www.gromacs.org.
33  *
34  * To help us fund GROMACS development, we humbly ask that you cite
35  * the research papers on the package. Check out http://www.gromacs.org.
36  */
37
38 #ifndef GMX_LEGACYHEADERS_TYPES_GENBORN_H
39 #define GMX_LEGACYHEADERS_TYPES_GENBORN_H
40
41 #include "gromacs/math/vectypes.h"
42 #include "gromacs/utility/real.h"
43
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47
48 typedef struct
49 {
50     int  nbonds;
51     int  bond[10];
52     real length[10];
53 } genborn_bonds_t;
54
55 typedef struct gbtmpnbls *gbtmpnbls_t;
56
57 /* Struct to hold all the information for GB */
58 typedef struct
59 {
60     int nr;                   /* number of atoms, length of arrays below */
61     int n12;                  /* number of 1-2 (bond) interactions       */
62     int n13;                  /* number of 1-3 (angle) terms             */
63     int n14;                  /* number of 1-4 (torsion) terms           */
64     int nalloc;               /* Allocation of local arrays (with DD)    */
65
66
67     /* Arrays below that end with _globalindex are used for setting up initial values of
68      * all gb parameters and values. They all have length natoms, which for DD is the
69      * global atom number.
70      * Values are then taken from these arrays to local copies, that have names without
71      * _globalindex, in the routine make_local_gb(), which is called once for single
72      * node runs, and for DD at every call to dd_partition_system
73      */
74
75     real       *gpol;              /* Atomic polarisation energies */
76     real       *gpol_globalindex;  /*  */
77     real       *gpol_still_work;   /* Work array for Still model */
78     real       *gpol_hct_work;     /* Work array for HCT/OBC models */
79     real       *bRad;              /* Atomic Born radii */
80     real       *vsolv;             /* Atomic solvation volumes */
81     real       *vsolv_globalindex; /*  */
82     real       *gb_radius;         /* Radius info, copied from atomtypes */
83     real       *gb_radius_globalindex;
84
85     int        *use;                /* Array that till if this atom does GB */
86     int        *use_globalindex;    /* Global array for parallelization */
87
88     real        es;                 /* Solvation energy and derivatives */
89     real       *asurf;              /* Atomic surface area */
90     rvec       *dasurf;             /* Surface area derivatives */
91     real        as;                 /* Total surface area */
92
93     real       *drobc;              /* Parameters for OBC chain rule calculation */
94     real       *param;              /* Precomputed factor rai*atype->S_hct for HCT/OBC */
95     real       *param_globalindex;  /*  */
96
97     real       *log_table;          /* Table for logarithm lookup */
98
99     real        obc_alpha;          /* OBC parameters */
100     real        obc_beta;           /* OBC parameters */
101     real        obc_gamma;          /* OBC parameters */
102     real        gb_doffset;         /* Dielectric offset for Still/HCT/OBC */
103     real        gb_epsilon_solvent; /*   */
104     real        epsilon_r;          /* Used for inner dielectric */
105
106     real        sa_surface_tension; /* Surface tension for non-polar solvation */
107
108     real       *work;               /* Used for parallel summation and in the chain rule, length natoms         */
109     real       *buf;                /* Used for parallel summation and in the chain rule, length natoms         */
110     int        *count;              /* Used for setting up the special gb nblist, length natoms                 */
111     gbtmpnbls_t nblist_work;        /* Used for setting up the special gb nblist, dim natoms*nblist_work_nalloc */
112     int         nblist_work_nalloc; /* Length of second dimension of nblist_work                                */
113 }
114 gmx_genborn_t;
115
116 #ifdef __cplusplus
117 }
118 #endif
119 #endif