the overarching design decisions. The complete, documented source-code and instructions can be found online at [www.cerecam.uct.ac.za/code/surface\_energy/doc/html/index.html](www.cerecam.uct.ac.za/code/surface_energy/doc/html/index.html). Certain aspects of the implementation are similar to those discussed in the online tutorial (step\_44) on (near-incompressible) finite elasticity without surface effects (see [www.dealii.org/developer/doxygen/deal.II/step\_44.html](www.dealii.org/developer/doxygen/deal.II/step_44.html)).

Triangulations and degree of freedom handlers
---------------------------------------------

The triangulation (a class in [deal.II]{}) of the volume, denoted $\mathcal{T}_h$, consists of the location of the vertices of the volume cells (elements) and the cell connectivity, as depicted in Fig. \[triangulation\]. A degree of freedom handler (another class in [deal.II]{}) combines the purely geometrical information of the triangulation with details of the finite element interpolation space. The surface degree of freedom handler $\widehat{\mathcal{D}}_h$ is extracted directly from the volume mesh $\mathcal{D}_h$ using the function `GridTools::extract_boundary_mesh`. The surface degree of freedom handler is independent to that of the volume. A map $\mathcal{M}$, named `surface_to_volume_dof_map` in the code, is used to link the degrees of freedom on the surface to those in the volume. The surface triangulation is denoted $\widehat{\mathcal{T}}_h$.

The contribution from the volume to the global system matrix is obtained by looping over all the volume cells $\Omega_{e,0}$, assembling the matrix contribution from the cell $\mathsf{A}_e$, and then adding this to the 