FIREDRAKE '23: FIREDRAKE '23
PROGRAM FOR WEDNESDAY, SEPTEMBER 13TH
Days:
next day
all days

View: session overviewtalk overview

12:30-13:30Lunch
14:00-15:20 Session 1
14:00
A uniformly $hp$-stable element for the stress complex
PRESENTER: Francis Aznaran

ABSTRACT. For the Hellinger--Reissner principle of stress-displacement linear elasticity, we prove inf-sup stability bounds which are independent of polynomial degree and mesh size, for a novel sequence of conforming finite element spaces discretising the stress elasticity complex in two dimensions. The stress space coincides with the symmetry-enforcing Hu--Zhang element, of which we provide a novel characterisation. This may be achieved via the construction of a bounded right inverse of the divergence operator, on the discontinuous Lagrange element which discretises the displacement, by adapting techniques used to proved the analogous statement for the Falk--Neilan pair for incompressible Stokes flow.

Our main novelty, however, lies in an alternative proof via the construction of bounded Poincar\'e operators for the elasticity complex which are polynomial-preserving, in the Bernstein--Gelfand--Gelfand framework of the finite element exterior calculus.

14:20
Redefining the finite element
PRESENTER: India Marsden

ABSTRACT. The Ciarlet definition of a finite element has been used for many years to describe the requisite parts of a finite element. In that time, finite element theory and implementation have both developed and improved, which has left scope for a redefinition of the concept of a finite element. In this redefinition, we look to encapsulate some of the assumptions that have historically been required to complete Ciarlet’s definition, as well as incorporate more information, in particular relating to the symmetries of finite elements, using concepts from Group Theory.

This talk will present the machinery of the proposed new definition, discuss its features and provide some examples of commonly used elements.

14:40
Towards Parallel Compatible Mesh-to-Mesh Interpolation

ABSTRACT. Parallel compatible mesh-to-mesh interpolation is required for many applications: mesh adaptivity, non-matching multigrid methods (the prolongation operation is finite element interpolation), and coupling simulations together from different dimensions. To give an example of the latter, one might have simulations of 1D blood vessels to couple with a 3D tissue model, or a 1D river model and a 2D flood model. At the moment, none of this is possible in Firedrake outside of specialised branches. Vertex-only meshes may be the solution.

These are Firedrake meshes which, as the name suggests, consist only of vertices, and have proven useful for solving inverse problems with point data. Since vertex-only meshes were built from the ground up to be parallel compatible, with their vertex-cells spatially distributed over MPI ranks, we will discuss how they can be used as an intermediary for parallel compatible mesh-to-mesh interpolation.

15:00
A new class of absorbing boundary conditions for the Helmholtz equation
PRESENTER: Koki Sagiyama

ABSTRACT. We introduce a new class of absorbing boundary conditions (ABCs) for the Helmholtz equation with complex wave number. In practice, the Helmholtz equation with complex wave number arises when the medium absorbs energy. In analysis, it arises when one takes Laplace transform in time of the wave equation. We used Firedrake first to test the idea and finally to validate our theory in one- and three-dimensional problems. We used some of the recently added features in Firedrake including hexahedral mesh support for Q/DQ elements and "mark_entities" method to mark subdomains.

15:20-15:50Coffee Break
15:50-17:10 Session 2
15:50
Latest developments in pyop3

ABSTRACT. pyop3 is a domain-specific language (and associated compiler) for the execution of computational kernels over a mesh. pyop3 has two main advantages over its precursor PyOP2 (used in Firedrake): (1) it permits a much greater variety of mesh data structures, and (2) loops and computational kernels can be arbitrarily composed. With respect to Firedrake, (1) should, among other things, assist in the development of new features such as nested mixed function spaces and particle methods, whereas (2) should facilitate writing advanced preconditioners. The abstraction is also helpful for reasoning about a variety of performance optimisations.

In this talk we will present the latest developments in pyop3 and highlight some of its novel features.

16:10
GPU Code Generation for Finite Elements with Firedrake

ABSTRACT. GPUs and accelerators are now common place on large HPC machines and to harness all of the compute power available on such systems these devices can no longer be ignored. However, programming for the GPU remains a difficult task, and optimising for a specific vendor/model is harder still. Using Firedrake we can remove much of this difficulty by using automatic code generation and targeting the GPU directly, which allows users to utilise accelerators for their PDE simulations.

For most projects a "rewrite for GPUs" or a "GPU version" can be created, this is not the case for Firedrake. We create a pathway for automatically generating GPU code for any PDE a user can input, as well as maintaining all existing CPU functionality. By not completely rewriting the codebase we demonstrate the power of the code generation approach.

We present the early progress made in offloading Firedrake's functionality on to accelerators. The main focus is on adding GPU assembly for one-forms to enable matrix free operator evaluation and enabling GPU based solvers. We will demonstrate the functionality within Firedrake and PyOP2/pyop3 to optimise for GPUs specifically and how to minimise host to device transfers. These changes utilise the GPU support within loo.py and PETSc to produce efficient and scalable simulations. Some early results are included that show some of the preliminary functionality for GPU platforms.

16:30
Firedrake-NETGEN Integration: New Features

ABSTRACT. NETGEN is an automatic mesh generator, led by Joachim Schoberl. In this talk, we focus our attention on new features of the NETGEN-Firedrake integration made possible by the new ngsPETSc interface. In particular we will discuss high-order mesh generation, new mesh refinement options, support for a parallel installation of NETGEN and Open Cascade aware DMPlex.

16:50
A checkpoint schedule package for incremental of adjoint simulations
PRESENTER: Daiane Dolci

ABSTRACT. The time-dependent adjoint-based gradient is characterised by its backward progression in time and its dependence on the solution of a forward system. Consequently, the time-dependent adjoint requires either storing the forward data or recomputation of the forward problem to obtain essential data for the adjoint computations. Storing the forward data at every time step is impractical for large systems, as it can result in high memory usage for extensive time executions. This challenge can be overcome by employing the checkpointing method, which is an efficient manager of memory usage. In summary, checkpointing strategies involve creating a sequence of schedules that coordinate the selective storage of forward data at specific time steps. During the adjoint computation, these schedules provide instructions for restarting the forward solver from the nearest time step where forward data was stored, in case the forward data is unavailable, until the step where the adjoint needs to be computed.

In the adjoint-based gradient computation, the forward data used as initial conditions for the forward solver restarting can differ from the forward data required for the adjoint computation, e.g., for non-linear problems. Thus, we propose the checkpoint_schedules Python package that explicitly distinguishes between the storage of forward restart data and the forward data required for the adjoint computation. The checkpoint_schedules package offers schedules given by a sequence of actions that provide functionalities of forward or adjoint advancement over the entire interval of steps. Furthermore, the checkpoint_schedules is flexible to interpret and convert designs from various existing approaches, including the revolve algorithm. It has already been successfully working on a range of checkpointing strategies presented in the literature.

19:00-20:45Dinner