next up previous contents
Next: Test Functions Up: TestInterp Previous: Abstract   Contents

Introduction

The basic operation of TestInterp is simple: set up input arrays to be known (analytic) smooth functions, interpolate them, and then look at the results.

When assessing the test results, we group the data types into 3 subsets:

real
CCTK_REAL, CCTK_COMPLEX real part, and CCTK_COMPLEX imaginary part
real4
CCTK_REAL4, CCTK_COMPLEX8 real part, and CCTK_COMPLEX8 imaginary part
real8
CCTK_REAL8, CCTK_COMPLEX16 real part, and CCTK_COMPLEX16 imaginary part

Depending on the Jacobian_test_type parameter, TestInterp can also test the CCTK_InterpLocalUniform() Jacobian computation. There are two types of Jacobian tests possible:

  • This thorn can query the interpolator to find out the ``query Jacobian'', and output this in various ways (described below).
  • Alternatively, TestInterp can additionally estimate the Jacobian by numerical perturbations. In this case both the query and numerical-perturbation Jacobians can be output, as can their difference (which should be small).
For any of the Jacobian tests, TestInterp first does a preliminary interpolator query to verify that the Jacobian is independent of which interpolator input array we're using (i.e. of the Cactus datatype). Once this is verified, TestInterp then only tests the Jacobian for the CCTK_REAL interpolation.

For the numerical-perturbation Jacobian computation, you can choose whether to try perturbing at all points of the input grid, or only at those points within what the interpolator reported (in the preliminary interpolator query) to be its' molecule size. The former gives a more rigorous test, but can be very slow in 3-D. The latter is a bit less rigorous, but much faster.


next up previous contents
Next: Test Functions Up: TestInterp Previous: Abstract   Contents