Remove constant acceleration groups
[alexxy/gromacs.git] / src / gromacs / mdtypes / mdatom.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  * Copyright (c) 2012,2013,2014,2015,2016 by the GROMACS development team.
7  * Copyright (c) 2017,2019,2020,2021, by the GROMACS development team, led by
8  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
9  * and including many others, as listed in the AUTHORS file in the
10  * top-level source 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 /*! \brief
39  * Declares mdatom data structure.
40  *
41  * \inpublicapi
42  * \ingroup module_mdtypes
43  */
44 #ifndef GMX_MDTYPES_MDATOM_H
45 #define GMX_MDTYPES_MDATOM_H
46
47 #include "gromacs/math/vectypes.h"
48 #include "gromacs/utility/basedefinitions.h"
49 #include "gromacs/utility/real.h"
50
51 typedef struct t_mdatoms
52 {
53     //! Total mass in state A
54     real tmassA;
55     //! Total mass in state B
56     real tmassB;
57     //! Total mass
58     real tmass;
59     //! Number of atoms in arrays
60     int nr;
61     //! Number of elements in arrays
62     int nalloc;
63     //! Number of energy groups
64     int nenergrp;
65     //! Do we have multiple center of mass motion removal groups
66     gmx_bool bVCMgrps;
67     //! Do we have any virtual sites?
68     gmx_bool haveVsites;
69     //! Do we have atoms that are frozen along 1 or 2 (not 3) dimensions?
70     gmx_bool havePartiallyFrozenAtoms;
71     //! Number of perturbed atoms
72     int nPerturbed;
73     //! Number of atoms for which the mass is perturbed
74     int nMassPerturbed;
75     //! Number of atoms for which the charge is perturbed
76     int nChargePerturbed;
77     //! Number of atoms for which the type is perturbed
78     int nTypePerturbed;
79     //! Do we have orientation restraints
80     gmx_bool bOrires;
81     //! Atomic mass in A state
82     real* massA;
83     //! Atomic mass in B state
84     real* massB;
85     //! Atomic mass in present state
86     real* massT;
87     //! Inverse atomic mass per atom, 0 for vsites and shells
88     real* invmass;
89     //! Inverse atomic mass per atom and dimension, 0 for vsites, shells and frozen dimensions
90     rvec* invMassPerDim;
91     //! Atomic charge in A state
92     real* chargeA;
93     //! Atomic charge in B state
94     real* chargeB;
95     //! Dispersion constant C6 in A state
96     real* sqrt_c6A;
97     //! Dispersion constant C6 in A state
98     real* sqrt_c6B;
99     //! Van der Waals radius sigma in the A state
100     real* sigmaA;
101     //! Van der Waals radius sigma in the B state
102     real* sigmaB;
103     //! Van der Waals radius sigma^3 in the A state
104     real* sigma3A;
105     //! Van der Waals radius sigma^3 in the B state
106     real* sigma3B;
107     //! Is this atom perturbed
108     gmx_bool* bPerturbed;
109     //! Type of atom in the A state
110     int* typeA;
111     //! Type of atom in the B state
112     int* typeB;
113     //! Particle type
114     unsigned short* ptype;
115     //! Group index for temperature coupling
116     unsigned short* cTC;
117     //! Group index for energy matrix
118     unsigned short* cENER;
119     //! Group index for freezing
120     unsigned short* cFREEZE;
121     //! Group index for center of mass motion removal
122     unsigned short* cVCM;
123     //! Group index for user 1
124     unsigned short* cU1;
125     //! Group index for user 2
126     unsigned short* cU2;
127     //! Group index for orientation restraints
128     unsigned short* cORF;
129     //! Number of atoms on this processor. TODO is this still used?
130     int homenr;
131     //! The lambda value used to create the contents of the struct
132     real lambda;
133 } t_mdatoms;
134
135 #endif