next up previous contents
Next: CCTK_InterpGridArrays() Return Codes Up: PUGHInterp's Implementation of CCTK_InterpGridArrays() Previous: Implementation Notes   Contents


Passing Additional Information via the Parameter Table

One of the function arguments to CCTK_InterpGridArrays() is an integer handle which refers to a key/value options table. Such a table can be used to pass additional information (such as the interpolation order) to the interpolation routines (i.e. to both CCTK_InterpGridArrays() and the local interpolator as invoked via CCTK_InterpLocalUniform()). The table may also be modified by these routines, eg. to exchange internal information between the local and global interpolator, and/or to pass back arbitrary information to the user.

The only table option currently evaluated by PUGHInterp's implementation of CCTK_InterpGridArrays() is:

  CCTK_INT input_array_time_levels[N_input_arrays];
which lets you choose the timelevels for the individual grid arrays to interpolate (in the range $[0, N\_time\_levels\-\_of\_var\_i - 1]$). If no such table option is given, then the current timelevel (0) will be taken as the default.

The following table options are meant for the user to specify how the local interpolator should deal with interpolation points near grid boundaries:

  CCTK_INT  N_boundary_points_to_omit[2 * N_dims];
  CCTK_REAL boundary_off_centering_tolerance[2 * N_dims];
  CCTK_REAL boundary_extrapolation_tolerance[2 * N_dims];
In the multi-processor case, CCTK_InterpGridArrays() will modify these arrays in a user-supplied options table in order to specify the handling of interpolation points near interprocessor boundaries (ghostzones) for the local interpolator; corresponding elements in the options arrays are set to zero for all ghostzone faces, i.e. no points should be omitted, and no off-centering and extrapolation is allowed at those boundaries. Array elements for physical grid boundaries are left unchanged by CCTK_InterpGridArrays().

If any of the above three boundary handling table options is missing in the user-supplied table, CCTK_InterpGridArrays() will create and add it to the table with appropriate defaults. For the default values, as well as a comprehensive discussion of grid boundary handling options, please refer to documentation of the thorn(s) providing local interpolator(s) (eg. thorn LocalInterp in the Cactus ThornGuide).

At present, the table option boundary_extrapolation_tolerance is not implemented. Instead, if any point cannot be mapped onto a processor (i.e. the point is outside the global grid), a level-1 warning is printed to stdout by default, and the error code CCTK_ERROR_INTERP_POINT_OUTSIDE is returned. The warning will not be printed if the parameter table contains an entry (of any type) with the key "suppress_warnings".

The local interpolation status will be stored in the user-supplied parameter table (if given) as an integer scalar value with the option key "local_interpolator_status" (see section I2.3.3 for details).

The table options

  CCTK_POINTER per_point_status;
  CCTK_INT     error_point_status;
are used internally by CCTK_InterpGridArrays() to pass information about per-point status codes between the global and the local interpolator (again see section I2.3.3 for details).


next up previous contents
Next: CCTK_InterpGridArrays() Return Codes Up: PUGHInterp's Implementation of CCTK_InterpGridArrays() Previous: Implementation Notes   Contents