aboutsummaryrefslogtreecommitdiff
path: root/src/ScalarBoundary.c
diff options
context:
space:
mode:
authortradke <tradke@6a38eb6e-646e-4a02-a296-d141613ad6c4>2002-06-03 11:22:43 +0000
committertradke <tradke@6a38eb6e-646e-4a02-a296-d141613ad6c4>2002-06-03 11:22:43 +0000
commit670c27f0b005bea18b5c537a87f4ccec0a3985b6 (patch)
tree8b72d929f56f4753a79a8268a1f0fd6f587c5a20 /src/ScalarBoundary.c
parentca4b74563643f9e45fc9a2b16bf2dc30616b4830 (diff)
Fixed macro calls with an empty preprocessor constant as an argument.
Some preprocessors (eg. MacOS X) didn't like this and wouldn't let the code compile. Now the constant is defined outside the macro (not very nice but works). git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/Boundary/trunk@173 6a38eb6e-646e-4a02-a296-d141613ad6c4
Diffstat (limited to 'src/ScalarBoundary.c')
-rw-r--r--src/ScalarBoundary.c62
1 files changed, 35 insertions, 27 deletions
diff --git a/src/ScalarBoundary.c b/src/ScalarBoundary.c
index 48b98b4..6211ee2 100644
--- a/src/ScalarBoundary.c
+++ b/src/ScalarBoundary.c
@@ -747,7 +747,7 @@ void CCTK_FCALL CCTK_FNAME (BndScalarVN)
#define SCALAR_BOUNDARY_TYPED(doBC, \
iend, jend, kend, \
ii, jj, kk, \
- left_cctk_type, right_cctk_type, part) \
+ left_cctk_type, right_cctk_type) \
{ \
if (doBC) \
{ \
@@ -755,13 +755,14 @@ void CCTK_FCALL CCTK_FNAME (BndScalarVN)
{ \
for (j = 0; j < jend; j++) \
{ \
- for (i = 0; i < iend; i++) \
- { \
- int _index; \
+ int _index; \
\
\
- _index = INDEX_3D (lsh, ii, jj, kk); \
- ((left_cctk_type *) GH->data[var][timelvl])[_index] part = (right_cctk_type) scalar; \
+ _index = INDEX_3D (lsh, 0, jj, kk); \
+ for (i = 0; i < iend; i++) \
+ { \
+ ((left_cctk_type *) GH->data[var][timelvl])[_index++] NUMBER_PART = \
+ (right_cctk_type) scalar; \
} \
} \
} \
@@ -785,35 +786,35 @@ void CCTK_FCALL CCTK_FNAME (BndScalarVN)
@vio in
@endvar
@@*/
-#define SCALAR_BOUNDARY(left_cctk_type, right_cctk_type, part) \
+#define SCALAR_BOUNDARY(left_cctk_type, right_cctk_type) \
{ \
/* now set the boundaries face by face */ \
if (gdim > 0) \
{ \
/* lower x */ \
SCALAR_BOUNDARY_TYPED (doBC[0], stencil[0], lssh[1], lssh[2], \
- i, j, k, left_cctk_type, right_cctk_type, part); \
+ i, j, k, left_cctk_type, right_cctk_type); \
/* upper x */ \
SCALAR_BOUNDARY_TYPED (doBC[1], stencil[0], lssh[1], lssh[2], \
- lssh[0]-i-1, j, k, left_cctk_type, right_cctk_type, part); \
+ lssh[0]-i-1, j, k, left_cctk_type, right_cctk_type);\
} \
if (gdim > 1) \
{ \
/* lower y */ \
SCALAR_BOUNDARY_TYPED (doBC[2], lssh[0], stencil[1], lssh[2], \
- i, j, k, left_cctk_type, right_cctk_type, part); \
+ i, j, k, left_cctk_type, right_cctk_type); \
/* upper y */ \
SCALAR_BOUNDARY_TYPED (doBC[3], lssh[0], stencil[1], lssh[2], \
- i, lssh[1]-j-1, k, left_cctk_type, right_cctk_type, part); \
+ i, lssh[1]-j-1, k, left_cctk_type, right_cctk_type);\
} \
if (gdim > 2) \
{ \
/* lower z */ \
SCALAR_BOUNDARY_TYPED (doBC[4], lssh[0], lssh[1], stencil[2], \
- i, j, k, left_cctk_type, right_cctk_type, part); \
+ i, j, k, left_cctk_type, right_cctk_type); \
/* upper z */ \
SCALAR_BOUNDARY_TYPED (doBC[5], lssh[0], lssh[1], stencil[2], \
- i, j, lssh[2]-k-1, left_cctk_type, right_cctk_type, part); \
+ i, j, lssh[2]-k-1, left_cctk_type, right_cctk_type);\
} \
}
@@ -988,50 +989,57 @@ static int ApplyBndScalar (const cGH *GH,
switch (CCTK_VarTypeI (var))
{
+/* FIXME: can't pass an empty preprocessor constant as a macro argument
+ on some systems (eg. MacOS X), so we have to define it outside */
+#define NUMBER_PART
case CCTK_VARIABLE_CHAR:
- SCALAR_BOUNDARY (CCTK_CHAR, CCTK_CHAR, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_CHAR, CCTK_CHAR); break;
case CCTK_VARIABLE_INT:
- SCALAR_BOUNDARY (CCTK_INT, CCTK_INT, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_INT, CCTK_INT); break;
case CCTK_VARIABLE_REAL:
- SCALAR_BOUNDARY (CCTK_REAL, CCTK_REAL, NOTHING); break;
-
- case CCTK_VARIABLE_COMPLEX:
- SCALAR_BOUNDARY (CCTK_COMPLEX, CCTK_REAL, .Re);
- scalar = 0.;
- SCALAR_BOUNDARY (CCTK_COMPLEX, CCTK_REAL, .Im); break;
+ SCALAR_BOUNDARY (CCTK_REAL, CCTK_REAL); break;
#ifdef CCTK_INT2
case CCTK_VARIABLE_INT2:
- SCALAR_BOUNDARY (CCTK_INT2, CCTK_INT2, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_INT2, CCTK_INT2); break;
#endif
#ifdef CCTK_INT4
case CCTK_VARIABLE_INT4:
- SCALAR_BOUNDARY (CCTK_INT4, CCTK_INT4, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_INT4, CCTK_INT4); break;
#endif
#ifdef CCTK_INT8
case CCTK_VARIABLE_INT8:
- SCALAR_BOUNDARY (CCTK_INT8, CCTK_INT8, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_INT8, CCTK_INT8); break;
#endif
#ifdef CCTK_REAL4
case CCTK_VARIABLE_REAL4:
- SCALAR_BOUNDARY (CCTK_REAL4, CCTK_REAL4, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_REAL4, CCTK_REAL4); break;
#endif
#ifdef CCTK_REAL8
case CCTK_VARIABLE_REAL8:
- SCALAR_BOUNDARY (CCTK_REAL8, CCTK_REAL8, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_REAL8, CCTK_REAL8); break;
#endif
#ifdef CCTK_REAL16
case CCTK_VARIABLE_REAL16:
- SCALAR_BOUNDARY (CCTK_REAL16, CCTK_REAL16, NOTHING); break;
+ SCALAR_BOUNDARY (CCTK_REAL16, CCTK_REAL16); break;
#endif
+ case CCTK_VARIABLE_COMPLEX:
+#undef NUMBER_PART
+#define NUMBER_PART .Re
+ SCALAR_BOUNDARY (CCTK_COMPLEX, CCTK_REAL);
+ scalar = 0.0;
+#undef NUMBER_PART
+#define NUMBER_PART .Im
+ SCALAR_BOUNDARY (CCTK_COMPLEX, CCTK_REAL); break;
+
default:
CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
"Unsupported variable type %d for variable '%s'",