Fixed a bug in the pdb-writing code.
[gromacs.git] / include / types / nsborder.h
blob86ec12335b42b8b2ede127900217cf263b08d9c4
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.1
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
29 * And Hey:
30 * Gnomes, ROck Monsters And Chili Sauce
32 #ifdef HAVE_CONFIG_H
33 #include <config.h>
34 #endif
36 typedef struct {
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 */
42 /* balancing */
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 */
59 } t_nsborder;
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])