FEniCS / FEniCS/dolfinx

Add Python demo for adaptive finite element method for linear problems

Open
#4,141 2 comments 0 reactions 2 assignees Claimed by @brodbeck-m View on GitHub
demo proposal
Dominant language
C++
Stars
1.2k
Forks
261
Avg merge
1d 15h
Merged PRs (30d)
65

Description

## Aims and Scope
FEniCSx by default supports most of the relevant parts for the design of adaptive finite element algorithms, such as mesh-independent form compilation, evaluating the (cell-wise) errors, refining the mesh and resolving the problem. Nevertheless, a comprehensive demo combining these features, as this was done in the [legacy version](https://olddocs.fenicsproject.org/dolfin/latest/python/demos/auto-adaptive-poisson/demo_auto-adaptive-poisson.py.html) as well as performant implementations of cell marking and interaction with (facet-based) refinement routines, is missing. This is also not covered by external demos including [fenicsx-error-estimation](https://github.com/jhale/fenicsx-error-estimation) or the [FEniCSx tutorials](https://jsdokken.com/dolfinx-tutorial/chapter2/amr.html)

## Planed features
As nearly every relevant error estimator is initially introduced for the Poisson problem, the demo will focus on the adaptive solution of a Poisson problem in both primal as well as mixed form. In order to keep the complexity of the actual error estimation low, residual-type error estimators (see e.g. Carstensen [1](https://doi.org/10.1016/j.camwa.2013.12.003)) are considered. The classical L-shaped domain or a unit square with varying coefficient [2](https://doi.org/10.1016/S0898-1221(03)90086-1) could serve as test problem.

## Prerequisites
For the marking routines we suggest to implement in C++:
- ~Convenience functionality to identify the closure of topological entities based on their connectivity to neighboring entities of different topological dimensions. This allows the conversion from cell-wise markers to an edge list or alike.~
- A scalable implementation of the classical maximum strategy [3](https://doi.org/10.1007/BF01389757) and Doerfler marking [4](https://doi.org/10.1137/0733054) to demonstrate their different behavior

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.