## CarpetInterp

26 August 2005

### Abstract

Thorn CarpetInterp provides a parallel interpolator for Carpet.

### 1 Introduction

CarpetInterp works similar to PUGHInterp, the interpolation thorn of the standard unigrid driver in Cactus.

1. Firstly, the points to interpolate at (which can vary from processor to processor) are mapped onto processors. Each processor accumulates the number of coordinates it needs to send to other processors (which own the corresponding points).

2. In a collective communication step, all processors exchange the coordinates of the interpolation points which are not located locally.

3. After each processor received the coordinates of (local) points to interpolate at, it maps them onto components (also counting the number of points for each component).

4. Now all processors do – in parallel – the actual interpolation by calling the local interpolator (via CCTK_InterpLocalUnform()) on each component.

5. Finally, the interpolation results are sent back to the requesting processors in another collective communication step.

### 2 Using CarpetInterp

CarpetInterp overloads the flesh interpolation C API routine

  int CCTK_InterpGridArrays
(const cGH *GH,
int N_dims,
int local_interp_handle,
int param_table_handle,
int coord_system_handle,
int N_interp_points,
int interp_coords_type,
const void *const interp_coords[],
int N_input_arrays,
const CCTK_INT input_array_indices[],
int N_output_arrays,
const CCTK_INT output_array_types[],
void *const output_arrays[])


which is described in detail in the Cactus Reference Manual.

It also provides an equivalent aliased function

  CCTK_INT FUNCTION DriverInterpolate
(CCTK_POINTER_TO_CONST IN cctkGH,
CCTK_INT IN N_dims,
CCTK_INT IN local_interp_handle,
CCTK_INT IN param_table_handle,
CCTK_INT IN coord_system_handle,
CCTK_INT IN N_interp_points,
CCTK_INT IN interp_coords_type,
CCTK_POINTER_TO_CONST ARRAY IN interp_coords,
CCTK_INT IN N_input_arrays,
CCTK_INT ARRAY IN input_array_indices,
CCTK_INT IN N_output_arrays,
CCTK_INT ARRAY IN output_array_types,
CCTK_POINTER ARRAY IN output_arrays)


which can be called by symmetry thorns to implement symmetry interpolations (see the thorn documentation of CactusBase/SymBase for details).

#### 2.1 Limitations

The current implementation of CarpetInterp supports only 3-dimensional grid variables as inputs (N_dims $==$ 3).

Interpolation coordinates and output arrays must be of type CCTK_VARIABLE_REAL.

A valid handle for a parameter table must be passed in so that CarpetInterp can store in it the overall status code of the local interpolator.

### 3 Parameters

 barriers Scope: private BOOLEAN Description: Insert barriers at strategic places for debugging purposes (slows down execution) Default: no

 check_tree_search Scope: private BOOLEAN Description: Cross-check the result of the tree search Default: no

 ipoison Scope: private REAL Description: Integer poison value Range Default: -420042 *:*

 poison Scope: private REAL Description: Poison value Range Default: -4.20042e+30 *:*

 tree_search Scope: private BOOLEAN Description: Use a tree search to find the source processor Default: yes

### 4 Interfaces

#### General

Implements:

interp

nompi.h

data.hh

bbox.hh

data.hh

defs.hh

dist.hh

ggf.hh

timestat.hh

typecase.hh

typeprops.hh

vect.hh

carpet.hh

Provides:

DriverInterpolate to

### 5 Schedule

This section lists all the variables which are assigned storage by thorn Carpet/CarpetInterp. 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.

NONE

#### Scheduled Functions

CCTK_STARTUP

carpetinterpstartup

startup routine

 Language: c Type: function