Large-scale simulations of wall turbulence using SIMSON
Background: SIMSON is a pseudo-spectral solver of the incompressible Navier-Stokes equations which uses a velocity/vorticity formulation and a Fourier/Chebyshev representation of the fields. While the code is extremely fast thanks to its efficient numerical algorithms—around one order of magnitude faster than most efficient general-purpose codes—and has been used in many simulations of various wall-bounded flows in Cartesian boxes, the base of the code was written decades ago—primarily in Fortran 77—some of which even before the MPI standard or efficient fast Fourier transform (FFT) libraries. While many modules of the code have since been updated using the MPI standard and alike, there are still missing pieces, such as a native MPI-IO implementation, or use of a 3rd-party FFT library. Besides, it has not been under active development for newer architectures such as GPUs.
The goal of this project is to modernize SIMSON, and thus enable massive-scale simulations of wall turbulence, of the order of hundreds of billions of grid points. The additional goal is to help get a better understanding of the limits of FFT and whether and where one should expect a trade-off point where more local methods overtake the extremely efficient, but communication-heavy, codes such as SIMSON. The project starts slow, by relatively simple tasks such as MPI/IO implementation, and becomes progressively more complex as more familiarity is built with the code.
Specific tasks:
-
- Warm-up: literature review, flow simulation, post-processing, etc.
- Building familiarity with the code, implementation of MPI-IO or parallel HDF5
- Replacing all remaining parallel communications and timings with the MPI standard
- Replacing all Fourier transforms with FFT libraries, including the data transpose
- Replacing the Chebyshev discretization with compact finite-difference
- Testings of the code’s scaling and establishing limitations
- Add possibility of finite-difference discretization in the streamwise direction
- (If possible) Simplify the code to its bare minimum and translate to modern Fortran/C++
- (If possible) Add support for GPUs, test the bounds of GPU implementation
Requirements:
-
- Experience and interest in high-performance computing and turbulence
- Programming experience in Fortran 77, experience with MPI
- Independent working style
Starting date: Immediately, flexible
Advisors: