Partial differential equations (PDEs) are the mathematical tools which allow us to model the physical world: from structures to fluids, materials, electromagnetics, wave propagation and biological systems, and in areas as varied as aerospace, image processing, medical therapeutics, and economics.

We are developing open, high performance, high productivity software environments and tools for the computational solution of PDEs. Our objectives range from algorithmic developments to challenging exascale applications: 

  • The creation and implementation of scalable and composable linear solvers for modelling system-level, complex problems at exascale. 
  • Development of an exascale-ready domain specific language and associated underpinning technologies for unstructured grid problems posed on complex geometries.  
  • New code generation approaches for creating problem-specific compute kernels from mathematical descriptions for heterogeneous exascale hardware. 
  • Development of data science-based approaches for building fast reduced order models for design and optimisation using exascale computations.  
  • Application of the toolchain to high impact grand-challenge applications. 

PDEs comprise a forward model for predicting the response of a system but are also a key component in the solution of inverse problems, for design optimisation, uncertainty quantification and data science applications, where the forward computation is repeated many times with different inputs. The numerical simulation of complex systems modelled by PDEs is a challenging topic. It involves the choice of underlying equations, the selection of suitable numerical solvers, and implementation on specific hardware. Even with decades of experience in the community, significant effort is now required with the advent of heterogeneous mixed CPU/GPU devices on the path to exascale systems. Implementations need to be adapted for each device type to achieve good performance. 

Therefore, developing new simulations at scale has become an ever more costly and time-intensive task. In this project we are taking a different simulation approach, based on the use of high-productivity languages such as Python to describe the problem, and automatic code generation with just-in-time compilation to translate the high-level formulations into high-performance exascale-ready code. Based on the experience with the component software libraries Firedrake, FEniCS and Bempp, we are building a toolchain for complex exascale simulations of PDEs on unstructured grids, using state of the art finite element and boundary element technologies. The mathematical and algorithmic underpinnings, concrete software development for automatic code generation of low-level CPU/GPU kernels and high-productivity language interfaces, will be applied to 21st century exascale challenge problems in the areas of battery storage systems, net-zero flight, and high-frequency wave propagation. 

Latest news