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 (Python).
Performance in Struphy is achieved from three building blocks:
Heavy compute kernels are transpiled using the Python accelerator pyccel. You will thus enjoy the speed of Fortran or C while working in the familiar Python environment.
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, as well as other relevant physial inputs (such as initial conditions).
Usability is guaranteed by Python. Struphy code can be handled in the familiar object-oriented way of Python.
Struphy is modular and allows you to add your own model, benefitting from the abstraction provided by the Struphy classes. Check out Adding a new PDE model to learn more.
At present, abstractions for the following numerical methods are available:
Finite Element Exterior Calculus (FEEC), through Psydac
Particle-In-Cell (PIC)
Smoothed-Particle Hydrodynamics (SPH)
See Numerics for more details on the numerical methods.
If you are passionate about some of the above topics, get in touch!