Hermes-3 getting started
Hermes-3 is a plasma simulation model built on BOUT++, developed mainly for simulating the edge of magnetically confined plasmas such as tokamaks. The source code is available on Github. The main aim of this model is multi-species simulation of fusion reactors, where the plasma will contain a mixture of deuterium, tritium, helium and other species.
Hermes-3 is multi-fidelity, allowing the simulation of 1D, 2D and 3D tokamak plasmas both in steady-state and unsteady / turbulent regimes.
It is designed to be modular and organised into reusable components, which can be tested individually and then configured at run-time.
Please see below for other useful Hermes-3 resources, there is also a Hermes-3 Zulip channel, a slack-like service where significant amounts of Hermes-3 support can be accessed. Please contact John.Lloyd.baker@york.ac.uk if you would like to be added to this.
Examples of Hermes-3 literature
B.Dudson, M.Kryjak, H.Muhammed, P.Hill, J,Omotani Hermes-3: Multi-component plasma simulations with BOUT++ Comp. Phys. Comm. 2023 108991. doi: 10.1016/j.cpc.2023.108991. Preprint: arXiv.2303.12131.
G.K. Holt, A. Keats, S. Pamela, M. Kryjak, A. Agnello, N.C. Amorisco, B.D. Dudson and M. Smyrnakis Tokamak divertor plasma emulation with machine learning 2024 Nucl. Fusion 64 086009 doi: 10.1088/1741-4326/ad4f9e
Thomas Body, Thomas Eich, Adam Kuang, Tom Looby, Mike Kryjak, Ben Dudson, Matthew Reinke Detachment scalings derived from 1D scrape-off-layer simulations Nucl. Mat. Energy 2024 101819 doi: 10.1016/j.nme.2024.101819
Huayi Chang, Ben Dudson, Jizhong Sun, Mike Kryjak, Yang Ye, Mao Li, Weikang Wang Hermes-3 simulation of the low-n X-point mode driven by impurity in tokamak edge plasmas Nucl. Mat. Energy 2025 101913 doi: 10.1016/j.nme.2025.101913
John Lloyd Baker, Mike Kryjak, Michael Wigram, Stefan Mijin, Dominic Power, Benjamin Dudson and Christopher Ridgers, The impact of non-local fluid models on 1D impurity driven detachment in an ITER-like SOL, Plasma Phys. Control. Fusion 2026 doi 10.1088/1361-6587/ae56b4
Documentation and analysis tools
Hermes-3 ReadTheDocs (The main Hermes-3 documentation, It really is worth getting familiar with this as it will give you a users understanding of how the code works in a relatively succinct way)
Hermes-3 xhermes (Hermes-3 python3 analysis library based on Xarray)
Hermes-3 SDTOOLS (A large number of additional tools for Hermes-3 analysis can be found here in Mike Kryjak's repo, basically treat it as an extension to xhermes)
Getting started
I appreciate that's quite a lot of different links, but I'll give you a brief run down of how I would get started, the Hermes-3 ReadTheDocs also has detailed instructions on how to run some example cases. The approach I would take would be:
-
Build Hermes-3 on the platform of your choosing (now this should be straightforward if you're operating on a linux device using SPACK, the instructions for this are found here).
-
Once this is done, have a go at running the 1D example found here. How to run this can be found here. after this you may wish to move onto 2D and 3D examples depending on your use case.
-
Analyse the results, an example of how to use the Hermes-3 python analysis library (xhermes) can be found here.
Contributed by: John Lloyd Baker