next up previous contents
Next: Reduction Operators Up: Cactus Application Interfaces Previous: I/O   Contents


Interpolation Operators

The flesh does not provide interpolation routines by itself. Instead, it offers a general function API to thorns, for the registration and invocation of interpolation operators.

There are two different flesh APIs for interpolation, depending on whether the data arrays are Cactus grid arrays or processor-local, programming language built-in arrays, and on what assumptions are made about the topology and spacing of the grid (these descriptions are for 3D, but the generalisations to other numbers of dimensions should be obvious):

CCTK_InterpGridArrays()
Interpolates Cactus grid arrays, with the topology of the grid implicitly specified by a Cactus coordinate system.

This API doesn't provide an interpolation functionality itself, it only takes care of the interprocessor communication necessary when interpolating distributed grid arrays, and invokes the CCTK_InterpLocalUniform() API on the each processor's local patch of the data.

CCTK_InterpLocalUniform()
Interpolates processor-local arrays with uniformly spaced data points, where the coordinates 1#1 are related to the integer array subscripts ijk by linear functions
32#32
33#33
34#34
where the caller specifies the origin and delta values.

The flesh provides an API to register local interpolation operators:

CCTK_InterpRegisterOpLocalUniform()
Register a CCTK_InterpLocalUniform() interpolation operator
This is described in detail in the Reference Manual.

Each local interpolation operator is registered under a character string name; at registration, the name is mapped to a unique integer handle, which may be used to refer to the operator. CCTK_InterpHandle() is used to get the handle corresponding to a given character string name.


next up previous contents
Next: Reduction Operators Up: Cactus Application Interfaces Previous: I/O   Contents