Implementing a Restricted Function Space Class in Firedrake
Emma Rothwell
TL;DR
This work introduces RestrictedFunctionSpace, a new Firedrake class that restricts the solution space to $V_0$ (interior DOFs) for solving variational problems while preserving outputs in $V$, thereby eliminating boundary DOFs from the solve and improving eigenproblem stability. The implementation spans the top-level class, PETSc/Cython relabeling, PyOP2 data structures, UFL form signatures, and parallel components, with extensive testing and comparisons against the standard FunctionSpace. Key contributions include a boundary_set interface, reordering of DOFs so boundary DOFs are excluded from assembly, and automatic space replacement in eigenproblems via a restrict option, all while maintaining compatibility with existing Firedrake workflows. The results demonstrate equivalent solution accuracy to unrestricted spaces for variational problems, but with significantly improved eigenvalue behavior and reduced matrix sizes, offering practical benefits for large-scale PDE solves and more faithful enforcement of Dirichlet boundary conditions.
Abstract
The implementation process of a $\texttt{RestrictedFunctionSpace}$ class in Firedrake, a Python library which numerically solves partial differential equations through the use of the finite element method, is documented. This includes an introduction to the current $\texttt{FunctionSpace}$ class in Firedrake, and the key features that it has. With the current $\texttt{FunctionSpace}$ class, the limitations of the capabilities of the solvers in Firedrake when imposing Dirichlet boundary conditions are explored, as well as what the $\texttt{RestrictedFunctionSpace}$ class does differently to remove these issues. These will be considered in both a mathematical way, and in the code as an abstraction of the mathematical ideas presented. Finally, the benefits to the user of the $\texttt{RestrictedFunctionSpace}$ class are considered, and demonstrated through tests and comparisons. This leads to the conclusion that in particular, the eigensolver in Firedrake is improved through the use of the $\texttt{RestrictedFunctionSpace}$, through the removal of eigenvalues associated with the Dirichlet boundary conditions for a system.
