[Pull request: CactusNumerical/LocalInterp2] C++ drop-in replacement for LocalInterp

Issue #1750 closed
David Radice created an issue

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.

Keyword:

Comments (13)

  1. Ian Hinder
    • removed comment

    I have not used LocalInterp; I always use AEILocalInterp. How does LocalInterp2 compare with/relate to AEILocalInterp? Are they alternatives, or do they fulfil different roles?

    There is interpolation code in both Carpet and Llama/Interpolate2. Would it make sense to try to unify some of this, to avoid duplication?

  2. David Radice reporter
    • removed comment

    LocalInterp2 does not have all of the functionalities of AEILocalInterp, however it supports symmetric interpolation operators (which would be too complex to implement within AEILocalInterp).

  3. Ian Hinder
    • removed comment

    Why LGPL? Other Cactus thorns are under the Cactus licence, which is a modified GPL. e.g. CactusNumerical/MoL/COPYRIGHT starts:

    This thorn is (c) Copyright the authors listed in the sources files. This
    thorn is distributed under the GNU GPL with the specific exception that
    the GNU GPL does not migrate to code linking to or using infrastructure
    from this thorn.
    
    - The Cactus Team <cactusmaint@cactuscode.org>
    
    **************************************************************************
    
                        GNU GENERAL PUBLIC LICENSE
                           Version 2, June 1991
    ...
    

    I thought that to be part of Cactus, a thorn needs to be distributed under this licence. Maybe there is a web page somewhere with the licencing requirements for thorns which are part of Cactus?

  4. Roland Haas
    • removed comment

    The README file of LocalInterp2 says (always has):

    Cactus Code Thorn LocalInterp
    Author(s)    : David Radice
                   Thomas Radke
                   Jonathan Thornburg
                   Erik Schnetter
    Maintainer(s): Cactus team
    Licence      : LGPL
    

    So independent of what licenses are desired for CactusXXX thorns, the file included was the wrong one. LocalInterp2 contains lots of code from LocalInterp which was also LGPL so it is likely best to use the same license.

  5. Roland Haas
    • removed comment

    Although, closer inspection shows that the COPYRIGHT file (from 2004) in LocalInterp is the Cactus one (that Ian cites) and that `License: LGPL}} was added later (in 2009). Meaning the license information in README was likely wrong since 2009.

  6. Ian Hinder
    • removed comment

    From a private email discussion amongst a few of us back in March 2014, Erik said that the flesh and the Cactus thorns are LGPL, and this was changed from the "Cactus GPL+linking exception" to clarify the situation. Maybe this change did not get properly implemented in all the COPYRIGHT files.

    The source files do not contain individual copyright notices (https://www.gnu.org/licenses/gpl-howto.html).

    Many Cactus READMEs claim LGPL, which results from a batch addition of the licence by Frank Löffler on 27-Jan-2009.

    arrangements $ grep -ih "Licence" Cactus*/*/README|sort -u
    Licence      : GPL
    Licence      : GPLv2+
    Licence      : LGPL
    

    There are 88 READMEs claiming a licence. 9 of them are GPL, 78 of them are LGPL, and 1 of them is GPLv2+.

    Erik referred in his email to a "current agreement amongst the maintainers" regarding the licencing. Does anyone know if this is written down somewhere, and if not, should we do so?

  7. Roland Haas
    • changed status to open
    • removed comment

    Since it is an independent thorn, comes with documentation and a test case, I will include it unless there are objections before Monday April 6th 2015 CET.

  8. Log in to comment