Diablo is an open-source, MPI-based, portably efficient, easy-to-read/modify DNS/LES code in Fortran90 syntax for computing turbulence in 3D or 2D rectangular geometries with periodic boundary conditions in 3, 2, 1, or 0 directions and simple Dirichlet, Neumann, or stress-free boundary conditions in the others. It allows for a wide variety of triply periodic, channel, duct, and cavity flows to be studied. Passive and active scalars may be incorporated to study the effects of density/temperature/salinity/concentration gradients.
Diablo is explained fully in Chapter 14 of Numerical Renaissance, leveraging many of the numerical methods presented in the preceding chapters of the text and bringing them together to solve a complex simulation problem. In particular, Diablo incorporates pseudospectral and energy- & momentum-conserving finite-difference methods for spatial differentiation, mixed CN/RKW3 methods for time marching, and a fractional step method with sophisticated multigrid acceleration for enforcing the incompressibility constraint. It is highly modular, and can leverage both shared-memory (OpenMP) and distributed-memory (MPI) computer architectures. It includes accompanying adjoint solvers.
The triply-periodic and channel cases are currently fully operational (with periodic boundary conditions in 3 and 2 directions respectively), as seen in the gallery. If you would like to use this code yourself, please feel to download it by clicking the button below.
