Skip to main content

A finite element method on meshes with curvilinear and multiply connected cells.

Project description

Punctured FEM

https://github.com/samreynoldsmath/PuncturedFEM

An approximate solution to $-\Delta u + u = 1$ on a rectangle with a zero Dirichlet boundary condition. The mesh consists of 11 cells, 5 of which are multiply connected, and all have curvilinear boundaries. See examples/ex2-pacman-fem.ipynb.

Description

A finite element method on meshes with curvilinear and multiply connected cells.

One might call the method a "nonvirtual virtual element method" because it uses the same function spaces as the virtual element method [1], but works with basis functions directly, rather than projecting them and introducing stabilization terms.

One advantage of our approach is the ability to find values of the basis functions (and therefore the finite element solution) in the interior of mesh cells, not just on the mesh skeleton. However, all essential calculations (such as entries of the stiffness and mass matrices) are occur entirely on cell boundaries, using single-dimensional quadrature.

A disadvantage of our approach is that it is currently limited to planar domains. This is because we are able to exploit some results from complex analysis to compute the basis functions and their derivatives.

Given a mesh cell $K \in \mathcal{T}$, the local Poisson space $V_p(K)$ consists of $v \in H^1(K)$ such that:

  • the Laplacian $\Delta v$ is a polynomial of degree at most $p-2$ on $K$,
  • the trace $v|_{\partial K}$ on the boundary of the mesh cell is continuous, and
  • the restriction $v|_{e}$ to each edge $e$ of the mesh cell is the trace a polynomial of degree at most $p$.

One may see that $V_p(K)$ contains the space of polynomials of degree at most $p$ on $K$, but is typically a much richer space. The global Poisson space $V_p(\mathcal{T})$ is the space of continuous functions $v \in H^1(\Omega)$ such that $v|_K \in V_p(K)$ for all $K \in \mathcal{T}$, where $\mathcal{T}$ is a mesh of the domain $\Omega$.

A discussion of the method, including interpolation estimates, is given in [3]. A method of computing $L^2$ inner products and $H^1$ semi-inner products of functions in $V_p(K)$, with $K$ simply connected, is given in [2,4]. The multiply connected case is discussed in [5].

Examples used in publications

References

Installation

This package is available on PyPI, and can be installed with pip:

pip install puncturedfem

Dependencies

This project requires Python 3.9 or higher and uses the following packages:

Furthermore, this repo contains examples presented with Jupyter notebooks.

Usage

Contributors

Affiliation

(1) Fariborz Maseeh Department of Mathematics and Statistics, Portland State University

Acknowledgements

Funding for this project was provided by the National Science Foundation through:

  • NSF grant DMS-2012285
  • NSF RTG grant DMS-2136228

Disclaimers

This package is an experimental prototype.

  • It is unlikely to be suitable for production use.
  • It is under heavy development, which may sometimes result in breaking changes.

License (GPLv3)

Copyright (C) 2022 - 2024, Jeffrey S. Ovall and Samuel E. Reynolds.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU 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 General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

puncturedfem-0.5.0.tar.gz (95.5 kB view details)

Uploaded Source

Built Distribution

puncturedfem-0.5.0-py3-none-any.whl (122.3 kB view details)

Uploaded Python 3

File details

Details for the file puncturedfem-0.5.0.tar.gz.

File metadata

  • Download URL: puncturedfem-0.5.0.tar.gz
  • Upload date:
  • Size: 95.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.9.7-arch1-1

File hashes

Hashes for puncturedfem-0.5.0.tar.gz
Algorithm Hash digest
SHA256 85aedaf9b279079024be940fca856f29a7781eb4147cca1a3a7068c959a0d705
MD5 3632fe3d56090865968e30223b97aa49
BLAKE2b-256 f479f32ff614faead30ab65cc364541d51c2c44b456bf9f81ac179611f4aaa72

See more details on using hashes here.

File details

Details for the file puncturedfem-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: puncturedfem-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 122.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.9.7-arch1-1

File hashes

Hashes for puncturedfem-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 066032caa2feddf17c5bffd6377d67fa2f4051e0eb9ea573b2cd5fe24e6d9dfb
MD5 c3d3385cbed68ed0e7ee606ba6643639
BLAKE2b-256 443c37efbefd0ef0d4e120f0cedb2d9b7f8b39c8ca6f4dbe57c1531603976af0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page