4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
11 * Copyright (c) 1991-2001, University of Groningen, The Netherlands
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * If you want to redistribute modifications, please consider that
18 * scientific software is very special. Version control is crucial -
19 * bugs must be traceable. We will be happy to consider code for
20 * inclusion in the official distribution, but derived work must not
21 * be called official GROMACS. Details are found in the README & COPYING
22 * files - if they are missing, get the official version at www.gromacs.org.
24 * To help us fund GROMACS development, we humbly ask that you cite
25 * the papers on the package - you can find them in the top README file.
27 * For more info, check our website at http://www.gromacs.org
30 * Gnomes, ROck Monsters And Chili Sauce
37 int nodeid
; /* Node id */
38 int nnodes
; /* The number of nodes */
39 int cgtotal
; /* Total number of charge groups */
40 int natoms
; /* Total number of atoms */
41 int nstDlb
; /* Every how many steps must we do load */
43 int shift
,bshift
; /* Coordinates are shifted left for */
44 /* 'shift' systolic pulses, and right */
45 /* for 'bshift' pulses. Forces are */
46 /* shifted right for 'shift' pulses */
47 /* and left for 'bshift' pulses */
48 /* This way is not necessary to shift */
49 /* the coordinates over the entire ring */
50 int homenr
[MAXNODES
]; /* The number of home particles */
51 int index
[MAXNODES
]; /* The starting of the home atoms */
52 int cgload
[MAXNODES
]; /* Division of charge groups over CPUS */
53 /* This is static, i.e. it does not */
54 /* change during the simulation */
55 int workload
[MAXNODES
]; /* This is the load for neighbor- */
56 /* searching, this is initially the same*/
57 /* as cgload, but may change due to */
58 /* dynamic load balancing */
61 #define START(nsb) ((nsb)->index[(nsb)->nodeid])
62 #define HOMENR(nsb) ((nsb)->homenr[(nsb)->nodeid])
63 #define CG0(nsb) (((nsb)->nodeid == 0) ? 0 : (nsb)->cgload[(nsb)->nodeid-1])
64 #define CG1(nsb) ((nsb)->cgload[(nsb)->nodeid])