A modern resistive magnetohydrodynamics solver using C++ and the Boost library
For computational scientists in plasma physics, this work offers a modern, maintainable alternative to traditional Fortran solvers without sacrificing performance.
The paper presents a C++ solver for resistive magnetohydrodynamics that achieves performance comparable to Fortran while improving code readability and extensibility through modular design using the Boost library.
In this paper we describe the implementation of our C++ resistive magnetohydrodynamics solver. The framework developed facilitates the separation of the code implementing the specific numerical method and the physical model, on the one hand, from the handling of boundary conditions and the management of the computational domain, on the other hand. In particular, this will allow us to use finite difference stencils which are only defined in the interior of the domain (the boundary conditions are handled automatically). We will discuss this and other design considerations and their impact on performance in some detail. In addition, we provide a documentation of the code developed and demonstrate that a performance comparable to Fortran can be achieved, while still maintaining a maximum of code readability and extensibility.