Hermes-3 is a multifluid plasma simulation model for transport and turbulence in the edge of magnetically confined plasmas, such as tokamaks. It is built on the BOUT++ framework, and uses a system of reusable components to build models at runtime based on input configuration, in 1D, 2D or 3D curvlinear coordinates. The manual is here on Readthedocs.
Note Under development, research code, may change without notice.
Hermes-3 is released under the GPL-3 license. See LICENSE and NOTICE for details. If you are using Hermes-3, please cite the relevant papers.
All new contributions must be made under the GPLv3 license.
LLNL-CODE-845139
Copyright Hermes-3 contributors 2017-2023
email: dudson2@llnl.gov
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Only CMake is supported for building Hermes-3 and running the tests. During configuration BOUT++ will be automatically downloaded as a submodule, together with some dependencies. NetCDF and FFTW are assumed to be installed already; optional dependencies include SUNDIALS and PETSc. The recommended way to build Hermes-3 links to the SUNDIALS library.
-
Configure with cmake, downloading and linking to SUNDIALS:
$ cmake . -B build -DBOUT_DOWNLOAD_SUNDIALS=ON
-
Build, compiling Hermes-3 and all dependencies:
$ cmake --build build
-
Run the unit and integrated tests to check that everything is working:
$ cd build $ ctest
Note that the integrated tests require MPI, and so may not run on the head nodes of many computing clusters.
The CMake configuration can be customised: See the BOUT++
documentation
for examples of using cmake
arguments, or edit the compile options
interactively before building:
$ ccmake . -B build
If you have already installed BOUT++ and want to use that rather than
configure and build BOUT++ again, set HERMES_BUILD_BOUT
to OFF
and pass
CMake the path to the BOUT++ build
directory e.g.
$ cmake . -B build -DHERMES_BUILD_BOUT=OFF -DCMAKE_PREFIX_PATH=$HOME/BOUT-dev/build
Note that Hermes-3 currently requires a specific version of BOUT++: https://github.com/boutproject/BOUT-dev/commit/7152948fbde505f6708d5ca4a9c21e5828d1e0a1
There are example inputs under the examples/ subdirectory. A simple example is a 2D (drift plane) simulation of a plasma blob/filament, similar to the BOUT++ blob2d example:
./hermes-3 -d examples/blob2d
See the examples for more complicated cases.