#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.
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by hinder):
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?
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by dradice@…):
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).
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by dradice@…):
I forgot to include the link to the actual pull request on bitbucket:
https://bitbucket.org/cactuscode/cactusnumerical/pull- request/3/localinterp2-c-drop-in-replacement-for
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by rhaas):
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 .
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by dradice@…):
I updated the COPYRIGHT file
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by hinder):
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?
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by rhaas):
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 LPGL so it is likely best to use the same license.
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by rhaas):
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.
#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 Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by hinder):
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?
#1750: [Pull request: CactusNumerical/LocalInterp2] C++ drop-in replacement for LocalInterp ------------------------------------+--------------------------------------- Reporter: dradice@… | Owner: Type: enhancement | Status: review Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: ------------------------------------+--------------------------------------- Changes (by rhaas):
* status: new => review
#1750: [Pull request: CactusNumerical/LocalInterp2] C++ drop-in replacement for LocalInterp ------------------------------------+--------------------------------------- Reporter: dradice@… | Owner: Type: enhancement | Status: reviewed_ok Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: ------------------------------------+--------------------------------------- Changes (by rhaas):
* status: review => reviewed_ok
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.
#1750: [Pull request: CactusNumerical/LocalInterp2] C++ drop-in replacement for LocalInterp ------------------------------------+--------------------------------------- Reporter: dradice@… | Owner: Type: enhancement | Status: closed Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: fixed | Keywords: ------------------------------------+--------------------------------------- Changes (by rhaas):
* status: reviewed_ok => closed * resolution: => fixed
Comment:
I added LocalInterp2 to CactusNumerical2 in 3ea09c587280dba1eeb50efbc0711f68eedd36c8 of cactusnumerical. I added the thorn to einsteintoolkit.th inf9a7c3713bbfecf2fa964c8a2ca3e24e2e9c99db of manifest.
trac@lists.einsteintoolkit.org