Skip to main content

Spectral, quasi-3D Particle-In-Cell for CPU and GPU

Project description

Overview

FBPIC is a `Particle-In-Cell (PIC) code <https://en.wikipedia.org/wiki/Particle-in-cell>`__ 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 harware:
FBPIC is written entirely in Python, but uses `Numba <http://numba.pydata.org/>`__ Just-In-Time compiler for high performance. In addition, the code was designed to be run either on CPU or GPU. For large simulations, running the code on GPU can be up to 40 times faster than on CPU.

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 with a single line:

    conda install -c conda-forge numba matplotlib scipy h5py mpi4py pyfftw
  • Download and install FBPIC:

    pip install fbpic
  • Optional: in order to run on GPU, install the additional package accelerate:

    conda install accelerate

    (The accelerate package is not free, but there is a 30-day free trial period, which starts when the above command is entered. For further use beyond 30 days, one option is to obtain an academic license, which is also free. To do so, please visit this link.)

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, Kevin Peters and Irene Dornmair (CFEL).

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).

Project details


Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page