Welcome to BOUT++’s documentation!# The documentation is divided into the following sections: User documentation Getting started BOUT++ models Model inputs Model outputs BOUT++ interfaces Developer Documentation Getting started Introduction License and terms of use Quickstart Guide Prerequisites Building BOUT++ Running BOUT++ Getting started Pre-built binaries Obtaining BOUT++ Installing dependencies CMake ./configure Natural Language Support Configuring analysis routines Compiling BOUT++ Running the test suite Installing BOUT++ (experimental) Advanced installation options Optimisation and run-time checking Install dependencies: Machine-specific installation File formats OpenMP SUNDIALS PETSc LAPACK MPI compilers Installing FFTW from source Compiling and running under AIX Issues Running BOUT++ Quick start Analysing the output using Python Natural language support When things go wrong Startup output Per-timestep output Restarting runs Stopping simulations Manipulating restart files New Features in BOUT++ v5.0 3D Metrics BOUT++ models BOUT++ physics models Building Physics Models Heat conduction Magnetohydrodynamics (MHD) Reduced MHD Logging output Updating Physics Models from v3 to v4 More examples Makefiles and compiling BOUT++ Executables example Modules example bout-config script Variable initialisation Initialisation of time evolved variables Initalising variables with the FieldFactory class Adding a new function Parser internals Boundary conditions Boundary conditions for non-orthogonal grids Parallel boundary conditions Relaxing boundaries Changing the width of boundaries Examples Boundary regions Boundary regions Boundary operations Boundary modifiers Boundary factory Testing Automated tests and code coverage Unit tests Integrated tests Method of Manufactured Solutions Timing GPU support Examples CMake configuration Single index operators CoordinatesAccessor Memory allocation and Umpire Future work Model inputs BOUT++ options BOUT.inp input file Command line options General options Communications Differencing methods Model-specific options Input and Output Implementation Reading options Reading and writing to NetCDF FFT Types for multi-valued options Generating input grids BOUT++ Topology 3D variables From EFIT files From ELITE and GATO files Generating equilibria Zoidberg grid generator Model outputs Post-processing Python routines Python analysis routines Reading BOUT++ output into IDL Summary of IDL file routines IDL analysis routines Matlab routines Mathematica routines Octave routines Reproducibility and provenance tracking The python boutpp module Installing Purpose Functions Examples BOUT++ interfaces Time integration Options CVODE IMEX-BDF2 Split-RK Backward Euler - SNES ODE integration Preconditioning Jacobian function DAE constraint equations IMEX-BDF2 Monitoring the simulation output Implementation internals Parallel Transforms Field-aligned grid Shifted metric Aligned transform FCI method Laplacian inversion Usage of the laplacian inversion Numerical implementation Implementation internals LaplaceXY LaplaceXZ Differential operators Differencing methods User registered methods Mixed second-derivative operators Non-uniform meshes General operators Clebsch operators The bracket operators Finite volume, conservative finite difference methods Derivatives of the Fourier transform Algebraic operators Staggered grids Eigenvalue solver Configuring with SLEPc SLEPc options Examples Nonlocal heat flux models Spitzer-Harm heat flux SNB model Invertable operators PETSc solvers Field-aligned coordinate systems Field-aligned coordinates BOUT++ preconditioning Geometry and Differential Operator Developer Documentation Contributing to BOUT++ Git crash course Code layout Arrays, scalar and vector field types PETSc interface Mesh File I/O Natural Language Support Performance profiling API reference Indices and tables# Index Search Page