Meshmode interoperability with firedrake

I wrote the routines to convert meshes and functions between the Firedrake and meshmode representations. The code is currently maintained on github. The original pull request can be found on gitlab. Browse the documentation of these features.

This project allows boundary element methods to be easily expressed and solved using Firedrake. For examples, see my upcoming publication: Finite elements for Helmholtz equations with a nonlocal boundary condition.

These conversion routines are the result of a year-long undergraduate project. All code is written in Python.


  • Conversion of arbitrary-order simplex meshes from firedrake to meshmode and vice versa.
  • Preservation of boundary tags across conversion.
  • Exclusive conversion of cells near specified source/target boundaries to enable quick conversion for layer potential evaluation.
  • Conversion of arbitrary-order functions in a discontinuous Lagrange space from firedrake to meshmode and vice versa.
  • Support for arbitrary DOF-sets used to represent discontinuous Lagrange elements on a simplex (see meshmode documentation for more details).