summaryrefslogtreecommitdiff
path: root/src/include/cctk_Faces.h
blob: f3ce4c2dbda341a944c7c45c5d88023b2298db2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 /*@@
   @header    cctk_Faces.h
   @date      11 Feb 2003
   @author    David Rideout
   @desc 
              Macros for generic specification of sets of 'faces' of an 
	      'n-cube'
   @enddesc 
   @version   $Header$
 @@*/

#ifndef _CCTK_FACES_H_
#define _CCTK_FACES_H_ 1

/* Grab the main configuration info. */
#include "cctk_Config.h"

/* The set of all faces */
#if defined(CCTK_INTEGER_PRECISION_4) || defined(CCTK_INTEGER_PRECISION_8)
#define CCTK_ALL_FACES 1073741823
/* (This is 2^30-1, so it will set the 'last' 30 bits to 1.)
 * (The 'top' two bits are useless because there is no unsigned int in
 * Fortran, and face bits come in pairs.)
 */
#else
#define CCTK_ALL_FACES 16383
/* 2^14-1 */
#endif

/* Here will be placed macros which provide a user friendly interface
 * to a general specification for expressing sets of faces of an
 * n-dimensional rectangle.  Each face will be assigned one bit in a
 * word.  Then one can bitwise-or a number of these together to
 * specify a set of faces.  The macros will make this user-friendly
 * somehow (and accessible to Fortran).
 * 
 * Example:
 *
 * #define FACE0 1>>0
 * #define FACE1 1>>1
 * etc.
 *
 * where FACE0 may be the negative x-face, FACE1 the positive x-face, etc.  */

#endif /* _CCTK_FACES_H_ */