- removed comment
[Pull request: CactusNumerical/LocalInterp2] C++ drop-in replacement for LocalInterp
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)
-
-
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).
-
reporter - removed comment
I forgot to include the link to the actual pull request on bitbucket:
-
- removed comment
The COPYRIGHT file is the wrong one (GPL but should be LGPL). The LGPL text can be found here https://www.gnu.org/licenses/lgpl-3.0.txt .
-
reporter - removed comment
I updated the COPYRIGHT file
-
- 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?
-
- 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.
-
- 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.
-
- 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?
-
- changed status to open
- removed comment
-
- 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.
-
- changed status to resolved
- removed comment
I added LocalInterp2 to CactusNumerical2 in 3ea09c587280dba1eeb50efbc0711f68eedd36c8 of cactusnumerical. I added the thorn to einsteintoolkit.th inf9a7c3713bbfecf2fa964c8a2ca3e24e2e9c99db of manifest.
-
- edited description
- changed status to closed
- Log in to 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?