Fixing copyright issues and code contributors
[alexxy/gromacs.git] / include / types / qmmmrec.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 #include "simple.h"
41
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45
46 typedef struct {
47  int           nrQMatoms;      /* total nr of QM atoms              */
48  rvec          *xQM;           /* shifted to center of box          */  
49  int           *indexQM;       /* atom i = atom indexQM[i] in mdrun */
50  int           *atomicnumberQM;/* atomic numbers of QM atoms        */  
51  real          *QMcharges;     /* atomic charges of QM atoms(ONIOM) */
52  int           *shiftQM;
53  int           QMcharge;       /* charge of the QM system           */
54  int           multiplicity;   /* multipicity (no of unpaired eln)  */
55  int           QMmethod;       /* see enums.h for all methods       */
56  int           QMbasis;        /* see enums.h for all bases         */
57  int           nelectrons;     /* total number of elecs in QM region*/
58  gmx_bool          bTS;            /* Optimize a TS, only steep, no md  */
59  gmx_bool          bOPT;          /* Optimize QM subsys, only steep, no md  */
60  gmx_bool          *frontatoms;   /* qm atoms on the QM side of a QM-MM bond */
61  /* Gaussian specific stuff */
62  int           nQMcpus;        /* no. of CPUs used for the QM calc. */
63  int           QMmem;          /* memory for the gaussian calc.     */
64  int           accuracy;       /* convergence criterium (E(-x))     */
65  gmx_bool          cpmcscf;        /* using cpmcscf(l1003)*/
66  char          *gauss_dir;
67  char          *gauss_exe;
68  char          *devel_dir;
69  char          *orca_basename; /* basename for I/O with orca        */
70  char          *orca_dir;      /* directory for ORCA                */
71  real          *c6;
72  real          *c12;
73  /* Surface hopping stuff */
74  gmx_bool          bSH;            /* surface hopping (diabatic only)   */
75  real          SAon;           /* at which energy gap the SA starts */
76  real          SAoff;          /* at which energy gap the SA stops  */
77  int           SAsteps;        /* stepwise switchinng on the SA     */
78  int           SAstep;         /* current state of SA               */
79  int           CIdim;
80  real          *CIvec1;
81  real          *CIvec2;
82  real          *CIvec1old;
83  real          *CIvec2old;
84  ivec          SHbasis;
85  int           CASelectrons;
86  int           CASorbitals;
87 } t_QMrec;
88
89 typedef struct {
90   int           nrMMatoms;      /* nr of MM atoms, updated every step*/
91   rvec          *xMM;           /* shifted to center of box          */
92   int           *indexMM;       /* atom i = atom indexMM[I] in mdrun */
93   real          *MMcharges;     /* MM point charges in std QMMM calc.*/
94   int           *shiftMM;
95   int           *MMatomtype;    /* only important for semi-emp.      */
96   real          scalefactor;
97   /* gaussian specific stuff */
98   real          *c6;
99   real          *c12;
100 } t_MMrec;
101
102
103 typedef struct {
104   int           QMMMscheme; /* ONIOM (multi-layer) or normal          */
105   int           nrQMlayers; /* number of QM layers (total layers +1 (MM)) */
106   t_QMrec       **qm;        /* atoms and run params for each QM group */
107   t_MMrec       *mm;        /* there can only be one MM subsystem !   */
108 } t_QMMMrec;
109
110 #ifdef __cplusplus
111 }
112 #endif