GalerkinToolkit.jl: Towards a Multi-Purpose and Multi-Platform Finite Element Toolbox in Julia

  • Verdugo, Francesc (Vrije Universiteit Amsterdam)
  • Ouyang, Xiaowei (Vrije Universiteit Amsterdam)

Please login to view abstract download link

We present GalerkinToolkit.jl, a general-purpose finite element library implemented in the Julia programming language. The long-term mission of this project is to provide a toolbox for the implementation of a wide range of finite element methods across diverse computing platforms, from laptops to exascale and pre-exascale supercomputers. This presentation showcases the current state of the project towards this overarching objective, including performance comparisons against competitors and the ongoing effort to port the library to GPUs. GalerkinToolkit.jl started as a major rewrite of Gridap.jl and it is different from other general-purpose libraries in several aspects. It combines the vision of frameworks like FEniCS and libraries like Deal-ii in a single package and in a single programming language. A low-level API is available to explicitly write numerical integration and assembly loops, but also multi-linear forms can be written in a high-level API close to the math notation and the library generates the underlying loops automatically. This multi-level API allows the user to find the best trade-off between the low- and high-level interfaces for a given application and for a given level of user expertise. In addition, GalerkinToolkit.jl introduces a novel form compiler, the GalerkinToolkit Form Compiler (GTFC), which addresses the problem of automatic code generation using a multi-level intermediate representation and a set of compiler passes with domain-specific optimizations. Unlike other form compilers, GTFC takes advantage of the metaprogramming capabilities of Julia and considers a subset of Julia's syntax instead of an external domain specific language. This design provides a better integration of user-defined types and functions in the definitions of multi-linear forms without sacrificing performance. GTFC is designed to support advanced use cases, such as coupling surface and volume arguments in multi-field forms both for continuous and discontinuous interpolations, not often available in other form compilers. GalerkinToolkit.jl is a free and open-source project available at Github: https://github.com/GalerkinToolkit/GalerkinToolkit.jl