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