Tagged files with gromacs 3.0 header and added some license info
[alexxy/gromacs.git] / include / types / nsborder.h
1 /*
2  * $Id$
3  * 
4  *                This source code is part of
5  * 
6  *                 G   R   O   M   A   C   S
7  * 
8  *          GROningen MAchine for Chemical Simulations
9  * 
10  *                        VERSION 3.0
11  * 
12  * Copyright (c) 1991-2001
13  * BIOSON Research Institute, Dept. of Biophysical Chemistry
14  * University of Groningen, The Netherlands
15  * 
16  * This program is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU General Public License
18  * as published by the Free Software Foundation; either version 2
19  * of the License, or (at your option) any later version.
20  * 
21  * If you want to redistribute modifications, please consider that
22  * scientific software is very special. Version control is crucial -
23  * bugs must be traceable. We will be happy to consider code for
24  * inclusion in the official distribution, but derived work must not
25  * be called official GROMACS. Details are found in the README & COPYING
26  * files - if they are missing, get the official version at www.gromacs.org.
27  * 
28  * To help us fund GROMACS development, we humbly ask that you cite
29  * the papers on the package - you can find them in the top README file.
30  * 
31  * Do check out http://www.gromacs.org , or mail us at gromacs@gromacs.org .
32  * 
33  * And Hey:
34  * Good ROcking Metal Altar for Chronical Sinners
35  */
36 #ifdef HAVE_CONFIG_H
37 #include <config.h>
38 #endif
39
40 typedef struct {
41   int  nodeid;                  /* Node id                              */
42   int  nnodes;                  /* The number of nodes                  */
43   int  cgtotal;                 /* Total number of charge groups        */
44   int  natoms;                  /* Total number of atoms                */
45   int  nstDlb;                  /* Every how many steps must we do load */
46                                 /* balancing                            */
47   int  shift,bshift;            /* Coordinates are shifted left for     */
48                                 /* 'shift' systolic pulses, and right   */
49                                 /* for 'bshift' pulses. Forces are      */
50                                 /* shifted right for 'shift' pulses     */
51                                 /* and left for 'bshift' pulses         */
52                                 /* This way is not necessary to shift   */
53                                 /* the coordinates over the entire ring */
54   int  homenr[MAXNODES];        /* The number of home particles         */
55   int  index[MAXNODES];         /* The starting of the home atoms       */
56   int  cgload[MAXNODES];        /* Division of charge groups over CPUS  */
57                                 /* This is static, i.e. it does not     */
58                                 /* change during the simulation         */
59   int  workload[MAXNODES];      /* This is the load for neighbor-       */
60                                 /* searching, this is initially the same*/
61                                 /* as cgload, but may change due to     */
62                                 /* dynamic load balancing               */
63 } t_nsborder;
64
65 #define START(nsb)  ((nsb)->index[(nsb)->nodeid])
66 #define HOMENR(nsb) ((nsb)->homenr[(nsb)->nodeid])
67 #define CG0(nsb)    (((nsb)->nodeid == 0) ? 0 : (nsb)->cgload[(nsb)->nodeid-1])
68 #define CG1(nsb)    ((nsb)->cgload[(nsb)->nodeid])