![]() ![]() ![]() ![]() Next: Driver Interaction Up: Symmetry Interpolation Previous: Symmetry Interpolation Contents Interaction With Symmetry ConditionsThe symmetry conditions have to register their ``symmetry interpolation'' routines by calling SymBase's aliased function SymmetryRegisterGridInterpolator. The ``symmetry interpolation'' routine must use C linkage and must have the prototype
CCTK_INT symmetry_interpolate (CCTK_POINTER_TO_CONST IN cctkGH, CCTK_INT IN N_dims, CCTK_INT IN local_interp_handle, CCTK_INT IN param_table_handle, CCTK_INT IN coord_system_handle, CCTK_INT IN N_interp_points, CCTK_INT IN interp_coords_type, CCTK_POINTER_TO_CONST ARRAY IN interp_coords, CCTK_INT IN N_input_arrays, CCTK_INT ARRAY IN input_array_indices, CCTK_INT IN N_output_arrays, CCTK_INT ARRAY IN output_array_types, CCTK_POINTER ARRAY IN output_arrays, CCTK_INT IN faces) These arguments are the same as those for CCTK_InterpGridArrays, except that here the bit field faces is used to flag those faces that remain to have their symmetry boundary condition applied to the interpolation points. The aliased function SymmetryRegisterGridInterpolator has the prototype
CCTK_INT FUNCTION \ SymmetryRegisterGridInterpolator \ (CCTK_POINTER IN cctkGH, \ CCTK_INT IN sym_handle, \ CCTK_INT CCTK_FPOINTER IN symmetry_interpolate \ (CCTK_POINTER_TO_CONST IN cctkGH, \ CCTK_INT IN N_dims, \ CCTK_INT IN local_interp_handle, \ CCTK_INT IN param_table_handle, \ CCTK_INT IN coord_system_handle, \ CCTK_INT IN N_interp_points, \ CCTK_INT IN interp_coords_type, \ CCTK_POINTER_TO_CONST ARRAY IN interp_coords, \ CCTK_INT IN N_input_arrays, \ CCTK_INT ARRAY IN input_array_indices, \ CCTK_INT IN N_output_arrays, \ CCTK_INT ARRAY IN output_array_types, \ CCTK_POINTER ARRAY IN output_arrays, \ CCTK_INT IN faces)) which takes a function pointer to the aforementioned ``symmetry interpolation'' routine, while sym_handle specifies which symmetry condition this routine is for. This handle must have been obtained from SymmetryRegister.
The routine SymmetryRegisterGridInterpolator must be called after the symmetry faces have been selected by the call to SymmetryRegisterGrid. For convenience, the macro CCTK_ALL_FACES is provided. It may be used to initialize the faces bit field in cases where the interpolation is to occur on all grid faces. After it has removed from the faces variable the faces whose symmetry condition it has applied, the symmetry interpolator routine must call the SymBase function SymmetryInterpolateFaces, which has the prototype
CCTK_INT FUNCTION \ SymmetryInterpolateFaces \ (CCTK_POINTER_TO_CONST IN cctkGH, \ CCTK_INT IN N_dims, \ CCTK_INT IN local_interp_handle, \ CCTK_INT IN param_table_handle, \ CCTK_INT IN coord_system_handle, \ CCTK_INT IN N_interp_points, \ CCTK_INT IN interp_coords_type, \ CCTK_POINTER_TO_CONST ARRAY IN interp_coords, \ CCTK_INT IN N_input_arrays, \ CCTK_INT ARRAY IN input_array_indices, \ CCTK_INT IN N_output_arrays, \ CCTK_INT ARRAY IN output_array_types, \ CCTK_POINTER ARRAY IN output_arrays, \ CCTK_INT IN faces)
![]() ![]() ![]() ![]() Next: Driver Interaction Up: Symmetry Interpolation Previous: Symmetry Interpolation Contents |