[WIP] HDiv bases (Raviart-Thomas and Brezzi-Douglas-Marini) on cubes and simplices
First drafts for HDiv finite element bases are added. A Raviart-Thomas basis and a Brezzi-Douglas-Marini basis are added in the fashion of PQkNodaBasis. Additionally a test case is provided (Poisson equation discretized by RT(k) x P(k) and BDM(k+1) x P(k) elements in 2 and 3 dimensions).
Based on the Poisson test case:
- Working: 2D: RT0 x P0, RT1 x P1, BDM1 x P0, BDM2 x P1 -- 3D: RT0 x P0, RT1 x P1.
- Not working: 2D: RT2 x P2 (solver does not converge) -- 3D: BDM1 x P0 (no interpolation provided by dune-localfunctions).
There are (at least) three issues:
- The current implementation requires an extension of dune-localfunctions. The evaluation of LocalFunction depends on the type of the finite elements, as, e.g., using non-standard finite elements as HDiv or HCurl finite elements requires a transformation when evaluating the function. We suggest the classification of H, HDiv and HCurl elements is done by dune-localfunctions.
- LocalFunction has been extended allowing now to evaluate the derivative. Here, the output format has to be discussed. A example test case is implemented (examples/derivative-test.cc) which does not run under the current implementation. In order to fix this, some lines of code have to be exchanged/uncommented in discreteglobalbasisfunction.hh.
- Setting BC via the interpolation mechanism as performed for PQk elements (see e.g. examples/poisson-pq2.cc) does not work yet. Setting BC for HDiv elements requires the scaling by the element length which is not provided by the current interpolation.
Edited by Jakub Both