xx Thorn Guide for the LocalInterp Thorn

Thorn Guide for the LocalInterp Thorn

Thomas Radke

Date

Abstract

This thorn does processor-local interpolation of N-dimensional data arrays. In general there may be many input arrays (all defined on the same uniform Cartesian grid) all being interpolated to the same set of interpolation points.

1 Introduction

This thorn provides processor-local interpolation, using the interpolation operator

xx"uniformxcartesian"

for the Cactus local interpolation API CCTK_InterpLocalUniform(). (Note that the word “cartesian” is in lower case here!) It supports 1, 2, and 3-dimensional interpolation.

See the Cactus Reference Manual for a full description of the CCTK_InterpLocalUniform() API, and some examples of how to use it.

1.1 History

This interpolator was written by Thomas Radke in early 2001 (drawing on older code by Paul Walker). It originally lived in the PUGHInterp thorn, but it turned to have very little to do with PUGH, so was moved here in winter 2001-2002.

From winter 2001-2002 to July 2003 this thorn also contained another interpolator written by Jonathan Thornburg, but in July 2003 that interpolator was moved to AEIThorns/AEILocalInterp/ because it was (is) GPL and Cactus policies are that this arrangement (CactusBase) is reserved for code under the Cactus-flesh license (= GPL except that it’s like LGPL for linking with other thorns).

At the beginning of 2015 the low-level interpolation kernels of this thorn were rewritten in C++ by David Radice.

2 Implementation

Internally, this interpolator always does 3-D interpolation, inserting zero coordinates as appropriate for lower dimensionalities. The interpolation is done by successive 1-D interpolations along each axis.1 1Note that this means that different axes are treated slightly differently by the interpolator. In other words, at the level of finite differencing errors, interpolation does not commute with permuting the axes. However, in practice the differences are likely to be small, at least for smooth input data. See the README file in the src/ directory for further details.

2.1 Additional information passed in as table options

The CCTK_InterpLocalUniform() API accepts a table handle as one of its arguments which can be used to pass additional information to the local interpolator via table options.

The only table option supported so far by LocalInterp’s "uniform cartesian" operator is the interpolation order which must be passed as a CCTKxINT value with key "order". Options with keys "Nxboundaryxpointsxtoxomit",

"boundaryxoffxcenteringxtolerance", or "boundaryxextrapolationxtolerance" (which are usually passed

by a global interpolator) are also recognized but silently ignored (a level-4 warning message will be issued in this case).

3 Parameters

4 Interfaces

General Implements: localinterp

Adds header: LagrangeInterp.hh 5 Schedule This section lists all the variables which are assigned storage by thorn CactusNumerical/LocalInterp2. Storage can either last for the duration of the run (Always means that if this thorn is activated storage will be assigned, Conditional means that if this thorn is activated storage will be assigned for the duration of the run if some condition is met), or can be turned on for the duration of a schedule function.

Storage NONE

Scheduled Functions

CCTKxSTARTUP x localinterp2xstartup x register localinterp2’s interpolation operators x

11x11After: 11driverxstartup
11 x 11Language:11c
11 x 11Type: 11function