#1750: [Pull request: CactusNumerical/LocalInterp2] C++ drop-in replacement for LocalInterp -----------------------------------+---------------------------------------- Reporter: dradice@… | Owner: Type: enhancement | Status: new Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Keywords: | -----------------------------------+---------------------------------------- LocalInterp2 is a drop-in replacement for LocalInterp, written in C++. The main features are:
Use C++ template instead of macros to handle all of the Cactus datatypes. The interpolation kernels have datatype, order and number of dimensions as template parameters (so that most loops / methods can be unrolled / inlined), but apart from that I did not use much template metaprogramming, so that compiling time is reasonable.
Completely generic Lagrange interpolation kernels: all orders and number of dimensions are supported (but need to be instantiated in the .cc file).
Symmetric interpolation with respect to coordinate inversion (optional, but enabled by default)
The higher level Cactus wrappers are adapted from the old LocalInterp, with some tweaks for the OpenMP parallelization.
Unit tests for the low-level kernels (TestLocalInterp2 thorn).
Passes the InterpToArray test suite.
This code has not been used for production runs yet, so I am looking for some adventurous user willing to test it.