I am trying to write a 2d pseudo-spectral DNS code with random initial velocities. This is kind of a classic simulation where the very tiny vortices group together forming larger and larger vortices as the spectral energy cascades upward. So far I have done what I think is the intuitive thing to do: I have done a splitting scheme where the nonlinear term is treated explicitly using a 2nd order adams bashforth time stepping, while the diffusive term is completed implicitly by trapezoid time stepping. Finally the incompressibility condition is enforced by the projection method.
So far this seems to work well for other initial conditions, for example zero initial velocity but with a forcing term added. However for the problem I am trying to tackle, the flow is just too diffusive and smears everything out for low Reynolds numbers, or becomes unstable for anything over a couple hundred (Re). I have tried hyper viscosity, but this then becomes unstable as well even after applying various filters (sharp, box, gaussian etc).
Basically I was wondering whether anyone can tell me what standard methods are usually employed for this kind of problem. It is a common toy simulation set-up, so I am assuming there is a common introductory way that people solve this.
Note: I am solving the non-dimensionalized Navier-Stokes where the nonlinear term is written in conservative form.