Implicit hierarchical a posteriori error estimates in FEniCSx

Overview

FEniCSx Error Estimation (FEniCSx-EE)

Description

FEniCSx-EE is an open source library showing how various error estimation strategies can be implemented in the FEniCSx Project finite element solver (https://fenicsproject.org). A particular focus is on implicit hierarchical a posteriori error estimators, that usually involve solving local error problems in special finite element spaces on cells of the mesh.

FEniCSx-EE is described in the pre-print:

Hierarchical a posteriori error estimation of Bank-Weiser type in the FEniCS Project, R. Bulle, J. S. Hale, A. Lozinski, S. P. A. Bordas, F. Chouly, (https://arxiv.org/abs/2102.04360).

FEniCS-EE is compatible with the development version of the FEniCSx Project (https://github.com/FEniCS).

A version for FEniCS 2019.1.0 is available at (https://github.com/rbulle/fenics-error-estimation).

Features

FEniCS-EE currently includes implementations of the following error estimation techniques for the Poisson problem:

  • Implicit residual estimator of Bank and Weiser.

Upcoming features

  • Implicit residual estimator of Verfürth,

the following error estimation techniques for the incompressible elasticity problem:

and the following error estimation techniques for the Stokes problem:

The following marking strategies:

  • Maximum (bulk),
  • Dörfler (equilibration).

Getting started

  1. Then, clone this repository using the command:

    git clone https://github.org/jhale/fenicsx-error-estimation
    
  2. We currently require a custom build of FEniCSx:

    cd docker
    ./build-images.sh
    cd ../
    ./launch-container.sh
    
  3. You should now have a shell inside a container with FEniCS installed. Try out an example:

    python3 setup.py install
    cd demo/pure_dirichlet
    python3 demo_pure-dirichlet.py
    

    The resulting fields are written to the directory output/ which will be shared with the host machine. These files can be opened using Paraview.

Automated testing

We use GitHub Actions to perform automated testing. All documented demos include basic sanity checks on the results.

FAQ

TODO

Citing

Please consider citing the FEniCS-EE paper and code if you find it useful.

@misc{bulle2021hierarchical,
    title={Hierarchical a posteriori error estimation of Bank-Weiser type in the FEniCS Project},
    author={Raphaël Bulle and Jack S. Hale and Alexei Lozinski and Stéphane P. A. Bordas and Franz Chouly},
    year={2021},
    eprint={2102.04360},
    archivePrefix={arXiv},
    primaryClass={math.NA}
}

@misc{bulle_fenics-ee_2019,
      title = {{FEniCS} {Error} {Estimation} {(FEniCS-EE)}},
      author = {Bulle, Raphaël, and Hale, Jack S.},
      month = jan,
      year = {2019},
      doi = {10.6084/m9.figshare.10732421},
      keywords = {FEniCS, finite element methods, error estimation},
}

along with the appropriate general FEniCS citations.

Issues and Support

Please use the issue tracker to report any issues.

Authors (alphabetical)

Raphaël Bulle, University of Luxembourg, Luxembourg.
Jack S. Hale, University of Luxembourg, Luxembourg.

License

FEniCSx-EE is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with FEniCSx-EE. If not, see http://www.gnu.org/licenses/.

Owner
Jack S. Hale
Research Scientist in Computational Engineering at University of Luxembourg. FEniCS Project Steering Council Member.
Jack S. Hale
Software to help automate collecting crowdsourced annotations using Mechanical Turk.

Video Crowdsourcing Software to help automate collecting crowdsourced annotations using Mechanical Turk. The goal of this project is to enable crowdso

Mike Peven 1 Oct 25, 2021
A pythonic dependency injection library.

Pinject Pinject is a dependency injection library for python. The primary goal of Pinject is to help you assemble objects into graphs in an easy, main

Google 1.3k Dec 30, 2022
NetConfParser is a tool that helps you analyze the rpcs coming and going from a netconf client to a server

NetConfParser is a tool that helps you analyze the rpcs coming and going from a netconf client to a server

Aero 1 Mar 31, 2022
Python based utilities for interacting with digital multimeters that are built on the FS9721-LP3 chipset.

Python based utilities for interacting with digital multimeters that are built on the FS9721-LP3 chipset.

Fergus 1 Feb 02, 2022
Helper script to bootstrap a Python environment with the tools required to build and install packages.

python-bootstrap Helper script to bootstrap a Python environment with the tools required to build and install packages. Usage $ python -m bootstrap.bu

Filipe Laíns 7 Oct 06, 2022
Retrying library for Python

Tenacity Tenacity is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just

Julien Danjou 4.3k Jan 05, 2023
ZX Spectrum Utilities: (zx-spectrum-utils)

Here are a few utility programs that can be used with the zx spectrum. The ZX Spectrum is one of the first home computers from the early 1980s.

Graham Oakes 4 Mar 07, 2022
A python module to validate input.

A python module to validate input.

Matthias 6 Sep 13, 2022
Exports the local variables into a global dictionary for later debugging.

PyExfiltrator Julia’s @exfiltrate for Python; Exports the local variables into a global dictionary for later debugging. Installation pip install pyexf

6 Nov 07, 2022
A work in progress box containing various Python utilities

python-wipbox A set of modern Python libraries under development to simplify the execution of reusable routines by different projects. Table of Conten

Deepnox 2 Jan 20, 2022
Create a Web Component (a Custom Element) from a python file

wyc Create a Web Component (a Custom Element) from a python file (transpile python code to javascript (es2015)). Features Use python to define your cu

7 Oct 09, 2022
Aurin - A quick AUR installer for Arch Linux. Install packages from AUR website in a click.

Aurin - A quick AUR installer for Arch Linux. Install packages from AUR website in a click.

Suleman 51 Nov 04, 2022
Nmap script to guess* a GitLab version.

gitlab-version-nse Nmap script to guess* a GitLab version. Usage https://github.com/righel/gitlab-version-nse cd gitlab-version-nse nmap target --s

Luciano Righetti 120 Dec 05, 2022
Here, I find the Fibonacci Series using python

Fibonacci-Series-using-python Here, I find the Fibonacci Series using python Requirements No Special Requirements Contribution I have strong belief on

Sachin Vinayak Dabhade 4 Sep 24, 2021
This code renames subtitle file names to your video files names, so you don't need to rename them manually.

Rename Subtitle This code renames your subtitle file names to your video file names so you don't need to do it manually Note: It only works for series

Mostafa Kazemi 4 Sep 12, 2021
Color getter (including method to get random color or complementary color) made out of Python

python-color-getter Color getter (including method to get random color or complementary color) made out of Python Setup pip3 install git+https://githu

Jung Gyu Yoon 2 Sep 17, 2022
Extends the pyranges module with operations on joined genomic intervals

tiedpyranges Extends the pyranges module with operations on joined genomic intervals (e.g. exons of same transcript) Install with: pip install tiedpyr

Marco Mariotti 4 Aug 05, 2022
kawadi is a versatile tool that used as a form of weapon and is used to cut, shape and split wood.

kawadi kawadi (કવાડિ in Gujarati) (Axe in English) is a versatile tool that used as a form of weapon and is used to cut, shape and split wood. kawadi

Jay Vala 2 Jan 10, 2022
A functional standard library for Python.

Toolz A set of utility functions for iterators, functions, and dictionaries. See the PyToolz documentation at https://toolz.readthedocs.io LICENSE New

4.1k Dec 30, 2022
Simple integer-valued time series bit packing

Smahat allows to encode a sequence of integer values using a fixed (for all values) number of bits but minimal with regards to the data range. For example: for a series of boolean values only one bit

Ghiles Meddour 7 Aug 27, 2021