  BOUT++ is a 3D nonlinear finite-difference plasma simulation code, capable of
solving quite general systems of PDEs, but targeted particularly on studies of
the edge region of tokamak plasmas. BOUT++ is publicly available, and has been
adopted by a growing number of researchers worldwide. Here we present
improvements which have been made to the code since its original release, both
in terms of structure and its capabilities. Some recent applications of these
methods are reviewed, and areas of active development are discussed. We also
present algorithms and tools which have been developed to enable creation of
inputs from analytic expressions and experimental data, and for processing and
visualisation of output results. This includes a new tool Hypnotoad for the
creation of meshes from experimental equilibria.
  Algorithms have been implemented in BOUT++ to solve a range of linear
algebraic problems encountered in the simulation of reduced MHD and gyro-fluid
models: A preconditioning scheme is presented which enables the plasma
potential to be calculated efficiently using iterative methods supplied by the
PETSc library, without invoking the Boussinesq approximation. Scaling studies
are also performed of a linear solver used as part of physics-based
preconditioning to accelerate the convergence of implicit time-integration
schemes.
