4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
12 * Copyright (c) 1991-2001
13 * BIOSON Research Institute, Dept. of Biophysical Chemistry
14 * University of Groningen, The Netherlands
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.
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.
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.
31 * Do check out http://www.gromacs.org , or mail us at gromacs@gromacs.org .
34 * Good ROcking Metal Altar for Chronical Sinners
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 */
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 */
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])