From a10c0c96ae61c638f6770a0a422fe38dd4299d26 Mon Sep 17 00:00:00 2001 From: tradke Date: Fri, 5 Nov 2004 10:45:26 +0000 Subject: Fixed resizing of resulting jpeg images: leave one grid point at boundaries as interpolation stencil. git-svn-id: http://svn.cactuscode.org/arrangements/CactusIO/IOJpeg/trunk@107 eff87b29-5268-4891-90a3-a07138403961 --- src/Write.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Write.c b/src/Write.c index 8c416c9..b978f66 100644 --- a/src/Write.c +++ b/src/Write.c @@ -242,7 +242,7 @@ static void *RefineData (CCTK_INT input_dims[2], const void *input_data) CCTK_REAL coord_delta[2]; const CCTK_INT array_type_codes[2] = {CCTK_VARIABLE_REAL, CCTK_VARIABLE_REAL}; CCTK_REAL *interp_coords[2], *refined_data; - int i, j, interp_handle, N_interp_points; + int i, j, interp_handle, table_handle, N_interp_points; CCTK_INT output_dims[2]; DECLARE_CCTK_PARAMETERS @@ -256,27 +256,29 @@ static void *RefineData (CCTK_INT input_dims[2], const void *input_data) return (NULL); } + table_handle = Util_TableCreateFromString ("order = 1"); coord_delta[0] = coord_delta[1] = refinement_factor; - output_dims[0] = refinement_factor * (input_dims[0] - 1); - output_dims[1] = refinement_factor * (input_dims[1] - 1); + /* leave one grid point at the boundary as interpolation stencil */ + output_dims[0] = refinement_factor * (input_dims[0] - 1) - 2; + output_dims[1] = refinement_factor * (input_dims[1] - 1) - 2; N_interp_points = output_dims[0] * output_dims[1]; interp_coords[0] = malloc (2 * N_interp_points * sizeof (CCTK_REAL)); - interp_coords[1] = interp_coords[0]; - for (i = 0; i < output_dims[0]; i++) + interp_coords[1] = interp_coords[0] + N_interp_points; + for (j = 0; j < output_dims[1]; j++) { - for (j = 0; j < output_dims[1]; j++) + for (i = 0; i < output_dims[0]; i++) { - *interp_coords[0]++ = i; - *interp_coords[1]++ = j; + *interp_coords[0]++ = i + 1; + *interp_coords[1]++ = j + 1; } } interp_coords[0] -= N_interp_points; interp_coords[1] -= N_interp_points; refined_data = malloc (N_interp_points * sizeof (CCTK_REAL)); - if (CCTK_InterpLocalUniform (2, interp_handle, -1, + if (CCTK_InterpLocalUniform (2, interp_handle, table_handle, coord_origin, coord_delta, N_interp_points, CCTK_VARIABLE_REAL, (const void *const *) interp_coords, @@ -295,6 +297,7 @@ static void *RefineData (CCTK_INT input_dims[2], const void *input_data) } free (interp_coords[0]); + Util_TableDestroy (table_handle); return (refined_data); } -- cgit v1.2.3