Implement a self-contact operator defined on P1 triangles.
This operator is rather tricky as it requires the combination of a standard global operator (in charge of computing the distance between two parts of the mesh) and of an interpolation matrix used to compute the projection of the dofs from one part of the mesh to another. This interpolator will be rebuilt at each timestep: it is a sparse matrix with 3 nonzero values per row, with each value corresponding to the shape function values of the projected point (the sum of the three values will be 1). The resulting interpolation matrix will be of size (Ndofs_projected_points, Ndofs_total). Special care should be taken to tackle the projection for parallel runs: we have to deal with the fact that the projection of one element handled by one processor might be within an element that is on a different processor. Implementation should follow valveModel.pdf.