aboutsummaryrefslogtreecommitdiff
path: root/src/SymBase.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/SymBase.h')
-rw-r--r--src/SymBase.h87
1 files changed, 86 insertions, 1 deletions
diff --git a/src/SymBase.h b/src/SymBase.h
index 397c0a1..b4e118e 100644
--- a/src/SymBase.h
+++ b/src/SymBase.h
@@ -14,21 +14,60 @@
#include "cctk.h"
+#include "cctk_Arguments.h"
/* SymBase's GH extension */
struct SymBase
{
+ /* The table handles below identify tables that have the following
+ entries:
+
+ CCTK_INT symmetry_handle[2*dim]
+ CCTK_INT symmetry_zone_width[2*dim]
+ CCTK_FPOINTER symmetry_interpolate[2*dim]
+
+ dim is here the dimension of the group containing the variable,
+ i.e. there is one entry per face. The true type of the
+ symmetry_interpolate entries is SymmetryInterpolateFPointer.
+
+ (Given that user code is not allowed to modify these tables, and
+ that this structure is defined here in this header file, there is
+ no real need to use tables for this. It would be possible to put
+ these data directly into this structure, thereby simplifying user
+ code and not make anything less flexible.)
+ */
+
/* Grid symmetry table handle */
int sym_table;
- /* Grid array symmetry table handles */
+ /* Grid array symmetry table handles, one handle per grid
+ variable */
int *array_sym_tables;
};
+typedef
+CCTK_INT
+(* SymmetryInterpolateFPointer) (CCTK_POINTER_TO_CONST const cctkGH_,
+ CCTK_INT const N_dims,
+ CCTK_INT const local_interp_handle,
+ CCTK_INT const param_table_handle,
+ CCTK_INT const coord_system_handle,
+ CCTK_INT const N_interp_points,
+ CCTK_INT const interp_coords_type,
+ CCTK_POINTER_TO_CONST const interp_coords[],
+ CCTK_INT const N_input_arrays,
+ CCTK_INT const input_array_indices[],
+ CCTK_INT const N_output_arrays,
+ CCTK_INT const output_array_types[],
+ CCTK_POINTER const output_arrays[],
+ CCTK_INT const faces);
+
+
+
/* Number of registered symmetries */
extern size_t SymBase_num_symmetries;
@@ -73,6 +112,16 @@ SymBase_SymmetryRegisterGN (CCTK_POINTER const cctkGH_,
CCTK_INT const *const new_symmetry_zone_width,
CCTK_STRING const group_name);
+CCTK_INT
+SymBase_SymmetryRegisterInterpolatorFaces (CCTK_INT const sym_table,
+ CCTK_INT const group_dim,
+ CCTK_INT const sym_handle,
+ SymmetryInterpolateFPointer const new_symmetry_interpolate);
+CCTK_INT
+SymBase_SymmetryRegisterGridInterpolator (CCTK_POINTER const cctkGH_,
+ CCTK_INT const sym_handle,
+ SymmetryInterpolateFPointer const new_symmetry_interpolate);
+
/* Table.c */
CCTK_INT
SymBase_SymmetryTableHandleForGrid (CCTK_POINTER_TO_CONST const cctkGH_);
@@ -83,6 +132,42 @@ CCTK_INT
SymBase_SymmetryTableHandleForGN (CCTK_POINTER_TO_CONST const cctkGH_,
CCTK_STRING const group_name);
+/* Interpolate.c */
+CCTK_INT
+SymBase_SymmetryInterpolate (CCTK_POINTER_TO_CONST const cctkGH_,
+ CCTK_INT const N_dims,
+ CCTK_INT const local_interp_handle,
+ CCTK_INT const param_table_handle,
+ CCTK_INT const coord_system_handle,
+ CCTK_INT const N_interp_points,
+ CCTK_INT const interp_coords_type,
+ CCTK_POINTER_TO_CONST const interp_coords[],
+ CCTK_INT const N_input_arrays,
+ CCTK_INT const input_array_indices[],
+ CCTK_INT const N_output_arrays,
+ CCTK_INT const output_array_types[],
+ CCTK_POINTER const output_arrays[]);
+CCTK_INT
+SymBase_SymmetryInterpolateFaces (CCTK_POINTER_TO_CONST const cctkGH_,
+ CCTK_INT const N_dims,
+ CCTK_INT const local_interp_handle,
+ CCTK_INT const param_table_handle,
+ CCTK_INT const coord_system_handle,
+ CCTK_INT const N_interp_points,
+ CCTK_INT const interp_coords_type,
+ CCTK_POINTER_TO_CONST const interp_coords[],
+ CCTK_INT const N_input_arrays,
+ CCTK_INT const input_array_indices[],
+ CCTK_INT const N_output_arrays,
+ CCTK_INT const output_array_types[],
+ CCTK_POINTER const output_arrays[],
+ CCTK_INT const faces);
+
+
+/* Statistics.c */
+void
+SymBase_Statistics (CCTK_ARGUMENTS);
+
#endif /* ! defined SYMBASE_H */