aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortradke <tradke@eff87b29-5268-4891-90a3-a07138403961>2004-11-05 10:45:26 +0000
committertradke <tradke@eff87b29-5268-4891-90a3-a07138403961>2004-11-05 10:45:26 +0000
commita10c0c96ae61c638f6770a0a422fe38dd4299d26 (patch)
tree0e81c576a2aa82a59f34cc355a2583f59ee105b3
parent14643128af1ed216faab10b8cf3f939d47242715 (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.c21
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);
}