summaryrefslogtreecommitdiff
path: root/src/include/cctk_Reduction.h
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>2004-08-12 17:31:49 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>2004-08-12 17:31:49 +0000
commitae8ba8ef3d6141956d20ebdafce072cd9b4ad4ff (patch)
tree78fe0f0f25e772e9b8d206db76de26bc9f1e25cf /src/include/cctk_Reduction.h
parente5ee137768e7eede064dcf150346f0a0cf099fad (diff)
New reduction APIs - as done by Yaakoub.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@3829 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/include/cctk_Reduction.h')
-rw-r--r--src/include/cctk_Reduction.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/include/cctk_Reduction.h b/src/include/cctk_Reduction.h
index e61cebc2..1a20ec8b 100644
--- a/src/include/cctk_Reduction.h
+++ b/src/include/cctk_Reduction.h
@@ -33,6 +33,18 @@
void *arg_outVals, \
int arg_outType
+#define REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST \
+ int N_dims, \
+ int operator_handle, \
+ int param_table_handle, \
+ int N_input_arrays, \
+ const CCTK_INT input_array_dims[], \
+ const CCTK_INT input_array_type_codes[], \
+ const void *const input_arrays[], \
+ int M_output_numbers, \
+ const CCTK_INT output_number_type_codes[], \
+ void *const output_numbers[]
+
#ifdef __cplusplus
extern "C"
{
@@ -47,6 +59,16 @@ typedef int (*cReduceOperator) (const cGH *GH,
int arg_num_invars,
const int arg_varlist[]);
+/* prototype for local array reduction operator routine */
+typedef int (*cLocalArrayReduceOperator) (int N_dims, int operator_handle,
+ int param_table_handle, int N_input_arrays,
+ const CCTK_INT input_array_dims[],
+ const CCTK_INT input_array_type_codes[],
+ const void *const input_arrays[],
+ int M_output_numbers,
+ const CCTK_INT output_number_type_codes[],
+ void *const output_numbers[]);
+
int CCTK_Reduce(const cGH *GH,
int proc,
int operation_handle,
@@ -76,6 +98,36 @@ const char *CCTK_ReduceOperator (int handle);
int CCTK_NumReduceOperators(void);
+/* new local array reduction API */
+int CCTK_ReduceLocalArrays(int N_dims, int operator_handle,
+ int param_table_handle, int N_input_arrays,
+ const CCTK_INT input_array_dims[],
+ const CCTK_INT input_array_type_codes[],
+ const void *const input_arrays[],
+ int M_output_numbers,
+ const CCTK_INT output_number_type_codes[],
+ void *const output_numbers[]);
+
+int CCTK_LocalArrayReductionHandle(const char *reduction);
+
+#define CCTK_RegisterLocalArrayReductionOperator(a,b) \
+ CCTKi_RegisterLocalArrayReductionOperator(CCTK_THORNSTRING,a,b)
+
+int CCTKi_RegisterLocalArrayReductionOperator(const char *thorn,
+ cLocalArrayReduceOperator operatorGV,
+ const char *name);
+
+int CCTK_LocalArrayReductionHandle(const char *reduction);
+
+int CCTK_RegisterReductionLocalArrayOperator(
+ int (*function)(REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST),
+ const char *name);
+
+const char *CCTK_LocalArrayReduceOperatorImplementation(int handle);
+
+const char *CCTK_LocalArrayReduceOperator (int handle);
+
+
/* FIXME: old interface - should go */
int CCTK_ReduceLocalScalar (const cGH *GH, int proc, int operation_handle,
const void *inScalar, void *outScalar, int dataType);
@@ -115,6 +167,8 @@ int CCTK_ReduceArray(const cGH *GH,
int num_in_arrays,
int type_in_arrays,
... );
+
+
#ifdef __cplusplus
}