diff options
author | tradke <tradke@eff87b29-5268-4891-90a3-a07138403961> | 2004-11-05 10:45:26 +0000 |
---|---|---|
committer | tradke <tradke@eff87b29-5268-4891-90a3-a07138403961> | 2004-11-05 10:45:26 +0000 |
commit | a10c0c96ae61c638f6770a0a422fe38dd4299d26 (patch) | |
tree | 0e81c576a2aa82a59f34cc355a2583f59ee105b3 | |
parent | 14643128af1ed216faab10b8cf3f939d47242715 (diff) |
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
-rw-r--r-- | src/Write.c | 21 |
1 files 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); } |