Fixed a bug in the pdb-writing code.
[gromacs.git] / include / types / ishift.h
blobca180abd0165ce0c860c4ee6a8abf5a04375b9bb
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 #define D_BOX_Z 1
37 #ifdef ALLOW_OFFDIAG_LT_HALFDIAG
38 #define D_BOX_Y 2
39 #define D_BOX_X 2
40 #else
41 #define D_BOX_Y 1
42 #define D_BOX_X 1
43 #endif
44 #define N_BOX_Z (2*D_BOX_Z+1)
45 #define N_BOX_Y (2*D_BOX_Y+1)
46 #define N_BOX_X (2*D_BOX_X+1)
47 #define N_IVEC (N_BOX_Z*N_BOX_Y*N_BOX_X)
48 #define CENTRAL (N_IVEC/2)
49 #define SHIFTS N_IVEC
51 #define XYZ2IS(x,y,z) (N_BOX_X*(N_BOX_Y*((z)+D_BOX_Z)+(y)+D_BOX_Y)+(x)+D_BOX_X)
52 #define IVEC2IS(iv) (XYZ2IS((iv)[XX],(iv)[YY],(iv)[ZZ]))
53 #define IS2X(iv) (((iv) % N_BOX_X) - D_BOX_X)
54 #define IS2Y(iv) ((((iv) / N_BOX_X) % N_BOX_Y) - D_BOX_Y)
55 #define IS2Z(iv) ((iv) / (N_BOX_X*N_BOX_Y) - D_BOX_Z)