Many aspects of physics can be described by mathematical equations, for example, the motion of water in the sea, the expansion and contraction of metal as it is heated and cooled, or the flow of electricity in a radio antenna.
Scientists write these equations using mathematical symbols. However, when we wish to model a specific problem with a computer, for example the thermal expansion of a particular engine part, there are several practical things which we need to do.
Firstly, we need to be able to describe the shape of the engine part accurately. Usually, the shape can be described by a simple mesh (for example, any twodimensional shape can be divided into triangles, and threedimensional shapes can be divided into triangular pyramids, known as tetrahedra). By dividing the complex shape into smaller, simpler shapes the equations can be solved more easily.
Secondly, and most importantly, the mathematical equations describing the physics need to be converted to a form the computer can understand. In the past, this has been a tedious task for programmers, but in the FEniCS scientific software library (fenicsproject.org), this has been made much easier by translating from a mathematical language, similar to the equations, directly into computer code. Along with some additional information about the mesh, and the external conditions (e.g. in the example above, the source of heat), a full model can be computed and the results can be plotted and analysed.
Not all simulations are so straightforward. For example, the equations for air bubbles moving through water would contain terms for surface tension. Surface tension is sensitive to the curvature of the mesh surface, but a mesh made of triangles always has a flat, faceted surface. In a simulation, as the bubbles move, the mesh would also need to be distorted to take account of the new position of the bubbles. In another context, for noise emitted from jet engines, the equations may require complex numbers, or be highly nonlinear. In both of these cases, the computer code needs to be written to take care of the specific issue. Scientists would like to make computer simulations without having to worry about the complexities of programming these details.
In this project, I am addressing five main issues: complex numbers, curved surfaces, difficult nonlinear problems, mesh deformation, and mesh formats. The FEniCS software framework will be extended to allow users to have access to these features without having to program them directly themselves. It will open up new areas of research, for example in surface tension and liquidgas interaction, multiphase flow, acoustics, quantum mechanics, and stability analysis, as well as making the software more accessible on HPC platforms.
Software developments alone are not enough to drive forward scientific and engineering advances. Another important aspect of this project is to engage with application scientists and help them to get the most out of software libraries, understand their scientific problem, and help them translate it into computer code. I will provide training, in association with EPSRC doctoral training centres, to use the new software developments at large scale, including on supercomputers. Software maintenance is another important aspect of any scientific project, and I will encourage the next generation of scientists to use modern techniques of version control and automatic testing, which will enhance the quality of their software projects, and improve their longevity.
