Fixing copyright issues and code contributors
[alexxy/gromacs.git] / include / types / atoms.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-2004, 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 #ifndef _atoms_h
39 #define _atoms_h
40
41
42 #include "simple.h"
43
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47
48 enum {
49   eptAtom, eptNucleus, eptShell, eptBond, eptVSite, eptNR
50 };
51 /* The particle type */
52  
53 typedef struct {
54   real          m,q;            /* Mass and charge                      */
55   real          mB,qB;          /* Mass and charge for Free Energy calc */
56   unsigned short type;          /* Atom type                            */
57   unsigned short typeB;         /* Atom type for Free Energy calc       */
58   int           ptype;          /* Particle type                        */
59   int           resind;         /* Index into resinfo (in t_atoms)      */
60   int           atomnumber;     /* Atomic Number or NOTSET              */
61   char          elem[4];        /* Element name                         */
62 } t_atom;
63
64 typedef struct {
65   char          **name;         /* Pointer to the residue name          */
66   int           nr;             /* Residue number                       */
67   unsigned char ic;             /* Code for insertion of residues       */
68   int           chainnum;       /* Iincremented at TER or new chain id  */    
69   char          chainid;        /* Chain identifier written/read to pdb */
70   char          **rtp;          /* rtp building block name (optional)   */
71 } t_resinfo;
72
73 typedef struct {
74   int  type;                    /* PDB record name                      */
75   int  atomnr;                  /* PDB atom number                      */
76   char altloc;                  /* Alternate location indicator         */
77   char atomnm[6];               /* True atom name including leading spaces */
78   real occup;                   /* Occupancy                            */
79   real bfac;                    /* B-factor                             */
80   gmx_bool bAnisotropic;        /* (an)isotropic switch                 */
81   int  uij[6];                  /* Anisotropic B-factor                 */
82 } t_pdbinfo;
83
84 typedef struct {
85   int  nr;                      /* Number of different groups           */
86   int  *nm_ind;                 /* Index in the group names             */
87 } t_grps;
88
89 typedef struct {
90   int           nr;             /* Nr of atoms                          */
91   t_atom        *atom;          /* Array of atoms (dim: nr)             */
92                                 /* The following entries will not       */
93                                 /* always be used (nres==0)             */
94   char          ***atomname;    /* Array of pointers to atom name       */
95                                 /* use: (*(atomname[i]))                */
96   char          ***atomtype;    /* Array of pointers to atom types      */
97                                 /* use: (*(atomtype[i]))                */
98   char          ***atomtypeB;   /* Array of pointers to B atom types    */
99                                 /* use: (*(atomtypeB[i]))               */
100   int           nres;           /* The number of resinfo entries        */
101   t_resinfo     *resinfo;       /* Array of residue names and numbers   */
102   t_pdbinfo     *pdbinfo;       /* PDB Information, such as aniso. Bfac */
103 } t_atoms;
104
105 typedef struct {
106   int           nr;             /* number of atomtypes                          */
107   real         *radius;         /* GBSA radius for each atomtype                */
108   real         *vol;            /* GBSA efective volume for each atomtype       */
109   real         *surftens;       /* implicit solvent surftens for each atomtype  */
110   real         *gb_radius;      /* GB radius for each atom type                 */
111   real         *S_hct;          /* Overlap factors for HCT/OBC GB models        */
112   int          *atomnumber;     /* Atomic number, used for QM/MM                */
113 } t_atomtypes;
114
115
116 #define PERTURBED(a) (((a).mB != (a).m) || ((a).qB != (a).q) || ((a).typeB != (a).type))
117
118 #ifdef __cplusplus
119 }
120 #endif
121
122 #endif