Implementing the Levin method to calculate integrals over product of up to three Bessel functions
Project description
This library implements Levin's method for integrals containing products of up to three spherical or cylindrical Bessel functions.
Installation
With pip
The library is available via PyPi installation, so you can just install it using
pip install pylevin
which installs the levin package and you are ready to go. Note that you need certain packages which you have to install via conda-forge, in particular you will need the GSL, BOOST and GXX (on some linux servers) to be installed. You can grab them all via
conda install -c conda-forge gsl
conda install -c conda-forge gxx_linux-64
conda install conda-forge::boost
if they are not installed already.
From source
Alternatively you first clone the directory via:
git clone git@github.com:rreischke/levin_bessel.git
Then navigate to the cloned directory
cd levin_bessel
conda env create -f conda_env.yaml
conda activate levin_env
pip install .
On some Linux servers you will have to install gxx_linux-64 by hand and the installation will not work. This usually shows the following error message in the terminal:
gcc: fatal error: cannot execute 'cc1plus': execvp: No such file or directory
If this is the case just install it by typing
conda install -c conda-forge gxx_linux-64
and redo the pip installation.
Testing the installation
You can run ``pytest` to test the installation.
Tutorial: How to use the library
There is a detailed documentation of the code on levin-bessel.readthedocs.io. For a tutorial, there is a detailed python notebook in the tutorial directory
Contributing
If you want other types of oscillatory integrals implemented in pylevin, I am very happy to help navigating the code. Note that these integrals need to satisfy some kind recursion relation for their derivatives (Eq. 9 in the arxiv version of the paper). This relation can technically be numerical but requires very stable derivatives.
Reporting issues and support
If you encounter any issue or need help with the code you can either open an issue directly on github, or drop me a mail to reischke@posteo.net.
Citing pylevin
If you use this code please cite the implementation described in 2502.12142. You can find references to the original method therein.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pylevin-1.1.0.tar.gz.
File metadata
- Download URL: pylevin-1.1.0.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06fc29d787b3e0e4df0f8ecfdec9d18e77c5ebb66f0f0b4bb23302ac5b201530
|
|
| MD5 |
691aefa151e78155095aa130d44e4ca7
|
|
| BLAKE2b-256 |
9b2391fe4d44d271b2f79e3016dfadffcda20b6539a36d6ae351414ccac735e3
|