# The Python Radial Basis Function Toolbox

The Python Radial Basis Function Toolbox (RBFT) is software for implementing RBF interpolation methods and RBF methods for the numerical solution of PDEs on scattered centers located in complexly shaped domains.  The PRBFT is under constant development as it is heavily used in RBF research projects.

The two earlier versions of the toolbox, versions 1.0 and 1.1, were programmed in Matlab.  For a multitude of reasons Matlab is no longer used.  The Matlab versions will remain available for download and may see minor bug fixes and improvements but will not be developed further.  All future development will be in the Python version.

Comments, questions, bug reports, code requests, etc. can be sent to sarra@marshall.edu

### Functionality

The functionality of the toolbox is organized via object oriented programming into several classes.

Classes and modules:

• rbfX - basic RBF method functionality and defines methods that all RBF classes must implement
• gax - Gaussian RBF
• iqx - Inverse Quadratic RBF
• imqx - inverse multiquadric RBF class (new in version 1.1)
• rbfCenters - center locations
• rbfCentro - reduced flop count and storage algorithms for RBF methods in symmetric domains.
• Functions - test functions and derivatives.
• rbfRational - (new in version 1.1) a rational RBF method
• rbfMisc - (new in version 1.1) miscellaneous functions used in examples such as a 4th order Runge-Kutta method, eigenvalues of differentiation matrices, etc.
• rbfLocal - (new in version 1.2) - local RBF method
• rbfPU - (new in version 1.2) - two versions of partition of unity RBF methods
• AnimatePlot - module for animating the solutions of time-dependent PDEs
• rbfc - (new in version 1.2) parent class for compactly supported RBFs
• W32 - Wendland functions that are SPD in up to 3 space dimensions and in C4
• W33 - Wendland functions that are SPD in up to 3 space dimensions and in C6

Scripts: The toolbox comes with a collection of scripts that demonstrate its usage, benchmark its performance, and verify that its algorithms produce the correct results.  The scripts are located in the following folders.

• \examples
• \tests
• \benchmarks
• \papers

### Future plans

• add Mercer's method to the GA class
• expansion of the rbfCenters class
• improve documentation
• expand the number and variety of example scripts
• parallel implementation of local methods via openCL
• add option to augment the RBF interpolant with polynomials
• add extended precision to the Python version

new in version 1.2:
• artifical viscosity methods for the stabilization of time-dependent PDE problems
• local RBF method
• partition of unity (PU) RBF method
• a new partition of unity RBF method which is easier to implement than is the standard PU method
• new shape parameter selection method based on the RBF system matrix being numerical symmetric positive definite
• added a new quasi-random center algorithm which has a lower-discrepancy than methods such as Halton and Hammersly points that are currently commonly used
• added a module to assist in the animation of the solution of time-dependent PDEs

### Next PRBFT release

The next PRBFT release will be version 1.2.1 which is planned for November 2019.  The release will include improved docuemention using Sphynx, an increase in the number of example scripts, and any bug fixes from the initial Python release (version 1.2) of the toolbox.

### PRBFT References

Local and partition of unity method that are new in the PRBFT are described in:
• The Python Radial Basis Function Toolbox: local methods and their implementation.  Submitted to a special issue of Computers and Mathematics with Applications on open source Mathematical software for the numerical solution of PDEs, September 2019.

### Citing the PRBFT

If the PRBFT has been significant to a project that leads to an academic publication, please acknowledge that fact by citing the project.  The BibTex entry for the paper is

@article{Sarra2019,
author = {S. A. Sarra},
title = {The Python Radial Basis Function Toolbox: local methods and their implementation},
journal = {submitted to Computers and Mathematics with Applications, September 2019}
}

or in plain text:

S. A. Sarra.  The Python Radial Basis Function Toolbox: local methods and their implementation.  Submitted to Computers and Mathematics with Applications, 2019.

Thank you!

# Older Matlab version

The Matlab version uses the Multiprecision Computing Toolbox to seamlessly implement extended precision floating point arithmetic in all RBFT routines.

### MRBFT References

The MRBFT is described in the manuscript

All the numerical results in the following manuscript were produced with the MRBFT (in particular the rbfCentro class was used)
The double and extended precision "standard basis" RBF results in the following used the MRBFT

The rbfRational class that is new in version 1.1 was used in

### Citing the MRBFT

The academic reference for the MRBFT is this paper.  The BibTex entry for the paper is

@article{Sarra2017,
doi = {10.5334/jors.131},
year  = {2017},
month = {March},
volume = {5},
author = {S. A. Sarra},
title = {The {M}atlab Radial Basis Function Toolbox},
journal = {Journal of Open Research Software}
}

or in plain text:

S. A. Sarra.  The Matlab Radial Basis Function Toolbox.  Journal of Open Research Software, vol. 5, 2017.