Computational fluid dynamics in practice