/* $Header$ */ #include #include #include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" #include "util_Table.h" void InterpToArray (CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS; DECLARE_CCTK_PARAMETERS; int interpolator; int options_table; int coord_handle; CCTK_REAL * restrict coordsx; CCTK_REAL * restrict coordsy; CCTK_REAL * restrict coordsz; CCTK_POINTER_TO_CONST coords[3]; CCTK_INT * restrict inputs; CCTK_INT * restrict output_types; CCTK_POINTER * restrict outputs; CCTK_INT * restrict operation_codes; CCTK_INT * restrict time_deriv_order; int nvars; int npoints; int n; int i, j, k; int d; int ierr; interpolator = CCTK_InterpHandle (interpolator_name); assert (interpolator >= 0); options_table = Util_TableCreateFromString (interpolator_options); assert (options_table >= 0); coord_handle = CCTK_CoordSystemHandle (interpolator_coordinates); assert (coord_handle >= 0); /* Scalars */ { nvars = nscalars; if (nvars > 0) { npoints = 1; coordsx = malloc (npoints * sizeof * coordsx); assert (coordsx); coordsy = malloc (npoints * sizeof * coordsy); assert (coordsy); coordsz = malloc (npoints * sizeof * coordsz); assert (coordsz); coords[0] = coordsx; coords[1] = coordsy; coords[2] = coordsz; n = 0; assert (n <= npoints); coordsx[n] = scalar_x0; coordsy[n] = scalar_y0; coordsz[n] = scalar_z0; ++n; assert (n == npoints); inputs = malloc (nvars * sizeof * inputs); assert (inputs); for (n=0; n 0) { npoints = array1d_npoints_i; coordsx = malloc (npoints * sizeof * coordsx); assert (coordsx); coordsy = malloc (npoints * sizeof * coordsy); assert (coordsy); coordsz = malloc (npoints * sizeof * coordsz); assert (coordsz); coords[0] = coordsx; coords[1] = coordsy; coords[2] = coordsz; n = 0; for (i=0; i= 0); if (inputs[n] < 0) { inputs[n] = -1; } } output_types = malloc (nvars * sizeof * output_types); assert (output_types); for (n=0; n 0) { npoints = array2d_npoints_i * array2d_npoints_j; coordsx = malloc (npoints * sizeof * coordsx); assert (coordsx); coordsy = malloc (npoints * sizeof * coordsy); assert (coordsy); coordsz = malloc (npoints * sizeof * coordsz); assert (coordsz); coords[0] = coordsx; coords[1] = coordsy; coords[2] = coordsz; n = 0; for (j=0; j 0) { npoints = array3d_npoints_i * array3d_npoints_j * array3d_npoints_k; coordsx = malloc (npoints * sizeof * coordsx); assert (coordsx); coordsy = malloc (npoints * sizeof * coordsy); assert (coordsy); coordsz = malloc (npoints * sizeof * coordsz); assert (coordsz); coords[0] = coordsx; coords[1] = coordsy; coords[2] = coordsz; n = 0; for (k=0; k