Notations

We now turn to the next crucial mathematical ingredient: the function space, whose definition depends on ΩhΩh - or more precisely its partitioning ThTh - and the choice of basis function. Function spaces in Feel++ follow the same definition and Feel++ provides support for continuous and discontinuous Galerkin methods and in particular approximations in L2L2, H1H1-conforming and H1H1-nonconforming, H2H2, H(div)H(div) and H(curl)H(curl)[^1].

We introduce the following spaces

Wh={vhL2(Ωh): KTh,vh|KPK},Vh=WhC0(Ωh)={vhWh: FFih [vh]F=0}Hh=WhC1(Ωh)={vhWh: FFih [vh]F=[vh]F=0}CRh={vhL2(Ωh): KTh,vh|KP1;FFih F[vh]=0}RaTuh={vhL2(Ωh): KTh,vh|KSpan{1,x,y,x2y2};FFih F[vh]=0}RTh={vh[L2(Ωh)]d: KTh,vh|KRTk;FFih [vhn]F=0}Nh={vh[L2(Ωh)]d: KTh,vh|KNk;FFih [vh×n]F=0}

where RTk and Nk are respectively the Raviart-Thomas and Nédélec finite elements of degree k.

The Legendre and Dubiner basis yield implicitely discontinuous approximations, the Legendre and Dubiner boundary adapted basis, see~\cite MR1696933, are designed to handle continuous approximations whereas the Lagrange basis can yield either discontinuous or continuous (default behavior) approximations. RTh and Nh are implicitely spaces of vectorial functions f such that f:ΩhRdRd. As to the other basis functions, i.e. Lagrange, Legendre, Dubiner, etc., they are parametrized by their values namely Scalar, Vectorial or Matricial.

Products of function spaces must be supported. This is very powerful to describe complex multiphysics problems when coupled with operators, functionals and forms described in the next section. Extracting subspaces or component spaces are part of the interface.