An open API service indexing awesome lists of open source software.

https://github.com/fenics-dolfiny/dolfiny

High-level and convenience wrappers for DOLFINx, the FEniCS library.
https://github.com/fenics-dolfiny/dolfiny

fenicsproject petsc python

Last synced: 4 months ago
JSON representation

High-level and convenience wrappers for DOLFINx, the FEniCS library.

Awesome Lists containing this project

README

          

# `dolfiny`: high-level convenience wrappers for DOLFINx

The `dolfiny` package provides a set of high-level convenience wrappers for
[DOLFINx](https://github.com/FEniCS/dolfinx), the [FEniCS library](https://www.fenicsproject.org).

While DOLFINx involves many low-level operations - from handling ghosted values
to interfacing PETSc solvers directly - `dolfiny` serves as a wrapper around the
low-level functionality of DOLFINx and is meant to combine a user-oriented API
with the performance and functionality of DOLFINx, FFCx, Basix and UFL.

This library is written exclusively in Python with optional interfacing
to user-provided C++ kernels.

# Installation

```
pip install dolfiny
```

Certain functionality (see [demos](https://github.com/fenics-dolfiny/dolfiny/tree/main/demo) and
[unit tests](https://github.com/fenics-dolfiny/dolfiny/tree/main/test/)) relies on the availability
of external packages such as

- [Matplotlib](https://github.com/matplotlib/matplotlib) (plotting),
- [PyVista](https://github.com/pyvista/pyvista) (scientific visualisation), or
- [cppyy](https://github.com/wlav/cppyy) (dynamic Python/C++ bindings).

Install `dolfiny` with these dependencies by running
```
pip install dolfiny[all]
```

For ARM-based architectures (`aarch64`/`arm64` on Linux) we recommend to fallback to our
custom-compiled binary wheels for `vtk` and `cppyy-cling` by setting the
local package index repository in the respective environment variable
```
export PIP_INDEX_URL=https://gitlab.com/api/v4/projects/59503118/packages/pypi/simple
```
before calling `pip`.

You may also check the [Dockerfile](https://github.com/fenics-dolfiny/dolfiny/blob/main/docker/Dockerfile) for an up-to-date version of the installation process.

# Docker image

Multi-arch (`amd64` and `arm64`) Docker images with pre-installed `dolfiny` (and dependencies)
are available at [DockerHub](https://hub.docker.com/r/dolfiny/dolfiny).

```
docker pull dolfiny/dolfiny
```

# Documentation

Some of our demos are available as documented and rendered `jupyter notebooks` on our website at [dolfiny.uni.lu](https://dolfiny.uni.lu/).

Besides this, other references are [demos](https://github.com/fenics-dolfiny/dolfiny/tree/main/demo) or [unit tests](https://github.com/fenics-dolfiny/dolfiny/tree/main/test).

Presentations about `dolfiny` functionality:
- [dolfiny: Convenience wrappers for DOLFINx](https://hdl.handle.net/10993/47422)
at FEniCS 2021 conference,
- [Nonlinear analysis of thin-walled structures based on tangential differential calculus with FEniCSx](https://hdl.handle.net/10993/54222)
at FEniCS 2022 conference,
- [Nonlinear local solver](https://hdl.handle.net/10993/54223)
at FEniCS 2022 conference,
- [Non-standard formulations of 3D elasticity with FEniCSx](https://hdl.handle.net/10993/61399)
at FEniCS 2024 conference,
- [PETSc TAO support for optimisation problems with FEniCSx](https://hdl.handle.net/10993/65289)
at FEniCS 2025 conference,
- [Physical units in UFL](https://hdl.handle.net/10993/65288)
at FEniCS 2025 conference,
- [Dimensional analysis in UFL](https://hdl.handle.net/10993/65290)
at FEniCS 2025 conference,
- [Sequential quadratic and convex optimisation with FEniCSx and PETSc](https://hdl.handle.net/10993/65998)
at KLAIM 2025 conference.

# Authors

- Michal Habera, University of Luxembourg / Rafinex, Luxembourg
- Paul T. Kühner, University of Luxembourg, Luxembourg
- Andreas Zilian, University of Luxembourg, Luxembourg

# Contributing

We are always looking for contributions and help with `dolfiny`.
If you have ideas, nice applications or code contributions then we would
be happy to help you get them included.
We ask you to follow the FEniCS Project git workflow.

For more information and opportunities to get involved, see [here](https://dolfiny.uni.lu/getting-involved/).

# Issues and Support

Please use the GitHub issue tracker to report any issues.

# License

`dolfiny` 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.

`dolfiny` 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 `dolfiny`. If not, see .