The L2 space is used, for example, in `Navier-Stokes equations where it keeps the velocity discreetely divergence-free. This example shows how to create an L2 space, visualize finite element basis functions, and perform an orthogonal L2-projection of a continuous function onto the FE space.
First, an L2 space is created as the reader expects:
// Create an L2 space with default shapeset.
L2Space<double> space(&mesh, P_INIT);
The function to be projected is:
CustomExactSolution sln_exact(&mesh);
See formula in the file definitions.cpp. The projection is done as follows:
OGProjection<double> ogProjection; ogProjection.project_global(&space, &sln_exact, &sln);
Sample basis functions visualized using the BaseView class:
The projection (note that this is a discontinuous function):