Spectral, quasi-3D Particle-In-Cell for CPU and GPU
Project description
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
Language and harware
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 -c numba 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, 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.