aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortradke <tradke@d60812e6-3970-4df4-986e-c251b06effeb>2003-04-14 09:56:53 +0000
committertradke <tradke@d60812e6-3970-4df4-986e-c251b06effeb>2003-04-14 09:56:53 +0000
commit877563c30139297e78b0b41bc4d4727828958fc6 (patch)
tree1bc9a76c6872ddfc9c0dc227303f371cbecd2016
parentf69684d7aba78edce0e0465e8ba338ae19a1e4b7 (diff)
Handle all complex variable datatypes (not just the standard CCTK_COMPLEX).
This closes PR CactusPUGH/1475. git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGHReduce/trunk@36 d60812e6-3970-4df4-986e-c251b06effeb
-rw-r--r--src/ReductionMax.c19
-rw-r--r--src/ReductionMin.c19
-rw-r--r--src/ReductionNorm1.c29
-rw-r--r--src/ReductionNorm2.c23
-rw-r--r--src/ReductionNormInf.c29
-rw-r--r--src/ReductionSum.c19
6 files changed, 114 insertions, 24 deletions
diff --git a/src/ReductionMax.c b/src/ReductionMax.c
index 06c28ab..bc02aa0 100644
--- a/src/ReductionMax.c
+++ b/src/ReductionMax.c
@@ -212,8 +212,9 @@ static int ReductionMaxVal (const cGH *GH,
CCTK_REAL outvals[/*num_inarrays*num_outvals*/])
{
int i, total_outvals;
+ const char *vtypename;
#ifdef CCTK_MPI
- pGH *pughGH;
+ const pGH *pughGH;
CCTK_REAL *local_outvals;
#endif
@@ -297,13 +298,17 @@ static int ReductionMaxVal (const cGH *GH,
break;
#endif
- case CCTK_VARIABLE_COMPLEX:
- CCTK_WARN (1, "PUGH_ReductionMaxVal: Don't know how to compute "
- "the maximum of complex variables !!!");
- return (-1);
-
default:
- CCTK_WARN (1, "PUGH_ReductionMaxVal: Unknown variable type");
+ vtypename = CCTK_VarTypeName (intypes[i]);
+ if (vtypename && strncmp (vtypename, "CCTK_VARIABLE_COMPLEX", 21) == 0)
+ {
+ CCTK_WARN (1, "PUGH_ReductionMaxVal: Don't know how to compute "
+ "the maximum of complex variables !!!");
+ }
+ else
+ {
+ CCTK_WARN (1, "PUGH_ReductionMaxVal: Unknown variable type");
+ }
return (-1);
}
}
diff --git a/src/ReductionMin.c b/src/ReductionMin.c
index 2d7d494..d28e24f 100644
--- a/src/ReductionMin.c
+++ b/src/ReductionMin.c
@@ -213,8 +213,9 @@ static int ReductionMinVal (const cGH *GH,
CCTK_REAL outvals[/*num_inarrays*num_outvals*/])
{
int i, total_outvals;
+ const char *vtypename;
#ifdef CCTK_MPI
- pGH *pughGH;
+ const pGH *pughGH;
CCTK_REAL *local_outvals;
#endif
@@ -298,13 +299,17 @@ static int ReductionMinVal (const cGH *GH,
break;
#endif
- case CCTK_VARIABLE_COMPLEX:
- CCTK_WARN (1, "PUGH_ReductionMinVal: Don't know how to compute "
- "the minimum of complex variables !!!");
- return (-1);
-
default:
- CCTK_WARN (1, "PUGH_ReductionMinVal: Unknown variable type");
+ vtypename = CCTK_VarTypeName (intypes[i]);
+ if (vtypename && strncmp (vtypename, "CCTK_VARIABLE_COMPLEX", 21) == 0)
+ {
+ CCTK_WARN (1, "PUGH_ReductionMinVal: Don't know how to compute "
+ "the minimum of complex variables !!!");
+ }
+ else
+ {
+ CCTK_WARN (1, "PUGH_ReductionMinVal: Unknown variable type");
+ }
return (-1);
}
}
diff --git a/src/ReductionNorm1.c b/src/ReductionNorm1.c
index f621602..4c4209b 100644
--- a/src/ReductionNorm1.c
+++ b/src/ReductionNorm1.c
@@ -216,7 +216,7 @@ static int ReductionNorm1 (const cGH *GH,
CCTK_REAL outvals[/*num_inarrays*num_outvals*/])
{
int i, total_outvals;
- pGH *pughGH;
+ const pGH *pughGH;
#ifdef CCTK_MPI
CCTK_REAL *local_outvals;
#endif
@@ -311,6 +311,33 @@ static int ReductionNorm1 (const cGH *GH,
CCTK_REAL, outvals, num_outvals, total_outvals);
break;
+#ifdef CCTK_REAL4
+#undef REDUCTION_OPERATION
+#define REDUCTION_OPERATION(norm1, scalar) norm1 += CCTK_Cmplx8Abs (scalar)
+ ITERATE_ARRAY (CCTK_COMPLEX8, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL4, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
+#ifdef CCTK_REAL8
+#undef REDUCTION_OPERATION
+#define REDUCTION_OPERATION(norm1, scalar) norm1 += CCTK_Cmplx16Abs (scalar)
+ ITERATE_ARRAY (CCTK_COMPLEX16, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL8, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
+#ifdef CCTK_REAL16
+#undef REDUCTION_OPERATION
+#define REDUCTION_OPERATION(norm1, scalar) norm1 += CCTK_Cmplx32Abs (scalar)
+ ITERATE_ARRAY (CCTK_COMPLEX32, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL16, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
default:
CCTK_WARN (1, "PUGH_ReductionNorm1: Unknown variable type");
return (-1);
diff --git a/src/ReductionNorm2.c b/src/ReductionNorm2.c
index 737a095..7d0fc04 100644
--- a/src/ReductionNorm2.c
+++ b/src/ReductionNorm2.c
@@ -217,7 +217,7 @@ static int ReductionNorm2 (const cGH *GH,
CCTK_REAL outvals[/*num_inarrays*num_outvals*/])
{
int i, total_outvals;
- pGH *pughGH;
+ const pGH *pughGH;
#ifdef CCTK_MPI
CCTK_REAL *local_outvals;
#endif
@@ -311,6 +311,27 @@ static int ReductionNorm2 (const cGH *GH,
CCTK_REAL, outvals, num_outvals, total_outvals);
break;
+#ifdef CCTK_REAL4
+ ITERATE_ARRAY (CCTK_COMPLEX8, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL4, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
+#ifdef CCTK_REAL8
+ ITERATE_ARRAY (CCTK_COMPLEX16, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL8, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
+#ifdef CCTK_REAL16
+ ITERATE_ARRAY (CCTK_COMPLEX32, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL16, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
default:
CCTK_WARN (1, "PUGH_ReductionNorm2: Unknown variable type");
return (-1);
diff --git a/src/ReductionNormInf.c b/src/ReductionNormInf.c
index c304477..363ca5b 100644
--- a/src/ReductionNormInf.c
+++ b/src/ReductionNormInf.c
@@ -217,7 +217,7 @@ static int ReductionNormInf (const cGH *GH,
{
int i, total_outvals;
#ifdef CCTK_MPI
- pGH *pughGH;
+ const pGH *pughGH;
CCTK_REAL *local_outvals;
#endif
@@ -322,6 +322,33 @@ static int ReductionNormInf (const cGH *GH,
CCTK_REAL, outvals, num_outvals, total_outvals);
break;
+#ifdef CCTK_REAL4
+#undef REDUCTION_OPERATION
+#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, CCTK_Cmplx8Abs(scalar))
+ ITERATE_ARRAY (CCTK_COMPLEX8, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL4, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
+#ifdef CCTK_REAL8
+#undef REDUCTION_OPERATION
+#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, CCTK_Cmplx16Abs(scalar))
+ ITERATE_ARRAY (CCTK_COMPLEX16, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL8, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
+#ifdef CCTK_REAL16
+#undef REDUCTION_OPERATION
+#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, CCTK_Cmplx32Abs(scalar))
+ ITERATE_ARRAY (CCTK_COMPLEX32, num_dims, inarrays[i],
+ from, to, iterator, points_per_dim,
+ CCTK_REAL16, outvals, num_outvals, total_outvals);
+ break;
+#endif
+
default:
CCTK_WARN (1, "PUGH_ReductionNormInf: Unknown variable type");
return (-1);
diff --git a/src/ReductionSum.c b/src/ReductionSum.c
index ffeb39e..46053ac 100644
--- a/src/ReductionSum.c
+++ b/src/ReductionSum.c
@@ -212,8 +212,9 @@ static int ReductionSum (const cGH *GH,
CCTK_REAL outvals[/*num_inarrays*num_outvals*/])
{
int i, total_outvals;
+ const char *vtypename;
#ifdef CCTK_MPI
- pGH *pughGH;
+ const pGH *pughGH;
CCTK_REAL *local_outvals;
#endif
@@ -297,13 +298,17 @@ static int ReductionSum (const cGH *GH,
break;
#endif
- case CCTK_VARIABLE_COMPLEX:
- CCTK_WARN (1, "PUGH_ReductionSum: Don't know how to compute "
- "the sum of complex variables !!!");
- return (-1);
-
default:
- CCTK_WARN (1, "PUGH_ReductionSum: Unknown variable type");
+ vtypename = CCTK_VarTypeName (intypes[i]);
+ if (vtypename && strncmp (vtypename, "CCTK_VARIABLE_COMPLEX", 21) == 0)
+ {
+ CCTK_WARN (1, "PUGH_ReductionSum: Don't know how to compute "
+ "the sum of complex variables !!!");
+ }
+ else
+ {
+ CCTK_WARN (1, "PUGH_ReductionSum: Unknown variable type");
+ }
return (-1);
}
}