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
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
A python tool give n number of inputs and parallelly you will get a output by separetely

http-status-finder Hello Everyone!! This is kavisurya, In this tool you can give n number of inputs and parallelly you will get a output by separetely

KAVISURYA V 3 Dec 05, 2021
A time table app to notify the user about their class timings

kivyTimeTable A time table app to notify the user about their class timings Features This project incorporates some features i wanted to see in a time

2 Dec 15, 2021
A Tool that provides automatic kerning for ligature based OpenType fonts in Microsoft Volt

Kerning A Tool that provides automatic kerning for ligature based OpenType fonts in Microsoft Volt There are three stages of the algorithm. The first

Sayed Zeeshan Asghar 6 Aug 01, 2022
A collection of tools for biomedical research assay analysis in Python.

waltlabtools A collection of tools for biomedical research assay analysis in Python. Key Features Analysis for assays such as digital ELISA, including

Tyler Dougan 1 Apr 18, 2022
RapidFuzz is a fast string matching library for Python and C++

RapidFuzz is a fast string matching library for Python and C++, which is using the string similarity calculations from FuzzyWuzzy

Max Bachmann 1.7k Jan 04, 2023
Basic loader is a small tool that will help you generating Cloudflare cookies

Basic Loader Cloudflare cookies loader This tool may help some people getting valide cloudflare cookies Installation 🔌 : pip install -r requirements.

IHateTomLrge 8 Mar 30, 2022
NFT-Generator is the best way to generate thousands of NFTs quick and easily with Python.

NFT-Generator is the best way to generate thousands of NFTs quick and easily with Python. Just add your files, set your configuration and run the scri

78 Dec 27, 2022
This project is a set of programs that I use to create a README.md file.

This project is a set of programs that I use to create a README.md file.

Tom Dörr 223 Dec 24, 2022
Stubmaker is an easy-to-use tool for generating python stubs.

Stubmaker is an easy-to-use tool for generating python stubs. Requirements Stubmaker is to be run under Python 3.7.4+ No side effects during

Toloka 24 Aug 28, 2022
Compute the fair market value (FMV) of staking rewards at time of receipt.

tendermint-tax A tool to help calculate the tax liability of staking rewards on Tendermint chains. Specifically, this tool calculates the fair market

5 Jan 07, 2022
Retrying is an Apache 2.0 licensed general-purpose retrying library, written in Python, to simplify the task of adding retry behavior to just about anything.

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

Ray Holder 1.9k Dec 29, 2022
Skywater 130nm Klayout Device Generators PDK

Skywaters 130nm Technology for KLayout Device Generators Mabrains is excited to share with you our Device Generator Library for Skywater 130nm PDK. It

Mabrains 18 Dec 14, 2022
iOS Snapchat parser for chats and cached files

ParseSnapchat iOS Snapchat parser for chats and cached files Tested on Windows and Linux install required libraries: pip install -r requirements.txt c

11 Dec 05, 2022
convert a dict-list object from / to a typed object(class instance with type annotation)

objtyping 带类型定义的对象转换器 由来 Python不是强类型语言,开发人员没有给数据定义类型的习惯。这样虽然灵活,但处理复杂业务逻辑的时候却不够方便——缺乏类型检查可能导致很难发现错误,在IDE里编码时也没

Song Hui 15 Dec 22, 2022
A Python package for floating-point binary fractions. Do math in base 2!

An implementation of a floating-point binary fractions class and module in Python. Work with binary fractions and binary floats with ease!

10 Oct 29, 2022
A simple and easy to use collection of random python functions.

A simple and easy to use collection of random python functions.

Diwan Mohamed Faheer 1 Nov 17, 2021
Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.

Lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity.

Lark - Parsing Library & Toolkit 3.5k Jan 05, 2023
Audio Steganography is a technique used to transmit hidden information by modifying an audio signal in an imperceptible manner.

Audio Steganography Audio Steganography is a technique used to transmit hidden information by modifying an audio signal in an imperceptible manner. Ab

Karan Yuvraj Singh 1 Oct 17, 2021
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