Shared forms for DG and CG
DG forms are currently carrying multiple methods for the integration of
- volumes
- inner facets (coupling of element with itself)
- outer facets (coupling of element with neighbor element)
- domain boundary facets
- integration for facet contributions required for Dirichlet boundaries
The volume integrals are identical for conforming elements if the same basis functions are chosen (which is currently always the case as we are using Lagrangian polynomials for both discretizations).
Thus it may be convenient to either
- wrap the forms for conforming discretizations as a "special case" of the non-conforming version
- replace the old interface altogether
Something similar to a wrapper is already available for DG forms that only involve volume integrals (e.g. mass):
Note that the DGOperator uses the virtual method onlyVolumeIntegrals()
to check if facet integrals can be skipped, see:
So even the DGOperator already checks if facet integration is necessary during run time.
This refactoring could unify the form interface and remove the "special" DG forms.
At the same time we could get rid of some of the Point3D
related code.