And apart from the mathematical challenges, the CFD simulation process involves so much more, for example: mesh generation from a geometry model, computational modeling of the flow based on the Navier-Stokes equations, numerical methods, efficient algorithms, high performance computing, data analysis and visualization techniques.
To get a big picture of this complex (but exciting!) problem, I listed 5 reasons CFD is hard:
1. Turbulence is composed of vortices on a range of scales down to the Kolmogorov scale; the number of degrees of freedom is estimated to grow faster than the square of the Reynolds number. No computer of today can process such a simulation at high Reynolds numbers. Turbulence models avoid full resolution but are based on empirical laws with parameters that need to be tuned to each case.
2. Flow separation phenomena (stall, wakes, etc.) are determined by the effect of turbulent boundary layers at the wall, too thin to be fully resolved by the mesh. Wall models avoid full resolution but are also based on empirical laws.
3. The optimal mesh depends of the flow to be simulated; a priori mesh generation is suboptimal, which results in inefficient use of computational resources.
4. Numerical methods introduce artificial viscosity, similar to the turbulent (eddy) viscosity of turbulence models. How to distinguish between the two?
5. The parameterization of turbulence models makes mathematical analysis hard, which complicates rigorous error analysis, construction of adaptive mesh algorithms, and CFD-based design optimization.
No, I don’t want to dissuade anyone from getting in to this rich field of study. Just the opposite. We need to make progress at the frontiers of mathematics, computer science and engineering; and we need to find new ways to share the technology with non-experts.