LocalInterp2: C++ drop-in replacement for LocalInterp
David Radice
Branch: dradice/cactusnumerical:localinterp2
Branch: cactuscode/cactusnumerical:master
Declined
Declined pull request
Applied to ET in 1e55652 .
Closed by: Roland Haas·2015-05-13
Applied to ET in 1e55652 .
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.