Computational techniques for fluid dynamics