Tl;dr#
Struphy provides easy access to partial differential equations (PDEs) in plasma physics. The package combines performance (for HPC), flexibility (models and physics features) and usability (documentation).
Performance in Struphy is achieved using three building blocks:
Heavy computational kernels are pre-compiled using the Python accelerator pyccel, which on average shows better performance than Pythran or Numba.
Flexibility comes through the possibility of applying different Models to a plasma physics problem. Each model can be run on different Geometry and can load a variety of Fluid backgrounds, Kinetic backgrounds and Perturbations.
Usability is guaranteed by Struphy’s intuitive console interface (see for example Quickstart). Moreover, an extensive, maintained documentation is provided. In addition, you can learn Struphy through a series of Jupyter notebook Tutorials.
Struphy is an object-oriented code. The concept of inheritance is heavily used in its basic design; it enables the streamlined addition of new models/features to Struphy. For details, please check
Model discretization is based on finite element exterior calculus (FEEC) for the fluid/field quantities and particle-in-cell (PIC) methods for the kinetic species. An overview of these methods is given in Numerics. For the FEEC spaces Struphy uses the open source library
Psydac (FEEC spaces)
You can visit the Struphy examples to get some impressions of Struphy simulation results.