A framework for the automated derivation of finite difference solvers from high-level problem descriptions.

OpenSBLI is a Python-based modelling framework that is capable of expanding a set of differential equations written in Einstein notation, and automatically generating C code that performs the finite difference approximation to obtain a solution. This C code is then targetted with the OPS library towards specific hardware backends, such as MPI/OpenMP for execution on CPUs, and CUDA/OpenCL for execution on GPUs.

The main focus of OpenSBLI is on the solution of the compressible Navier-Stokes equations with application to shock-boundary layer interactions (SBLI). However, in principle, any set of equations that can be written in Einstein notation may be solved.

Key Features

  • Express the differential equations to be solved in Einstein/index notation
  • OPS-compliant C code that solves the equations is automatically generated
  • Code is targetted towards various backends, including MPI, CUDA, OpenCL
  • Open-source project, released under the GNU General Public License
  • Separation of concerns: model dev kept separate from backend support
  • Example applications and user documentation are available