All Projects → fbpic → Fbpic

fbpic / Fbpic

Licence: other
Spectral, quasi-3D Particle-In-Cell code, for CPU and GPU

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Fbpic

Picongpu
Particle-in-Cell Simulations for the Exascale Era ✨
Stars: ✭ 452 (+307.21%)
Mutual labels:  plasma, physics-simulation, gpu, laser
Chimera
Fourier-Bessel Particle-In-Cell code
Stars: ✭ 20 (-81.98%)
Mutual labels:  plasma, physics-simulation
Kmeans pytorch
kmeans using PyTorch
Stars: ✭ 98 (-11.71%)
Mutual labels:  gpu
Pytorch
Tensors and Dynamic neural networks in Python with strong GPU acceleration
Stars: ✭ 52,811 (+47477.48%)
Mutual labels:  gpu
Com.nerdyweekly.animated
Animated GIF wallpaper for KDE Plasma 5
Stars: ✭ 105 (-5.41%)
Mutual labels:  plasma
Deepnet
Deep.Net machine learning framework for F#
Stars: ✭ 99 (-10.81%)
Mutual labels:  gpu
Keras Multiple Process Prediction
A Simply Example to show how to use Keras model in multiple processes to do the prediction
Stars: ✭ 107 (-3.6%)
Mutual labels:  gpu
Nyuziprocessor
GPGPU microprocessor architecture
Stars: ✭ 1,351 (+1117.12%)
Mutual labels:  gpu
Futhark
💥💻💥 A data-parallel functional programming language
Stars: ✭ 1,641 (+1378.38%)
Mutual labels:  gpu
Tensorflow Gpu Macosx
Unoffcial NVIDIA CUDA GPU support version of Google Tensorflow for MAC OSX
Stars: ✭ 103 (-7.21%)
Mutual labels:  gpu
Phenomenon
⚡️ A fast 2kB low-level WebGL API.
Stars: ✭ 1,551 (+1297.3%)
Mutual labels:  gpu
Awesome Kde
A curated list of awesome apps, extensions, modules, themes and tools for the KDE Desktop Environment.
Stars: ✭ 101 (-9.01%)
Mutual labels:  plasma
Neural Style Docker
A dockerized version of neural style transfer algorithms
Stars: ✭ 100 (-9.91%)
Mutual labels:  gpu
Nvapiwrapper
NvAPIWrapper is a .Net wrapper for NVIDIA public API, capable of managing all aspects of a display setup using NVIDIA GPUs
Stars: ✭ 105 (-5.41%)
Mutual labels:  gpu
Molly.jl
Molecular simulation in Julia
Stars: ✭ 99 (-10.81%)
Mutual labels:  physics-simulation
Rife Ncnn Vulkan
RIFE, Real-Time Intermediate Flow Estimation for Video Frame Interpolation implemented with ncnn library
Stars: ✭ 108 (-2.7%)
Mutual labels:  gpu
Emu
The write-once-run-anywhere GPGPU library for Rust
Stars: ✭ 1,350 (+1116.22%)
Mutual labels:  gpu
Pytorch gbw lm
PyTorch Language Model for 1-Billion Word (LM1B / GBW) Dataset
Stars: ✭ 101 (-9.01%)
Mutual labels:  gpu
Nvidia p106
NVIDIA P106 GPUs
Stars: ✭ 106 (-4.5%)
Mutual labels:  gpu
Blazingsql
BlazingSQL is a lightweight, GPU accelerated, SQL engine for Python. Built on RAPIDS cuDF.
Stars: ✭ 1,652 (+1388.29%)
Mutual labels:  gpu

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

Build Status main 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 cudatoolkit and cupy -- e.g. using CUDA version 10.0.
conda install cudatoolkit=10.0
pip install cupy-cuda100

(In the above command, you should choose a CUDA version that is compatible with your GPU driver ; see this table for more info.)

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

Research & 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), Laurids Jeppe (CFEL), Igor Andriyash (Laboratoire d’Optique Appliquée), Omri Seemann (Weizmann Institute), Daniel Seipt (University of Michigan) and Samuel Yoffe (University of Strathclyde).

FBPIC's algorithms are documented in following scientific publications:

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 at least FBPIC's original paper. If your project uses the more advanced algorithms, please consider citing the respective publications in addition.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].