Block-Structured AMR Software Framework
AMReX_SPACE.H
Go to the documentation of this file.
1
6
#ifndef AMREX_SPACE_H
7
#define AMREX_SPACE_H
8
#include <AMReX_Config.H>
9
10
/* for backward compatibility */
11
#if defined(BL_SPACEDIM) && !defined(AMREX_SPACEDIM)
12
#define AMREX_SPACEDIM BL_SPACEDIM
13
#endif
14
#if !defined(BL_SPACEDIM)
15
#define BL_SPACEDIM AMREX_SPACEDIM
16
#endif
17
18
/*
19
* \def AMREX_SPACEDIM
20
*
21
* The AMREX_SPACEDIM macro specifies the dimension of the AMReX library
22
* to be built. Acceptable values are either 1, 2, or 3. This macro
23
* must be set for every compilation as many of the data structures of
24
* AMReX rely on it being set.
25
*
26
* Code that depends on the dimensionality of the problem that you're
27
* trying to solve should be cast in terms of this macro.
28
*/
29
30
#if !defined(AMREX_SPACEDIM)
31
#error AMREX_SPACEDIM must be defined
32
#endif
33
34
#if (AMREX_SPACEDIM != 1 && AMREX_SPACEDIM !=2 && AMREX_SPACEDIM != 3)
35
#error AMREX_SPACEDIM must be either 1, 2, or 3
36
#endif
37
38
/*
39
The SpaceDim C++ integer constant specifies the dimension of the
40
AMReX library to be built. It is initialized to the value of
41
the macro AMREX_SPACEDIM. Hence it will have one of the values 1, 2, or 3.
42
43
C++ code that depends on the dimensionality of the problem that
44
you're trying to solve should be cast in terms of this constant,
45
instead of the AMREX_SPACEDIM macro, if possible, as constants are
46
visible to debuggers while macros are not.
47
*/
48
#ifdef __cplusplus
49
namespace
amrex
50
{
51
constexpr
int
SpaceDim = AMREX_SPACEDIM;
52
}
53
#endif
54
55
56
#if AMREX_SPACEDIM==1
57
81
# define AMREX_D_EXPR(a,b,c) ((void)((a),0))
82
104
# define AMREX_D_DECL(a,b,c) a
105
129
# define AMREX_D_TERM(a,b,c) a
130
151
# define AMREX_D_PICK(a,b,c) a
152
#elif AMREX_SPACEDIM==2
153
# define AMREX_D_EXPR(a,b,c) ((void)((a),(b),0))
154
# define AMREX_D_DECL(a,b,c) a,b
155
# define AMREX_D_TERM(a,b,c) a b
156
# define AMREX_D_PICK(a,b,c) b
157
#elif AMREX_SPACEDIM==3
158
# define AMREX_D_EXPR(a,b,c) ((void)((a),(b),(c),0))
159
# define AMREX_D_DECL(a,b,c) a,b,c
160
# define AMREX_D_TERM(a,b,c) a b c
161
# define AMREX_D_PICK(a,b,c) c
162
#endif
163
164
#if (AMREX_SPACEDIM == 1)
165
# define AMREX_1D_ONLY(a) a
166
# define AMREX_2D_ONLY(a) ((void)0)
167
# define AMREX_3D_ONLY(a) ((void)0)
168
#elif (AMREX_SPACEDIM == 2)
169
# define AMREX_1D_ONLY(a) ((void)0)
170
# define AMREX_2D_ONLY(a) a
171
# define AMREX_3D_ONLY(a) ((void)0)
172
#elif (AMREX_SPACEDIM == 3)
173
# define AMREX_1D_ONLY(a) ((void)0)
174
# define AMREX_2D_ONLY(a) ((void)0)
175
# define AMREX_3D_ONLY(a) a
176
#endif
177
178
#ifdef __cplusplus
179
180
#if (AMREX_SPACEDIM == 1)
181
#define AMREX_1D_ONLY_ARGS(...) __VA_ARGS__ ,
182
#else
183
#define AMREX_1D_ONLY_ARGS(...)
184
#endif
185
186
#if (AMREX_SPACEDIM == 2)
187
#define AMREX_2D_ONLY_ARGS(...) __VA_ARGS__ ,
188
#else
189
#define AMREX_2D_ONLY_ARGS(...)
190
#endif
191
192
#if (AMREX_SPACEDIM == 3)
193
#define AMREX_3D_ONLY_ARGS(...) __VA_ARGS__ ,
194
#else
195
#define AMREX_3D_ONLY_ARGS(...)
196
#endif
197
198
#endif
199
200
#endif
/*AMREX_SPACE_H*/
amrex
Definition:
AMReX_Amr.cpp:49
Src
Base
AMReX_SPACE.H
Generated by
1.9.1