/*@@ @file Startup.c @date Sun Jul 04 1999 @author Thomas Radke @desc Startup routines for LocalInterp/UniformCartesian @enddesc @history @date 22 Jan 2002 @author Jonathan Thornburg @hdesc Move all local-interpolation code from LocalInterp to here @endhistory @version $Header$ @@*/ #include #include "cctk.h" #include "cctk_Interp.h" #include "Interpolate.h" /* the rcs ID and its dummy function to use it */ static const char *rcsid = "$Header$"; CCTK_FILEVERSION(CactusBase_LocalInterp_Startup_c) /* prototypes of externally-visible routines defined in this source file */ void LocalInterp_Startup(void); /* prototypes of static routines defined in this source file */ static int LocalInterp_InterpLocal_1stOrder(cGH *GH, int num_points, int num_dims, int num_in_arrays, int num_out_arrays, const int coord_dims[], const void *const coord_arrays[], const int coord_array_types[], const void *const interp_coord_arrays[], const int interp_coord_array_types[], const void *const in_arrays[], const int in_array_types[], void *const out_arrays[], const int out_array_types[]); static int LocalInterp_InterpLocal_2ndOrder(cGH *GH, int num_points, int num_dims, int num_in_arrays, int num_out_arrays, const int coord_dims[], const void *const coord_arrays[], const int coord_array_types[], const void *const interp_coord_arrays[], const int interp_coord_array_types[], const void *const in_arrays[], const int in_array_types[], void *const out_arrays[], const int out_array_types[]); static int LocalInterp_InterpLocal_3rdOrder(cGH *GH, int num_points, int num_dims, int num_in_arrays, int num_out_arrays, const int coord_dims[], const void *const coord_arrays[], const int coord_array_types[], const void *const interp_coord_arrays[], const int interp_coord_array_types[], const void *const in_arrays[], const int in_array_types[], void *const out_arrays[], const int out_array_types[]); /******************************************************************************/ /*@@ @routine LocalInterp_InterpLocal_NthOrder @date Wed 14 Feb 2001 @author Thomas Radke @desc Wrappers for the different interpolation operators registered for first/second/third order interpolation. These wrappers just call the common interpolation routine passing all arguments plus the interpolation order. @enddesc @returntype int @returndesc the return code of the common interpolation routine @endreturndesc @@*/ static int LocalInterp_InterpLocal_1stOrder(cGH *GH, int num_points, int num_dims, int num_in_arrays, int num_out_arrays, const int coord_dims[], const void *const coord_arrays[], const int coord_array_types[], const void *const interp_coord_arrays[], const int interp_coord_array_types[], const void *const in_arrays[], const int in_array_types[], void *const out_arrays[], const int out_array_types[]) { return (LocalInterp_InterpLocal (GH, 1, num_points, num_dims, num_in_arrays, num_out_arrays, coord_dims, coord_arrays, coord_array_types, interp_coord_arrays, interp_coord_array_types, in_arrays, in_array_types, out_arrays, out_array_types)); } static int LocalInterp_InterpLocal_2ndOrder(cGH *GH, int num_points, int num_dims, int num_in_arrays, int num_out_arrays, const int coord_dims[], const void *const coord_arrays[], const int coord_array_types[], const void *const interp_coord_arrays[], const int interp_coord_array_types[], const void *const in_arrays[], const int in_array_types[], void *const out_arrays[], const int out_array_types[]) { return (LocalInterp_InterpLocal (GH, 2, num_points, num_dims, num_in_arrays, num_out_arrays, coord_dims, coord_arrays, coord_array_types, interp_coord_arrays, interp_coord_array_types, in_arrays, in_array_types, out_arrays, out_array_types)); } static int LocalInterp_InterpLocal_3rdOrder(cGH *GH, int num_points, int num_dims, int num_in_arrays, int num_out_arrays, const int coord_dims[], const void *const coord_arrays[], const int coord_array_types[], const void *const interp_coord_arrays[], const int interp_coord_array_types[], const void *const in_arrays[], const int in_array_types[], void *const out_arrays[], const int out_array_types[]) { return (LocalInterp_InterpLocal (GH, 3, num_points, num_dims, num_in_arrays, num_out_arrays, coord_dims, coord_arrays, coord_array_types, interp_coord_arrays, interp_coord_array_types, in_arrays, in_array_types, out_arrays, out_array_types)); } /******************************************************************************/ /*@@ @routine LocalInterp_Startup @date Sun Jul 04 1999 @author Thomas Radke @desc The startup registration routine for LocalInterp. Registers the interpolation operators with the flesh. @enddesc @calls CCTK_InterpRegisterOperatorLocal @@*/ void LocalInterp_Startup(void) { CCTK_InterpRegisterOperatorLocal (LocalInterp_InterpLocal_1stOrder, "first-order uniform cartesian"); CCTK_InterpRegisterOperatorLocal (LocalInterp_InterpLocal_2ndOrder, "second-order uniform cartesian"); CCTK_InterpRegisterOperatorLocal (LocalInterp_InterpLocal_3rdOrder, "third-order uniform cartesian"); }