The 3D finite element simulation of fluid flow governed by the incompressible Navier-Stokes equations has been the main focus of my research. The Navier-Stokes equations are solved implicitly, and due to the large number of unknowns and the parallelism of the data structures and implementation, I use the GMRES iterative solver to solve for the unknowns at each non-linear iteration.
For problems involving mesh motion such as free-surface flow or flows involving fluid-structure interactions, I use the stabilized space-time finite element formulation. In this formulation, the temporal coordinate is interpolated using finite element basis functions and the motion of an object/interface in the flow is naturally accommodated by a deformation of the mesh in the temporal coordinate. To deform the mesh so as to accommodate a motion of an object/interface, I have developed an automatic mesh moving scheme where the motion of the mesh is determined by the solution of the equations governing linear elasticity. The specified movement of the boundaries become boundary conditions for this formulation. For meshes generated with an automatic mesh generator, this type of mesh motion is the only one available, and remeshing is used when the automatic mesh moving scheme creates unacceptable levels of mesh distortion. Several 2D and axisymmetric flow problems, many involving free-surfaces, have been computed using this methodology, as have several large-scale, fluid-particle interaction problems in 3D.
For problems not involving mesh motion, I use the stabilized semi-discrete finite element formulation. In this formulation, the temporal coordinate is treated in a finite difference manner which is the more traditional way of handling the integration in time. For high Reynolds number flows, I currently use a modified Smagorinsky turbulence model. Several 3D simulations have been computed using this formulation, one of which is flow past an automobile at 55 miles per hour. The flow is computed under both road and wind tunnel conditions. The implicit equation system for this simulation contains over 800,000 degrees of freedom for half of the domain (since the geometry is symmetric), and contains over 1.6 million degrees of freedom for the full mesh.
For simulations such as flow past an automobile which involve very large data sets, I use a matrix-free GMRES iterative solver. In this method, the matrix part of the linear equation system is never directly formed. This matrix (stored on the element level) is the main memory allocation, and instead of forming it and using it in the GMRES solver, I recompute its influence in GMRES whenever it is called upon. This type of formulation increases the total execution time, but greatly reduces the memory requirements and thus allows very large problems to be computed with manageable memory requirements.