https://github.com/struphy-hub/struphy
A Python package for plasma physics PDEs.
https://github.com/struphy-hub/struphy
fusion hpc plasma-physics python simulations
Last synced: 2 months ago
JSON representation
A Python package for plasma physics PDEs.
- Host: GitHub
- URL: https://github.com/struphy-hub/struphy
- Owner: struphy-hub
- License: mit
- Created: 2025-10-23T11:26:40.000Z (8 months ago)
- Default Branch: devel
- Last Pushed: 2026-04-23T11:56:34.000Z (2 months ago)
- Last Synced: 2026-04-23T13:32:39.030Z (2 months ago)
- Topics: fusion, hpc, plasma-physics, python, simulations
- Language: Python
- Homepage: https://struphy-hub.github.io/struphy/
- Size: 273 MB
- Stars: 32
- Watchers: 0
- Forks: 0
- Open Issues: 34
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README

# Welcome!
**This is a Python package for solving partial differential equations (PDEs) mainly - but not exclusively - for plasma physics.**
**STRUPHY** stands for **STRU**cture-**P**reserving **HY**brid code (or **STRU**cture-preserving **PHY**sics code). The package provides off-the-shelf models for plasma physics problems, such as
- Maxwell’s equations
- Magneto-hydrodynamics (MHD)
- Vlasov-Poisson and Vlasov-Maxwell kinetic models
- Drift-kinetic models for strongly magnetized plasma
- MHD-kinetic hybrid models
All models can be run on multiple cores through MPI (distributed memory) and OpenMP (shared memory). The compute-intensive parts of the code are translated and compiled (“transpiled”) using [pyccel](https://github.com/pyccel/pyccel), giving you the speed of Fortran or C while working within the familiar Python environment.
The code is freely available under an [MIT license](https://github.com/struphy-hub/struphy/blob/devel/LICENSE) - Copyright (c) 2019-2026, Struphy developers, Max Planck Institute for Plasma Physics.

## Tutorials
Get familiar with Struphy right away on [mybinder](https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main) - no installation needed.
## Quick install
Quick install on your computer (using a virtual environment):
python -m venv struphy_env
source struphy_env/bin/activate
pip install -U pip
pip install -U struphy
struphy compile
In case you face troubles with install/compile:
1. check the [prerequisites](https://struphy-hub.github.io/struphy/sections/install.html#requirements)
2. visit [trouble shooting](https://struphy-hub.github.io/struphy/sections/install.html#trouble-shooting)
## Python API
Try out the Python API in a Jupyter notebook or any Python environment. For example, you can create a simulation object and show the domain and equilibrium magnetic field of the linear MHD model via
``` python
from struphy import (
Simulation,
domains,
equils,
)
from struphy.models import LinearMHD
model = LinearMHD()
domain = domains.DESCunit()
equil = equils.DESCequilibrium(use_nfp=False)
sim = Simulation(
model=model,
domain=domain,
equil=equil,
)
sim.show_domain(scalars="absB0", window_size = (850, 250), zoom_factor=2.0)
```

This will show the domain and equilibrium magnetic field of the linear MHD model. You can find more examples in the [documentation](https://struphy-hub.github.io/struphy/index.html).
## Quick run
As an example, let’s say we want to solve Maxwell’s equations. We can use the CLI and generate a default launch file via
struphy params Maxwell
Hit yes when prompted - this will create the file `params_Maxwell.py` in your current working directory (cwd). You can open the file and - if you feel like it already - change some parameters, then run
python params_Maxwell.py
The default output is in `sim_1/` in your cwd. You can change the output path via the class `EnvironmentOptions` in the parameter file.
Parallel simulations are run for example with
pip install -U mpi4py
mpirun -n 4 python params_Maxwell.py
You can also put the run command in a batch script.
## Docker
If you want to get started right away without installing anything, you can use the [Docker image](https://hub.docker.com/r/spossann/struphy) - just pull and run:
docker pull spossann/struphy:main
docker run -it --rm spossann/struphy:main
ls struphy_*
This will show three available Struphy environments, which you can activate for example via
source struphy_fortran_/env_fortran_/bin/activate
There is also a [Docker image with just the prerequisites](https://hub.docker.com/r/spossann/ubuntu-for-struphy) (on Ubuntu), so you can install and compile Struphy on top of it yourself:
docker pull spossann/ubuntu-for-struphy:main
docker run -it --rm spossann/ubuntu-for-struphy:main
## Documentation
The doc is on [Github pages](https://struphy-hub.github.io/struphy/index.html), we recommend in particular to visit:
- [Install](https://struphy-hub.github.io/struphy/sections/install.html)
- [Userguide](https://struphy-hub.github.io/struphy/sections/userguide.html)
- [Available models](https://struphy-hub.github.io/struphy/sections/models.html)
- [Numerical methods](https://struphy-hub.github.io/struphy/sections/numerics.html)
## Get in touch
- [Issues](https://github.com/struphy-hub/struphy/issues)
- [Discussions](https://github.com/struphy-hub/struphy/discussions)
- [@spossann](https://github.com/spossann) [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de) (Maintainer)
- [@max-models](https://github.com/max-models) [max.lindqvist@ipp.mpg.de](mailto:Max.Lindqvist@ipp.mpg.de) (Maintainer)
- [LinkedIn profile](https://www.linkedin.com/company/struphy/)
## Citing Struphy
- S. Possanner, F. Holderied, Y. Li, B.-K. Na, D. Bell, S. Hadjout and Y. Güçlü, [**High-Order Structure-Preserving Algorithms for Plasma Hybrid Models**](https://link.springer.com/chapter/10.1007/978-3-031-38299-4_28), International Conference on Geometric Science of Information 2023, 263-271, Springer Nature Switzerland.