GitPedia

BOUT dev

BOUT++: Plasma fluid finite-difference simulation code in curvilinear coordinate systems

From boutproject·Updated June 26, 2026·View on GitHub·

BOUT++ is a framework for writing fluid and plasma simulations in curvilinear geometry. It is intended to be quite modular, with a variety of numerical methods and time-integration solvers available. BOUT++ is primarily designed and tested with reduced plasma fluid models in mind, but it can evolve any number of equations, with equations appearing in a readable form. The project is written primarily in C++, distributed under the GNU Lesser General Public License v3.0 license, first published in 2013. Key topics include: c-plus-plus, computational-physics, numerical-modelling, pde, physics.

Latest release: v5.2.0
October 10, 2025View Changelog →

BOUT++

<!---Build nice shields at shields.io-->

Build Status
License
py3comp
DOI

.______     ______    __    __  .___________.
|   _  \   /  __  \  |  |  |  | |           |  _     _
|  |_)  | |  |  |  | |  |  |  | `---|  |----`_| |_ _| |_
|   _  <  |  |  |  | |  |  |  |     |  |    |_   _|_   _|
|  |_)  | |  `--'  | |  `--'  |     |  |      |_|   |_|
|______/   \______/   \______/      |__|

BOUT++ is a framework for writing fluid and plasma simulations in
curvilinear geometry. It is intended to be quite modular, with a
variety of numerical methods and time-integration solvers
available. BOUT++ is primarily designed and tested with reduced plasma
fluid models in mind, but it can evolve any number of equations, with
equations appearing in a readable form.

For example, the following set of equations for magnetohydrodynamics
(MHD):

ddt_rho

ddt_p

ddt_v

ddt_B

can be written simply as:

cpp
ddt(rho) = -V_dot_Grad(v, rho) - rho*Div(v); ddt(p) = -V_dot_Grad(v, p) - g*p*Div(v); ddt(v) = -V_dot_Grad(v, v) + (cross(Curl(B),B) - Grad(p))/rho; ddt(B) = Curl(cross(v,B));

The full code for this example can be found in the orszag-tang
example
.

Jointly developed by University of York (UK), LLNL, CCFE, DCU, DTU,
and other international partners. See the Git logs for author details.

Homepage found at http://boutproject.github.io/

Table of Contents

Requirements

BOUT++ needs the following:

  • A C++20 compiler
  • MPI
  • NetCDF

BOUT++ has the following optional dependencies:

Usage and installation

Please see the users manual.

Terms of use

BOUT++ is released under the LGPL, but since BOUT++ is a
scientific code we also ask that you show professional courtesy
when using this code:

  1. Since you are benefiting from work on BOUT++, we ask that you
    submit any improvements you make to the code to us by submitting a
    pull request to this repository
  2. If you use BOUT++ results in a paper or professional publication,
    we ask that you send your results to one of the BOUT++ authors
    first so that we can check them. It is understood that in most cases
    if one or more of the BOUT++ team are involved in preparing results
    then they should appear as co-authors.
  3. If you use BOUT++ in your work, please help ensure that all the
    authors get the credit they deserve by citing BOUT++, preferably
    using the DOI of the version you used. See the file
    CITATION.cff for details. In addition, you may also
    cite either of the two main papers: B. Dudson et al,
    Comp. Phys. Comm. 2009, and B. Dudson et al, Phys. of Plasmas 2016

You can convert the CITATION.cff file into a Bibtex file as follows:

pip3 install --user cffconvert
cffconvert -if CITATION.cff -f bibtex -of CITATION.bib

Contributing

See CONTRIBUTING.md and the manual page

License

Copyright 2010-2026 BOUT++ contributors

BOUT++ is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

BOUT++ 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 Lesser General Public License for more details.

A copy of the LGPL license is in LICENSE. Since this is based
on (and refers to) the GPL, this is included in LICENSE.GPL.

BOUT++ links by default with some GPL licensed libraries. Thus if you
compile BOUT++ with any of them, BOUT++ will automatically be licensed
as GPL. Thus if you want to use BOUT++ with GPL non-compatible code,
make sure to compile without GPLed code.

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from boutproject/BOUT-dev via the GitHub API.Last fetched: 6/27/2026