A modern resistive magnetohydrodynamics solver using C++ and the Boost library
Lukas Einkemmer

TL;DR
This paper presents a C++ resistive magnetohydrodynamics solver that emphasizes modular design, enabling flexible boundary condition handling and achieving high performance comparable to Fortran, while maintaining code readability and extensibility.
Contribution
The paper introduces a modular C++ framework for resistive MHD simulation that separates numerical methods from physical models and boundary management, enhancing flexibility and performance.
Findings
Performance comparable to Fortran achieved
Flexible boundary condition handling implemented
Code readability and extensibility maintained
Abstract
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.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
