1 /* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; c-file-style: "stroustrup"; -*-
4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
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-2008, The GROMACS development team,
13 * check out http://www.gromacs.org for more information.
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.
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.
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.
30 * For more info, check our website at http://www.gromacs.org
33 * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
50 typedef struct gbtmpnbls *gbtmpnbls_t;
52 /* Struct to hold all the information for GB */
55 int nr; /* number of atoms, length of arrays below */
56 int n12; /* number of 1-2 (bond) interactions */
57 int n13; /* number of 1-3 (angle) terms */
58 int n14; /* number of 1-4 (torsion) terms */
59 int nalloc; /* Allocation of local arrays (with DD) */
62 /* Arrays below that end with _globalindex are used for setting up initial values of
63 * all gb parameters and values. They all have length natoms, which for DD is the
65 * Values are then taken from these arrays to local copies, that have names without
66 * _globalindex, in the routine make_local_gb(), which is called once for single
67 * node runs, and for DD at every call to dd_partition_system
70 real *gpol; /* Atomic polarisation energies */
71 real *gpol_globalindex; /* */
72 real *gpol_still_work; /* Work array for Still model */
73 real *gpol_hct_work; /* Work array for HCT/OBC models */
74 real *bRad; /* Atomic Born radii */
75 real *vsolv; /* Atomic solvation volumes */
76 real *vsolv_globalindex; /* */
77 real *gb_radius; /* Radius info, copied from atomtypes */
78 real *gb_radius_globalindex;
80 int *use; /* Array that till if this atom does GB */
81 int *use_globalindex; /* Global array for parallelization */
83 real es; /* Solvation energy and derivatives */
84 real *asurf; /* Atomic surface area */
85 rvec *dasurf; /* Surface area derivatives */
86 real as; /* Total surface area */
88 real *drobc; /* Parameters for OBC chain rule calculation */
89 real *param; /* Precomputed factor rai*atype->S_hct for HCT/OBC */
90 real *param_globalindex; /* */
92 real *log_table; /* Table for logarithm lookup */
94 real obc_alpha; /* OBC parameters */
95 real obc_beta; /* OBC parameters */
96 real obc_gamma; /* OBC parameters */
97 real gb_doffset; /* Dielectric offset for Still/HCT/OBC */
98 real gb_epsilon_solvent; /* */
99 real epsilon_r; /* Used for inner dielectric */
101 real sa_surface_tension; /* Surface tension for non-polar solvation */
103 real *work; /* Used for parallel summation and in the chain rule, length natoms */
104 real *buf; /* Used for parallel summation and in the chain rule, length natoms */
105 int *count; /* Used for setting up the special gb nblist, length natoms */
106 gbtmpnbls_t nblist_work; /* Used for setting up the special gb nblist, dim natoms*nblist_work_nalloc */
107 int nblist_work_nalloc; /* Length of second dimension of nblist_work */