We present an efficient solver for massively-parallel direct numerical
simulations of incompressible turbulent flows. The method uses a second-order,
finite-volume pressure-correction scheme, where the pressure Poisson equation
is solved with the method of eigenfunction expansions. This approach allows for
very efficient FFT-based solvers in problems with different combinations of
homogeneous pressure boundary conditions. Our algorithm explores all
combinations of pressure boundary conditions valid for such a solver, in a
single, general framework. The method is implemented in a 2D pencil-like domain
decomposition, which enables efficient massively-parallel simulations. The
implementation was validated against different canonical flows, and its
computational performance was examined. Excellent strong scaling performance up
to 104 cores is demonstrated for a domain with 109 spatial degrees of
freedom, corresponding to a very small wall-clock time/time step. The resulting
tool, CaNS, has been made freely available and open-source.Comment: Corrected axes in figure