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