diff options
Diffstat (limited to 'src/Startup.c')
-rw-r--r-- | src/Startup.c | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/src/Startup.c b/src/Startup.c new file mode 100644 index 0000000..c51b34a --- /dev/null +++ b/src/Startup.c @@ -0,0 +1,185 @@ +/*@@ + @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 <stdlib.h> + +#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"); +} |