Describe new/missing feature
The current mesh refinement module does not contain any algorithms for calculating the set of marked cells for subsequent
mesh refinement. In parallel this is non-trivial, and so I think it should be part of the library. Additionally, marking is a generic algorithm independent of the underlying PDE and error estimation strategy.
There is an interesting paper by Pfeiler and Praetorius on Dorfler marking in O(N) time with a C++ implementation which would work for us if it was refactored https://arxiv.org/pdf/1907.13078.pdf - however, I cannot find much in the literature about the parallel context where the naive algorithm would require a single rank having knowledge of all estimators.
Suggested user interface
The estimators are usually DG_0 so the interface could be ndarray/std::vector based.
Describe new/missing feature
The current mesh refinement module does not contain any algorithms for calculating the set of marked cells for subsequent
mesh refinement. In parallel this is non-trivial, and so I think it should be part of the library. Additionally, marking is a generic algorithm independent of the underlying PDE and error estimation strategy.
There is an interesting paper by Pfeiler and Praetorius on Dorfler marking in O(N) time with a C++ implementation which would work for us if it was refactored https://arxiv.org/pdf/1907.13078.pdf - however, I cannot find much in the literature about the parallel context where the naive algorithm would require a single rank having knowledge of all estimators.
Suggested user interface
The estimators are usually DG_0 so the interface could be ndarray/std::vector based.