Metadata-Version: 2.4
Name: bsplyne
Version: 1.0.1
Summary: N-dimensional B-spline library for numerical mechanics and geometry
Author-email: Dorian Bichet <dbichet@insa-toulouse.fr>
Project-URL: Homepage, https://github.com/Dorian210/bsplyne
Project-URL: Repository, https://github.com/Dorian210/bsplyne
Project-URL: Issues, https://github.com/Dorian210/bsplyne/issues
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)
Classifier: Topic :: Scientific/Engineering
Classifier: Intended Audience :: Science/Research
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: numpy>=1.20
Requires-Dist: numba>=0.55
Requires-Dist: scipy>=1.8
Requires-Dist: matplotlib>=3.5
Requires-Dist: meshio>=5.0
Requires-Dist: tqdm>=4.60
Provides-Extra: viz
Requires-Dist: pyvista>=0.41; extra == "viz"
Provides-Extra: dev
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Provides-Extra: docs
Requires-Dist: wkhtmltopdf; extra == "docs"
Requires-Dist: pdoc>=12.0; extra == "docs"
Dynamic: license-file

# bsplyne

<p align="center">
  <img src=docs/logo.png width="500" />
</p>

**bsplyne** is a Python library for working with N-dimensional B-splines. It implements the Cox-de Boor algorithm for basis evaluation, order elevation, knot insertion, and provides a connectivity class for multi-patch structures. Additionally, it includes visualization tools with export capabilities to Paraview.

## Installation

Since **bsplyne** is not yet on PyPI, you can install it locally as follows:

```bash
git clone https://github.com/Dorian210/bsplyne
cd bsplyne
pip install -e .
```

### Dependencies
Make sure you have the following dependencies installed:
- `numpy`
- `numba`
- `scipy`
- `matplotlib`
- `meshio`
- `tqdm`

## Main Modules

- **BSplineBasis**  
  Implements B-spline basis function evaluation using the Cox-de Boor recursion formula.
  
- **BSpline**  
  Provides methods for creating and manipulating N-dimensional B-splines, including order elevation and knot insertion.
  
- **MultiPatchBSplineConnectivity**  
  Manages the connectivity between multiple N-dimensional B-spline patches.
  
- **CouplesBSplineBorder** (less documented)  
  Handles coupling between B-spline borders.

## Examples

Several example scripts demonstrating the usage of **bsplyne** can be found in the `examples/` directory. These scripts cover:
- Basis evaluation on a curved line
- Plotting with Matplotlib
- Order elevation
- Knot insertion
- Surface examples
- Exporting to Paraview

## Documentation

The full API documentation is available in the `docs/` directory of the project or via the [online documentation portal](https://dorian210.github.io/bsplyne/).

## Contributions

At the moment, I am not actively reviewing contributions. However, if you encounter issues or have suggestions, feel free to open an issue.

## License

This project is licensed under the [CeCILL License](LICENSE.txt).

