I’m very happy to announce the release of a new version of BOUT++, v4.1.0! This is a minor version release, and is backwards-compatible with v4.0.0 so physics models should not need to be changed to work with this version.

There were almost 800 commits, touching approximately 1000 files and 33,000 lines! The following major features were added:

  • A way to cleanly stop simulations either through a stop-file, or via a KILL signal
  • User-defined multiple monitors with different frequencies
  • Four new boundary iterators for the inner and outer boundaries in double null configurations
  • Better handling of 1D/2D Fields
  • Dumping the actual settings used during a simulation to a file
  • Colour output to highlight warnings/errors, along with options to increase/decrease verbosity
  • Configure-time options to enable profiling with Score-P and coverage checking with gcov
  • Removal of various functions deprecated in v4.0.0
  • An overhauled testing framework with unit tests using GoogleTest

This release also represents a major tidy up of the codebase, fixing several hundred warnings, removing unused and unnecessary code, a better adherence to C++11 best practices, and implementing a better, more comprehensive testing suite. For a more comprehensive changelog, please see the changelog.

The following people all contributed to this release:

  • Ben Dudson
  • Brendan Shanahan
  • David Dickinson
  • David Schwörer
  • Haruki Seto
  • Jarrod Leddy
  • Jens Madsen
  • John Omotani
  • Joseph Parker
  • Luke Easy
  • Matt Thomas
  • Michael Løiten
  • Miyamoto
  • Nick Walkden
  • Peter Hill
  • Peter Naylor

A big thank you to all involved!

We have also tagged the last changes to master just before v4.1.0 as v4.0.1, which is purely a bug-fix release. The most important bug fixes are a few memory leaks that have been patched, and some fixes for Intel compilers.

One last note, due to a slight mix-up, if you have fetched BOUT++ in the last couple of weeks before this announcement, your tags may be out of date. To check, please run the following commands and check their output:

$ git rev-parse v4.0.1
6df9f29ccc81fa6bb50d89594cefec803d234962 # expected output
$ git rev-parse v4.1.0
b392e09f226bd4c805f56ea58ceb21ba7ac02695 # expected output

If the outputs don’t match, please delete those tags and pull the new ones like so:

$ git tag -d v4.0.1
$ git tag -d v4.1.0
$ git fetch -t

and re-run the rev-parse commands above.