Applied CFD techniques: An introduction based on finite element methods

This book arose from several short courses in Computational Fluid Dynamics (CFD) given by Rainald Löhner in the late 1980's and early 1990's for companies such as Boeing and IBM, as well as organisations such as the von Karman Institute in Brussels and the NASA Ames Research Centre. The book's aim is to provide an introduction to applied CFD, and as such it couples a comprehensive overview of the field with practical details of how to implement the algorithms described. In this way it could be thought of as first resource to turn to in the development or extension of a piece of CFD code. Whilst the book is predominately concerned with finite element methods (or more accurately with models based on unstructured grids), finite volume, spectral element and finite difference schemes are all introduced where appropriate. Thus, as finite difference schemes are typically used for the time derivative in time-marching simulations they are dealt with in some detail in the chapter devoted to this topic. Whilst no particular numerical method is treated in detail, this is one of the few CFD books I have read where the scope is sufficiently broad to provide the reader with a clear idea of how all the available techniques inter-relate and how they may be classified. This seems to me extremely useful. Further, given the rapid development in this field, Löhner focuses solely on well established methods that have proven their worth in practical applications and this too helps bring clarity. The techniques and examples described are based in large part on the author's own research and experience. This is extensive, but focuses on industrial applications, and in particular on large cost aerodynamic projects. Hydraulic engineers using CFD for design problems relating to machinery, pipeflow or engineered channels where geometry and boundary conditions are well known will note most affinity with the examples used in this book. Yet even engineers working with complex natural geometries and in data-poor environments will find much here that is of use. For example, I was struck by the parallels between grid generation techniques used to simulate aerodynamic and reach scale flooding problems with Reynolds Averaged Navier Stokes (RANS) solvers. In the aerodynamic case, models use structured grids with high aspect ratios in near wall or wake regions to represent steep velocity gradients in the turbulent boundary layer correctly, but employ unstructured grids in the 'inviscid' freestream. Reach scale free surface flow models in 2D employ a similar technical solution to represent steep lateral velocity gradients at the channel-floodplain interface. Other hydraulic modellers will undoubtedly find similar and instructive parallels to their specific problems. There is also a strong tradition in CFD of technical developments being made in the industrial aerodynamics field which are then imported to environmental and other areas. The large project budgets in aerodynamics and the cost savings that can be made through the use of good CFD experiments mean that the number of person-hours and computational resources that can be devoted to particular problems is great, and such work is often at the cutting edge of CFD. Many of the technique's described by Löhner, such as mesh deformation and adaptive gridding, are thus becoming common place in aerodynamic CFD but have yet to cross-over into the hydraulics field to any great extent. Nevertheless, many hydraulic problems require these approaches and this book provides a simple introduction to the range of possible methods available. For instance, many environmental flows involve dynamic changes in the extent of the computational domain during the course of a simulation. Examples include dam break and plain flooding problems, as well as coastal and estuarine flow. However, with only a small number of exceptions, deforming boundary models have yet to be adequately developed for these circumstances. Hydraulic engineers will thus find much here that is of direct use, and the book will also stimulate ideas and encourage the adoption of new techniques. Despite its title, this volume is in many ways unlike traditional books on the finite element method as it is also very much concerned with the practical implementation of these codes. Traditional finite element books have neglected aspects such as data structures, grid generation and efficient coding to concentrate solely on numerical analysis. Lohner's book, by contrast, gives more equal weight to these important topics. Thus, approximately one third of the book covers data structures and grid generation, one third covers numerical analysis and one third covers mesh movement, interpolation, mesh refinement and parallelization. As the finite element method approaches a degree of maturity, it is in these areas where more and more of the interesting developments will lie and where the highest potential exists for savings of computational cost. For example, there is a very useful discussion on programming techniques for different machine architectures (massively parallel machines, vector computers) which are available to industrial users now, and may be available to hydraulic