Skip to content

[WIP] HDiv bases (Raviart-Thomas and Brezzi-Douglas-Marini) on cubes and simplices

Jakub Both requested to merge feature/raviart-thomas-basis-cubes into master

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

Merge request reports