P1ElementwiseOperator with weak boundary conditions
The aim is to implement a new P1 elementwise operator which applies its boundary conditions weakly, similarly to DGOperator. This has the following requirements:
- A P1 Diffusion form which provides integrateFacetDirichletBoundary() (this exists already and is used for the ScalarP1WithDGFormOperator https://i10git.cs.fau.de/hyteg/hyteg/-/blob/master/src/hyteg/dgfunctionspace/ScalarP1WithDGFormOperator.hpp ) integrateFacetDirichletBoundary() is used to compute the boundary integral on the left side/operator of the weak form in the elementwise loop.
- An applyDirichletBoundaryCondition() within P1Function (similar to https://i10git.cs.fau.de/hyteg/hyteg/-/blob/master/src/hyteg/dgfunctionspace/DGFunction.cpp#L440 in DGFunction) which computes the corresponding boundary integral on the rhs and contains the boundary function as integrand.
- The collection of boundary/facet information like opposite vertex coordinates and normals is done by the ElementNeighborInfo object ( https://i10git.cs.fau.de/hyteg/hyteg/-/blob/master/src/hyteg/volumedofspace/VolumeDoFIndexing.hpp#L540 ), which now has to work also with vertexDoF data structures. The infos are necessary for the computation of the boundary integral. An alternative would be another ElementNeighborInfo for the vertexDoF space.
It would be best to implement the weak application of the boundary condition as an option such that the new elementwise operator can replace the old one afterwards.