Metadata-Version: 2.1
Name: scifem
Version: 0.3.1
Summary: Scientific tools for finite element methods
Author-Email: =?utf-8?q?J=C3=B8rgen_S=2E_Dokken?= <dokken@simula.no>, "Henrik N.T. Finsberg" <henriknf@simula.no>
License: MIT License
        
        Copyright (c) 2024 Scientific Computing at Simula Research Laboratory
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
Project-URL: Repository, https://github.com/scientificcomputing/scifem.git
Requires-Python: >=3.10
Requires-Dist: fenics-dolfinx
Requires-Dist: numpy
Requires-Dist: packaging
Requires-Dist: h5py; extra == "h5py"
Requires-Dist: adios2; extra == "adios2"
Requires-Dist: jupyter-book; extra == "docs"
Requires-Dist: jupytext; extra == "docs"
Requires-Dist: pyvista[jupyter]; extra == "docs"
Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: bump-my-version; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pytest; extra == "test"
Requires-Dist: petsc4py; extra == "test"
Requires-Dist: h5py; extra == "test"
Requires-Dist: scifem[audio2,dev,docs,h5py,test]; extra == "all"
Provides-Extra: h5py
Provides-Extra: adios2
Provides-Extra: docs
Provides-Extra: dev
Provides-Extra: test
Provides-Extra: all
Description-Content-Type: text/markdown

# Scientific Computing Tools for Finite Element Methods

This package contains a collection of tools for scientific computing with a focus on finite element methods. The tools are written in Python and are intended to be used in conjunction with the [dolfinx](https://github.com/FEniCS/dolfinx).

Many users that are transitioning from legacy FEniCS to FEniCSx may find the transition difficult due to the lack of some functionalities in FEniCSx.
This package aims to provide some of the functionalities that are missing in FEniCSx.
The package is still in its early stages and many functionalities are still missing.

## Features

- Real-space implementation for usage in DOLFINx (>=v0.8.0)
- Save quadrature functions as point clouds
- Save any function that can tabulate dof coordinates as point clouds.
- Point sources for usage in DOLFINx (>=v0.8.0)
  - Point sources in vector spaces are only supported on v0.9.0, post [DOLFINx PR 3429](https://github.com/FEniCS/dolfinx/pull/3429).
    For older versions, apply one point source in each sub space.
- Simplified wrapper to create MeshTags based on a list of tags and corresponding locator functions.
- Maps between degrees of freedom and vertices: `vertex_to_dofmap` and `dof_to_vertex`
- Blocked Newton Solver
- Function evaluation at specified points

## Installation

The package is partly written in C++ and relies on `dolfinx`. User are encouraged to install `scifem` with `pip` in an environment where `dolfinx` is already installed or with `conda`.

### `pip`
To install the package with `pip` run

```bash
python3 -m pip install scifem --no-build-isolation
```

To install the development version you can run

```bash
python3 -m pip install --no-build-isolation git+https://github.com/scientificcomputing/scifem.git
```

Note that you should pass the flag `--no-build-isolation` to `pip` to avoid issues with the build environment, such as incompatible versions of `nanobind`.

### `conda`

To install the package with `conda` run

```bash
conda install -c conda-forge scifem
```





## Having issues or want to contribute?

If you are having issues, feature request or would like to contribute, please let us know. You can do so by opening an issue on the [issue tracker](https://github.com/scientificcomputing/scifem/issues).
