I usually run the ROMS with the following CPP options for advection, etc :
#define SOLVE3D
#define PERFECT_RESTART
#define CURVGRID
#define UV_ADV
#define UV_SADVECTION
#define UV_COR
#define UV_QDRAG
#define TS_SVADVECTION
#define TS_U3HADVECTION
#define DJ_GRADPS
#define SPLINES
#define RADIATION_2D
Hence, I do not use any explicit horizontal diffusion/viscosity but rely on the upstream-biased advection to get rid of the numerical oscillations in space for momentum and tracers.
For a set-up such as the above, what is the maximum CFL number (ie. CFL=|u|*dt/dx + |v|*dt/dy + |w|*dt/dz) permitted to ensure numerical stability (plus consistency & convergence also)? Is it 1.0 or a value smaller than 1.0?