Table of Contents
Fetching ...

FIAT: improving performance and accuracy for high-order finite elements

Pablo D. Brubeck, Robert C. Kirby, Fabian Laakmann, Lawrence Mitchell

TL;DR

FIAT provides a framework for tabulating finite element bases on reference elements, and this work documents mid-2024 enhancements that significantly boost high-order performance and accuracy. Key contributions include a unified, recurrence-based construction of basis derivatives, a new interface to non-equispaced point sets via recursivenodes, integral-type DOFs for $H(\mathrm{div})$ and $H(\mathrm{curl})$, expanded quadrature rules with Xiao–Gimbutas, and tensor-product bases supporting fast diagonalization methods. The results show faster element instantiation, improved interpolation accuracy and preservation of divergence and curl, and scalable solver performance for high polynomial degrees, enabling more practical high-order discretizations in code-generation–heavy workflows. Collectively, these advances enhance FIAT's applicability in high-order finite element pipelines such as Firedrake and the broader FEniCSx ecosystem, with reproducible artifacts provided for verification.

Abstract

FIAT (the FInite element Automatic Tabulator) provides a powerful Python library for the generation and evaluation of finite element basis functions on a reference element. This release paper describes recent improvements to FIAT aimed at improving its run time and the accuracy and efficiency of code generated using FIAT-provided information. In the first category, we have greatly streamlined the implementation of orthogonal polynomials out of which finite element bases are built. The second category comprises several more advances. For one, we have built an interface to the $\texttt{recursivenodes}$ package to enable more accurate Lagrange bases at high order. We have also implemented integral-type degrees of freedom for $H(\mathrm{div})$ and $H(\mathrm{curl})$ elements, which match the mathematical definitions of the elements more closely and also avoid loss of accuracy in interpolation. More fundamentally, we have included families of simplicial quadrature rules that require many fewer quadrature points than the Stroud rules previously used in FIAT. Finally, FIAT now provides support for fast diagonalization methods, which enable fast solution algorithms at very high order. In each case, we describe the new features in FIAT and illustrate some of the gains obtained through simple numerical tests.

FIAT: improving performance and accuracy for high-order finite elements

TL;DR

FIAT provides a framework for tabulating finite element bases on reference elements, and this work documents mid-2024 enhancements that significantly boost high-order performance and accuracy. Key contributions include a unified, recurrence-based construction of basis derivatives, a new interface to non-equispaced point sets via recursivenodes, integral-type DOFs for and , expanded quadrature rules with Xiao–Gimbutas, and tensor-product bases supporting fast diagonalization methods. The results show faster element instantiation, improved interpolation accuracy and preservation of divergence and curl, and scalable solver performance for high polynomial degrees, enabling more practical high-order discretizations in code-generation–heavy workflows. Collectively, these advances enhance FIAT's applicability in high-order finite element pipelines such as Firedrake and the broader FEniCSx ecosystem, with reproducible artifacts provided for verification.

Abstract

FIAT (the FInite element Automatic Tabulator) provides a powerful Python library for the generation and evaluation of finite element basis functions on a reference element. This release paper describes recent improvements to FIAT aimed at improving its run time and the accuracy and efficiency of code generated using FIAT-provided information. In the first category, we have greatly streamlined the implementation of orthogonal polynomials out of which finite element bases are built. The second category comprises several more advances. For one, we have built an interface to the package to enable more accurate Lagrange bases at high order. We have also implemented integral-type degrees of freedom for and elements, which match the mathematical definitions of the elements more closely and also avoid loss of accuracy in interpolation. More fundamentally, we have included families of simplicial quadrature rules that require many fewer quadrature points than the Stroud rules previously used in FIAT. Finally, FIAT now provides support for fast diagonalization methods, which enable fast solution algorithms at very high order. In each case, we describe the new features in FIAT and illustrate some of the gains obtained through simple numerical tests.
Paper Structure (8 sections, 17 equations, 11 figures, 3 tables)

This paper contains 8 sections, 17 equations, 11 figures, 3 tables.

Figures (11)

  • Figure 1: Some triangular elements supported by FIAT and their degrees of freedom
  • Figure 2: Time to instantiate Lagrange elements of various orders and tabulate basis functions and first and second derivatives.
  • Figure 3: Freudenthal subdivision of the biunit cube.
  • Figure 4: 2-norm conditioning and accuracy of reference Vandermonde inversion with high-degree Lagrange basis using equispaced and recursively-defined GLL nodes.
  • Figure 5: $L^\infty$ error obtained by interpolating a Runge-type function onto a coarse mesh with high-degree Lagrange basis using equispaced and recursively-defined GLL nodes.
  • ...and 6 more figures