Metadata-Version: 2.4
Name: dolfiny
Version: 0.10.0
Summary: High-level and convenience wrappers for DOLFINx, the FEniCS library.
Author-email: Andreas Zilian <andreas.zilian@uni.lu>, Michal Habera <michal.habera@gmail.com>, "Paul T. Kühner" <paul.kuehner@uni.lu>
Project-URL: repository, https://github.com/fenics-dolfiny/dolfiny
Requires-Python: >=3.10.0
Description-Content-Type: text/markdown
License-File: COPYING
License-File: COPYING.LESSER
Requires-Dist: fenics-dolfinx<0.11.0,>=0.10.0
Provides-Extra: dev
Requires-Dist: dolfiny[typing]; extra == "dev"
Requires-Dist: typos<1.39.0,>=1.38.1; extra == "dev"
Requires-Dist: ruff<0.15.0,>=0.14.1; extra == "dev"
Requires-Dist: pdbpp<0.12.0,>=0.11.7; extra == "dev"
Provides-Extra: vis
Requires-Dist: matplotlib<3.11.0,>=3.10.7; extra == "vis"
Requires-Dist: pyvista[jupyter]<0.47.0,>=0.46.3; extra == "vis"
Provides-Extra: jit
Requires-Dist: numba<0.63.0,>=0.62.1; extra == "jit"
Requires-Dist: cppyy<3.6.0,>=3.1.0; extra == "jit"
Provides-Extra: test
Requires-Dist: dolfiny[jit,vis]; extra == "test"
Requires-Dist: pytest-xdist<3.9.0,>=3.8.0; extra == "test"
Requires-Dist: coverage<7.12,>=7.11.0; extra == "test"
Requires-Dist: scipy<1.17.0,>=1.16.2; extra == "test"
Provides-Extra: demo
Requires-Dist: dolfiny[jit,vis]; extra == "demo"
Requires-Dist: imageio<2.38.0,>=2.37.0; extra == "demo"
Provides-Extra: typing
Requires-Dist: mypy<1.19.0,>=1.18.2; extra == "typing"
Provides-Extra: book
Requires-Dist: dolfiny[vis]; extra == "book"
Requires-Dist: jupytext<1.19.0,>=1.18.1; extra == "book"
Requires-Dist: jupyter-book>=v2.0.0b2; extra == "book"
Requires-Dist: jupyter<1.2.0,>=1.1.1; extra == "book"
Provides-Extra: units
Requires-Dist: sympy<1.15.0,>=1.14.0; extra == "units"
Requires-Dist: pygraphviz<1.15,>=1.14; extra == "units"
Provides-Extra: all
Requires-Dist: dolfiny[book,demo,dev,test,typing,units]; extra == "all"
Dynamic: license-file

# dolfiny: high-level and convenience wrappers for DOLFINx

The `dolfiny` package provides a set of high-level and 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](demo/) and [unit tests](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](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

In preparation.

In the meantime please check available [demos](demo/) or [unit tests](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.

# 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 <http://www.gnu.org/licenses/>.
