Skip to content

Interpolate and differentiate data in arbitrary dimensions efficiently in a concentric manner. C++

License

Notifications You must be signed in to change notification settings

EMMA-Group/ConcentricInterpolation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

------------------------------
Content of this file
------------------------------
1) What's this
2) How to use
3) Code style and paradigm
4) Bug reporting
6) License information
------------------------------

1)     WHAT'S THIS
==============================
The Concentric Interpolation method efficiently interpolates multi-dimensional
data on multi-dimensional spaces. It is based on a concentric placement of the
function samples, i.e. centered around the origin and placed along
equidistributed directions at certain radii. This structure is exploited by
means of a two-staged interpolation: first, a radial interpolation is performed,
i.e. a one-dimensional interpolation along each direction by means of piecewise
defined polynomial. Second, a tangential interpolation is performed using
classical spherical basis functions. For more information, see the associated
research article:

Authors: Oliver Kunc and Felix Fritzen
Title  : Generation of energy-minimizing point sets on spheres and their
         application in mesh-free interpolation and differentiation
Journal: Advances in Computational Mathematics
Year   : 2019
Volume : 45
Issue  : 5-6
Pages  : 3021-3056
DOI    : 10.1007/s10444-019-09726-5
URL    : https://doi.org/10.1007/s10444-019-09726-5

2)     HOW TO USE
==============================
2.1)   REQUIREMENTS
==============================
       A C++ compiler (e.g. g++), the GNU make utility, the GNU GSL library as
       well as an implementation of LAPACKE are required. In Debian or Ubuntu
       systems, the command
          "sudo apt install g++ make liblapacke liblapacke-dev libgsl-dev libgsl23 libgslcblas0"
       should suffice.

2.2)   DOCUMENTATION
==============================
       Build command for the documentation:
          "doxygen ConcentricInterpolation.doxy"
       This requires doxygen software which can be installed by running
          "sudo apt install doxygen"
       on Debian or Ubuntu systems. Then, see doxygen output in
          ./doxygen/html/index.html
       or in
          ./doxygen/latex/*.pdf
       See inline comments for further details.

2.3)   COMPILATION and EXAMPLE
==============================
2.3a)  For the LIBRARY, go to the "src" directory and run "make" on a terminal
       (adjust Makefile if required)
2.3b)  For an executable EXAMPLE, change to the "examples" directory. Run "make"
       on a terminal. Then change to "bin" directory, where the binary
       "interpolation demo" is located, and run it.

2.4)   HOW TO CITE
==============================
When referring to this software, please cite the article mentioned above in
Section 1) "WHAT'S THIS".

3)  CODE STYLE AND PARADIGM
==============================
3a) Indentation by 4 spaces, no tabs.
3b) Camel case function names, variable names less strict.
3c) No trailing whitespaces.
3e) Function arguments begin with "a_" in order to strictly separate from local
    identifiers. Local identifiers do not begin with "a_".
3e) Error handling not rigorous yet. Unclear where to go from here, depends on
    yet unknown user requirements.
3f) Working on low-level pointer objects: the user is required to assure that
    memory bounds are respected. Setup functions and destructors take care of
    the basic management, but access to components is unrestricted. Read or
    write access is controlled via the respective Get... or Set... functions.
3g) Const correctness: top-level pointers are not const, all lower levels should
    be const. This is mostly but not 100% consistent atm.
3h) For essential conditional checks in functions, use UTILITY::assert_msg()
3i) If a scope (e.g. body of a loop) consists of only one line, don't use
    braces "{}" but only indentation.

4) BUG REPORTING
==============================
Please report bugs and suggestions to the administrators of the corresponding
github repository:
        https://github.com/EMMA-Group/ConcentricInterpolation
or direcly e-mail
        [email protected]
or
        [email protected]

5) LICENSE INFORMATION
==============================
See file LICENSE

About

Interpolate and differentiate data in arbitrary dimensions efficiently in a concentric manner. C++

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published