  OpenSBLI is an open-source code-generation system for compressible fluid
dynamics (CFD) on heterogeneous computing architectures. Written in Python,
OpenSBLI is an explicit high-order finite-difference solver on structured
curvilinear meshes. Shock-capturing is performed by a choice of high-order
Weighted Essentially Non-Oscillatory (WENO) or Targeted Essentially
Non-Oscillatory (TENO) schemes. OpenSBLI generates a complete CFD solver in the
Oxford Parallel Structured (OPS) domain specific language. The OPS library is
embedded in C code, enabling massively-parallel execution of the code on a
variety of high-performance-computing architectures, including GPUs. The
present paper presents a code base that has been completely rewritten from the
earlier proof of concept (Jacobs et al, JoCS 18 (2017), 12-23), allowing shock
capturing, coordinate transformations for complex geometries, and a wide range
of boundary conditions, including solid walls with and without heat transfer. A
suite of validation and verification cases are presented, plus demonstration of
a large-scale Direct Numerical Simulation (DNS) of a transitional Shockwave
Boundary Layer Interaction (SBLI). The code is shown to have good weak and
strong scaling on multi-GPU clusters. We demonstrate that code-generation and
domain specific languages are suitable for performing efficient large-scale
simulations of complex fluid flows on emerging computing architectures.
