This directory contains supporting code and data for the paper:
"Code generation for generally mapped finite elements".

You will need a working version of Firedrake
(https://www.firedrakeproject.org) to run the examples.  To obtain the
same version used to produce results in the paper, one can use:

PETSC_CONFIGURE_OPTIONS="--download-pastix --download-ptscotch" python firedrake-install --doi XXX --slepc

where the DOI is for the Zenodo record referenced in the paper.

Data, and figures from the paper are in data/ and pictures/
respectively.  The following files can be run to produce these:

- poissonflops.py: FLOP counts for Poisson operator

- biharmonicflops.py: FLOP counts for biharmonic operator

- poissonconvergence.py: Convergence and timing data for Poisson solves

- poisson_condense.py: The same, but with static condensation (needs
  "pip install git+https://github.com/thomasgibson/scpc@master")

- biharmonicconvergence.py: Convergence and timing data for biharmonic
  solves

- biharmonicconvergencedg.py: The same, but with H^1 interior penalty
  discretisations.

- sparsity_{biharmonic,biharmonic_dg,poisson}.py: Sparsity plots for
  the biharmonic and Poisson operators

- cahnhilliard.py: Solves the Cahn-Hilliard equation

- chladni.py: Plots Chladni figures on a square domain

- guitar.py: Computes eigenmodes of the clamped biharmonic operator on
  the top plate of a guitar.
