Metadata-Version: 2.4
Name: RBniCSx
Version: 0.1.1
Summary: Reduced order modelling in FEniCSx
Author-Email: Francesco Ballarin <francesco.ballarin@unicatt.it>
Maintainer-Email: Francesco Ballarin <francesco.ballarin@unicatt.it>
License-Expression: LGPL-3.0-or-later
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Project-URL: homepage, https://www.rbnicsproject.org
Project-URL: repository, https://github.com/RBniCS/RBniCSx
Project-URL: issues, https://github.com/RBniCS/RBniCSx/issues
Project-URL: funding, https://github.com/sponsors/francesco-ballarin
Requires-Python: >=3.11
Requires-Dist: mpi4py
Requires-Dist: numpy>=1.21.0
Requires-Dist: petsc4py
Requires-Dist: plum-dispatch
Requires-Dist: slepc4py
Provides-Extra: backends
Requires-Dist: fenics-dolfinx>=0.11.0; extra == "backends"
Requires-Dist: io4dolfinx[h5py]>=1.3.0; extra == "backends"
Provides-Extra: docs
Requires-Dist: sphinx; extra == "docs"
Provides-Extra: lint
Requires-Dist: clang-format; extra == "lint"
Requires-Dist: cmakelang; extra == "lint"
Requires-Dist: isort; extra == "lint"
Requires-Dist: mypy; extra == "lint"
Requires-Dist: nbqa; extra == "lint"
Requires-Dist: ruff; extra == "lint"
Requires-Dist: yamllint; extra == "lint"
Provides-Extra: tests
Requires-Dist: coverage[toml]; extra == "tests"
Requires-Dist: nbvalx[unit-tests]; extra == "tests"
Requires-Dist: pytest; extra == "tests"
Requires-Dist: scipy; extra == "tests"
Provides-Extra: tutorials
Requires-Dist: gmsh; extra == "tutorials"
Requires-Dist: nbvalx[notebooks]>=0.4.0; extra == "tutorials"
Requires-Dist: plotly; extra == "tutorials"
Requires-Dist: rbnicsx[backends]; extra == "tutorials"
Requires-Dist: viskex[backend-dolfinx]; extra == "tutorials"
Description-Content-Type: text/markdown

## RBniCSx - reduced order modelling in FEniCSx ##

**RBniCSx** contains an implementation in **FEniCSx** of several reduced order modelling techniques for parametrized problems. **RBniCSx** is still at a very early development stage compared to legacy **RBniCS**, and many features are presently missing.

**RBniCSx** is currently developed and maintained at [Università Cattolica del Sacro Cuore](https://www.unicatt.it/) by [Prof. Francesco Ballarin](https://www.francescoballarin.it).

Like all core **FEniCSx** components, **RBniCSx** is freely available under the GNU LGPL, version 3.

### Prerequisites

**RBniCSx** has a few build dependencies that must be installed manually. Follow the appropriate instructions below based on how [`dolfinx`](https://github.com/FEniCS/dolfinx) was installed.

#### If `dolfinx` was installed via conda

```console
conda install -c conda-forge nanobind scikit-build-core
```

#### If `dolfinx` was installed via apt

```console
apt install python3-nanobind python3-scikit-build-core
```

#### If `dolfinx` was installed via Docker or built from source

```console
python3 -m pip install nanobind scikit-build-core[pyproject]
```

### Installation

**RBniCSx** is available on PyPI. Use `pip` extras to install additional dependencies needed for the tutorials.

```console
python3 -m pip install --no-build-isolation 'rbnicsx[backends,tutorials]'
```

### Running tutorials

Tutorials are parameterized, meaning that `01_thermal_block.ipynb` actually contains several cases, e.g. `01_thermal_block[reduction_method=POD Galerkin,online_efficient=True].ipynb` and `01_thermal_block[reduction_method=Reduced Basis,online_efficient=True].ipynb`.
To run the tutorials, first clone the **RBniCSx** repository. Then, ensure you check out the tag that corresponds to the version of **RBniCSx** currently installed. Finally, generate all tutorials according to the parameterization.

```console
git clone https://github.com/RBniCS/RBniCSx.git
cd RBniCSx
RBNICSX_VERSION=$(python3 -c "import rbnicsx; print(rbnicsx.__version__)")
git checkout ${RBNICSX_VERSION}
cd tutorials
python3 generate_tutorials.py
```
