Skip to main content

Fourier-Bessel Particle-In-Cell code (FBPIC)

Build Status master Build Status dev pypi version License DOI

Online documentation: http://fbpic.github.io
Support: Join slack

Overview

FBPIC is a Particle-In-Cell (PIC) code for relativistic plasma physics.

It is especially well-suited for physical simulations of laser-wakefield acceleration and plasma-wakefield acceleration, with close-to-cylindrical symmetry.

Algorithm

The distinctive feature of FBPIC is to use a spectral decomposition in cylindrical geometry (Fourier-Bessel decomposition) for the fields. This combines the advantages of spectral 3D PIC codes (high accuracy and stability) and those of finite-difference cylindrical PIC codes (orders-of-magnitude speedup when compared to 3D simulations).
For more details on the algorithm, its advantages and limitations, see the documentation.

Language and hardware

FBPIC is written entirely in Python, but uses Numba Just-In-Time compiler for high performance. In addition, the code can run on CPU (with multi-threading) and on GPU. For large simulations, running the code on GPU can be much faster than on CPU.

Advanced features of laser-plasma acceleration

FBPIC implements several useful features for laser-plasma acceleration, including:

  • Moving window
  • Cylindrical geometry (with azimuthal mode decomposition)
  • Calculation of space-charge fields at the beginning of the simulation
  • Intrinsic mitigation of Numerical Cherenkov Radiation (NCR) from relativistic bunches
  • Field ionization module (ADK model)

In addition, FBPIC supports the boosted-frame technique (which can dramatically speed up simulations), and includes:

  • Utilities to convert input parameters from the lab frame to the boosted frame
  • On-the-fly conversion of simulation results from the boosted frame back to the lab frame
  • Suppression of the Numerical Cherenkov Instability (NCI) using the Galilean technique

Installation

The installation instructions below are for a local computer. For more details, or for instructions specific to a particular HPC cluster, see the documentation.

The recommended installation is through the Anaconda distribution. If Anaconda is not your default Python installation, download and install it from here.

Installation steps:

  • Install the dependencies of FBPIC. This can be done in two lines:
conda install numba scipy h5py mkl
conda install -c conda-forge mpi4py
  • Download and install FBPIC:
pip install fbpic
  • Optional: in order to run on GPU, install the additional package pyculib:
conda install pyculib
  • Optional: in order to run on a CPU which is not an Intel model, you need to install pyfftw, in order to replace the MKL FFT:
conda install -c conda-forge pyfftw

Running simulations

Once installed, FBPIC is available as a Python module on your system.

Therefore, in order to run a physical simulation, you will need a Python script that imports FBPIC's functionalities and use them to setup the simulation. You can find examples of such scripts in the documentation or in this repository, in docs/source/example_input/.

Once your script is ready, the simulation is run simply by typing:

python fbpic_script.py

The code outputs HDF5 files, that comply with the OpenPMD standard, and which can thus be read as such (e.g. by using the openPMD-viewer).

Contributing

We welcome contributions to the code! Please read this page for guidelines on how to contribute.

Attribution

FBPIC was originally developed by Remi Lehe at Berkeley Lab, and Manuel Kirchen at CFEL, Hamburg University. The code also benefitted from the contributions of Soeren Jalas (CFEL), Kevin Peters (CFEL), Irene Dornmair (CFEL) and Igor Andriyash (Weizmann Institute).

If you use FBPIC for your research project: that's great! We are very pleased that the code is useful to you!

If your project even leads to a scientific publication, please consider citing FBPIC's original paper, which can be found here (see this link for the arxiv version).

Metadata

Release files for fbpic 0.9.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fbpic 0.9.5
File Size Uploaded Provenance Actions
fbpic-0.9.5.tar.gz 173.8 kB Without provenance Details for fbpic-0.9.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fbpic 0.9.5
File Interpreter ABI Platform Actions
fbpic-0.9.5-py3-none-any.whl Python 3 none any Details for fbpic-0.9.5-py3-none-any.whl

Total release size: 406.6 kB

Release files / fbpic-0.9.5.tar.gz

Download URL fbpic-0.9.5.tar.gz
Size 173.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8dbc229f4a3206ac4ea919955051d8960b73ea672f1ab2c241dbb51a501ec207
BLAKE2b-256 checksum
How to use checksums
145a81ff84c20952d41883615402e3b75838ac6bedfdd2e0feebdd9d2a8fa825
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

Release files / fbpic-0.9.5-py3-none-any.whl

Download URL fbpic-0.9.5-py3-none-any.whl
Size 232.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
076eae5041b264a2db6aa179cb03c373457bdff481948d04140b71106498e4df
BLAKE2b-256 checksum
How to use checksums
624caf5e92fba885c7e75cd55134661379d7be9c0e8a49a69a763721a186076e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

Security for fbpic 0.9.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.9.5 This release

2 release files No provenance

0.1.0

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page