Remove some include order dependencies
[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 #ifdef __cplusplus
42 extern "C" {
43 #endif
44
45 #include "gromacs/legacyheaders/types/simple.h"
46
47 typedef struct
48 {
49     int  nbonds;
50     int  bond[10];
51     real length[10];
52 } genborn_bonds_t;
53
54 typedef struct gbtmpnbls *gbtmpnbls_t;
55
56 /* Struct to hold all the information for GB */
57 typedef struct
58 {
59     int nr;                   /* number of atoms, length of arrays below */
60     int n12;                  /* number of 1-2 (bond) interactions       */
61     int n13;                  /* number of 1-3 (angle) terms             */
62     int n14;                  /* number of 1-4 (torsion) terms           */
63     int nalloc;               /* Allocation of local arrays (with DD)    */
64
65
66     /* Arrays below that end with _globalindex are used for setting up initial values of
67      * all gb parameters and values. They all have length natoms, which for DD is the
68      * global atom number.
69      * Values are then taken from these arrays to local copies, that have names without
70      * _globalindex, in the routine make_local_gb(), which is called once for single
71      * node runs, and for DD at every call to dd_partition_system
72      */
73
74     real       *gpol;              /* Atomic polarisation energies */
75     real       *gpol_globalindex;  /*  */
76     real       *gpol_still_work;   /* Work array for Still model */
77     real       *gpol_hct_work;     /* Work array for HCT/OBC models */
78     real       *bRad;              /* Atomic Born radii */
79     real       *vsolv;             /* Atomic solvation volumes */
80     real       *vsolv_globalindex; /*  */
81     real       *gb_radius;         /* Radius info, copied from atomtypes */
82     real       *gb_radius_globalindex;
83
84     int        *use;                /* Array that till if this atom does GB */
85     int        *use_globalindex;    /* Global array for parallelization */
86
87     real        es;                 /* Solvation energy and derivatives */
88     real       *asurf;              /* Atomic surface area */
89     rvec       *dasurf;             /* Surface area derivatives */
90     real        as;                 /* Total surface area */
91
92     real       *drobc;              /* Parameters for OBC chain rule calculation */
93     real       *param;              /* Precomputed factor rai*atype->S_hct for HCT/OBC */
94     real       *param_globalindex;  /*  */
95
96     real       *log_table;          /* Table for logarithm lookup */
97
98     real        obc_alpha;          /* OBC parameters */
99     real        obc_beta;           /* OBC parameters */
100     real        obc_gamma;          /* OBC parameters */
101     real        gb_doffset;         /* Dielectric offset for Still/HCT/OBC */
102     real        gb_epsilon_solvent; /*   */
103     real        epsilon_r;          /* Used for inner dielectric */
104
105     real        sa_surface_tension; /* Surface tension for non-polar solvation */
106
107     real       *work;               /* Used for parallel summation and in the chain rule, length natoms         */
108     real       *buf;                /* Used for parallel summation and in the chain rule, length natoms         */
109     int        *count;              /* Used for setting up the special gb nblist, length natoms                 */
110     gbtmpnbls_t nblist_work;        /* Used for setting up the special gb nblist, dim natoms*nblist_work_nalloc */
111     int         nblist_work_nalloc; /* Length of second dimension of nblist_work                                */
112 }
113 gmx_genborn_t;
114
115 #ifdef __cplusplus
116 }
117 #endif
118 #endif