Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] afah_v1_0.tar.gz(42745 Kbytes)
Manuscript Title: A resistive magnetohydrodynamics solver using modern C++ and the Boost library.
Authors: Lukas Einkemmer
Program title: cppmhd
Catalogue identifier: AFAH_v1_0
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 206(2016)69
Programming language: C++03.
Computer: PC, HPC systems.
Operating system: POSIX compatible (extensively tested on various Linux systems). In fact only the timing class requires POSIX routines; all other parts of the program can be run on any system where a C++ compiler, Boost, CVODE, and an implementation of BLAS is available.
RAM: Hundredths of Kilobytes to Gigabytes (depending on the problem size)
Keywords: Magnetohydrodynamics, Templates, Boost, C++.
PACS: 52.30.Cv, 02.70.Bf.
Classification: 19.10, 4.3.

External routines: Boost, CVODE, either a BLAS library or Intel MKL

Nature of problem:
An approximate solution to the equations of resistive magnetohydrodynamics for a given initial value and given boundary conditions is computed.

Solution method:
The discretization is performed using a finite difference approximation in space and the CVODE library in time (which employs a scheme based on the backward differentiation formulas).

We consider the 2.5 dimensional case; that is, the magnetic field and the velocity field are three dimensional but all quantities depend only on x and y (but not z).

Unusual features:
We provide an implementation in C++ using the boost library that combines high level techniques (which greatly increases code maintainability and extensibility) with performance that is comparable to Fortran implementations.

Running time:
From seconds to weeks (depending on the problem size).