bsplyne 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- bsplyne-1.0.0/LICENSE.txt +70 -0
- bsplyne-1.0.0/MANIFEST.in +3 -0
- bsplyne-1.0.0/PKG-INFO +91 -0
- bsplyne-1.0.0/README.md +63 -0
- bsplyne-1.0.0/bsplyne/__init__.py +55 -0
- bsplyne-1.0.0/bsplyne/b_spline.py +2464 -0
- bsplyne-1.0.0/bsplyne/b_spline_basis.py +1000 -0
- bsplyne-1.0.0/bsplyne/geometries_in_3D.py +1193 -0
- bsplyne-1.0.0/bsplyne/multi_patch_b_spline.py +1731 -0
- bsplyne-1.0.0/bsplyne/my_wide_product.py +209 -0
- bsplyne-1.0.0/bsplyne/parallel_utils.py +378 -0
- bsplyne-1.0.0/bsplyne/save_utils.py +141 -0
- bsplyne-1.0.0/bsplyne.egg-info/PKG-INFO +91 -0
- bsplyne-1.0.0/bsplyne.egg-info/SOURCES.txt +21 -0
- bsplyne-1.0.0/bsplyne.egg-info/dependency_links.txt +1 -0
- bsplyne-1.0.0/bsplyne.egg-info/requires.txt +6 -0
- bsplyne-1.0.0/bsplyne.egg-info/top_level.txt +1 -0
- bsplyne-1.0.0/context.txt +77 -0
- bsplyne-1.0.0/setup.cfg +4 -0
- bsplyne-1.0.0/setup.py +21 -0
- bsplyne-1.0.0/tests/test_b_spline_advanced.py +131 -0
- bsplyne-1.0.0/tests/test_b_spline_basis.py +117 -0
- bsplyne-1.0.0/tests/test_b_spline_basis_advanced.py +170 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
|
|
2
|
+
CeCILL FREE SOFTWARE LICENSE AGREEMENT
|
|
3
|
+
|
|
4
|
+
Version 2.1 dated 2013-06-21
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Notice
|
|
8
|
+
|
|
9
|
+
This Agreement is a Free Software license agreement that is the result
|
|
10
|
+
of discussions between its authors in order to ensure compliance with
|
|
11
|
+
the two main principles guiding its drafting:
|
|
12
|
+
|
|
13
|
+
* firstly, compliance with the principles governing the distribution
|
|
14
|
+
of Free Software: access to source code, broad rights granted to users,
|
|
15
|
+
* secondly, the election of a governing law, French law, with which it
|
|
16
|
+
is conformant, both as regards the law of torts and intellectual
|
|
17
|
+
property law, and the protection that it offers to both authors and
|
|
18
|
+
holders of the economic rights over software.
|
|
19
|
+
|
|
20
|
+
The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
|
|
21
|
+
license are:
|
|
22
|
+
|
|
23
|
+
Commissariat à l'énergie atomique et aux énergies alternatives - CEA, a
|
|
24
|
+
public scientific, technical and industrial research establishment,
|
|
25
|
+
having its principal place of business at 25 rue Leblanc, immeuble Le
|
|
26
|
+
Ponant D, 75015 Paris, France.
|
|
27
|
+
|
|
28
|
+
Centre National de la Recherche Scientifique - CNRS, a public scientific
|
|
29
|
+
and technological establishment, having its principal place of business
|
|
30
|
+
at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
|
|
31
|
+
|
|
32
|
+
Institut National de Recherche en Informatique et en Automatique -
|
|
33
|
+
Inria, a public scientific and technological establishment, having its
|
|
34
|
+
principal place of business at Domaine de Voluceau, Rocquencourt, BP
|
|
35
|
+
105, 78153 Le Chesnay cedex, France.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
Preamble
|
|
39
|
+
|
|
40
|
+
The purpose of this Free Software license agreement is to grant users
|
|
41
|
+
the right to modify and redistribute the software governed by this
|
|
42
|
+
license within the framework of an open source distribution model.
|
|
43
|
+
|
|
44
|
+
The exercising of this right is conditional upon certain obligations for
|
|
45
|
+
users so as to preserve this status for all subsequent redistributions.
|
|
46
|
+
|
|
47
|
+
In consideration of access to the source code and the rights to copy,
|
|
48
|
+
modify and redistribute granted by the license, users are provided only
|
|
49
|
+
with a limited warranty and the software's author, the holder of the
|
|
50
|
+
economic rights, and the successive licensors only have limited liability.
|
|
51
|
+
|
|
52
|
+
In this respect, the risks associated with loading, using, modifying
|
|
53
|
+
and/or developing or reproducing the software by the user are brought to
|
|
54
|
+
the user's attention, given its Free Software status, which may make it
|
|
55
|
+
complicated to use, with the result that its use is reserved for
|
|
56
|
+
developers and experienced professionals having in-depth computer
|
|
57
|
+
knowledge. Users are therefore encouraged to load and test the
|
|
58
|
+
suitability of the software as regards their requirements in conditions
|
|
59
|
+
enabling the security of their systems and/or data to be ensured and,
|
|
60
|
+
more generally, to use and operate it in the same conditions of
|
|
61
|
+
security. This Agreement may be freely reproduced and published,
|
|
62
|
+
provided it is not altered, and that no provisions are either added or
|
|
63
|
+
removed herefrom.
|
|
64
|
+
|
|
65
|
+
This Agreement may apply to any or all software for which the holder of
|
|
66
|
+
the economic rights decides to submit the use thereof to its provisions.
|
|
67
|
+
|
|
68
|
+
Frequently asked questions can be found on the official website of the
|
|
69
|
+
CeCILL licenses family (http://www.cecill.info/index.en.html) for any
|
|
70
|
+
necessary clarification.
|
bsplyne-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: bsplyne
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A package for N dimensions B-splines.
|
|
5
|
+
Home-page: https://github.com/Dorian210/bsplyne
|
|
6
|
+
Author: Dorian Bichet
|
|
7
|
+
Author-email: dbichet@insa-toulouse.fr
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE.txt
|
|
13
|
+
Requires-Dist: numpy
|
|
14
|
+
Requires-Dist: numba
|
|
15
|
+
Requires-Dist: scipy
|
|
16
|
+
Requires-Dist: matplotlib
|
|
17
|
+
Requires-Dist: meshio
|
|
18
|
+
Requires-Dist: tqdm
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: author-email
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
Dynamic: requires-dist
|
|
27
|
+
Dynamic: summary
|
|
28
|
+
|
|
29
|
+
# bsplyne
|
|
30
|
+
|
|
31
|
+
<p align="center">
|
|
32
|
+
<img src=docs/logo.png width="500" />
|
|
33
|
+
</p>
|
|
34
|
+
|
|
35
|
+
**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.
|
|
36
|
+
|
|
37
|
+
## Installation
|
|
38
|
+
|
|
39
|
+
Since **bsplyne** is not yet on PyPI, you can install it locally as follows:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
git clone https://github.com/Dorian210/bsplyne
|
|
43
|
+
cd bsplyne
|
|
44
|
+
pip install -e .
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Dependencies
|
|
48
|
+
Make sure you have the following dependencies installed:
|
|
49
|
+
- `numpy`
|
|
50
|
+
- `numba`
|
|
51
|
+
- `scipy`
|
|
52
|
+
- `matplotlib`
|
|
53
|
+
- `meshio`
|
|
54
|
+
- `tqdm`
|
|
55
|
+
|
|
56
|
+
## Main Modules
|
|
57
|
+
|
|
58
|
+
- **BSplineBasis**
|
|
59
|
+
Implements B-spline basis function evaluation using the Cox-de Boor recursion formula.
|
|
60
|
+
|
|
61
|
+
- **BSpline**
|
|
62
|
+
Provides methods for creating and manipulating N-dimensional B-splines, including order elevation and knot insertion.
|
|
63
|
+
|
|
64
|
+
- **MultiPatchBSplineConnectivity**
|
|
65
|
+
Manages the connectivity between multiple N-dimensional B-spline patches.
|
|
66
|
+
|
|
67
|
+
- **CouplesBSplineBorder** (less documented)
|
|
68
|
+
Handles coupling between B-spline borders.
|
|
69
|
+
|
|
70
|
+
## Examples
|
|
71
|
+
|
|
72
|
+
Several example scripts demonstrating the usage of **bsplyne** can be found in the `examples/` directory. These scripts cover:
|
|
73
|
+
- Basis evaluation on a curved line
|
|
74
|
+
- Plotting with Matplotlib
|
|
75
|
+
- Order elevation
|
|
76
|
+
- Knot insertion
|
|
77
|
+
- Surface examples
|
|
78
|
+
- Exporting to Paraview
|
|
79
|
+
|
|
80
|
+
## Documentation
|
|
81
|
+
|
|
82
|
+
The full API documentation is available in the `docs/` directory of the project or via the [online documentation portal](https://dorian210.github.io/bsplyne/).
|
|
83
|
+
|
|
84
|
+
## Contributions
|
|
85
|
+
|
|
86
|
+
At the moment, I am not actively reviewing contributions. However, if you encounter issues or have suggestions, feel free to open an issue.
|
|
87
|
+
|
|
88
|
+
## License
|
|
89
|
+
|
|
90
|
+
This project is licensed under the [CeCILL License](LICENSE.txt).
|
|
91
|
+
|
bsplyne-1.0.0/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# bsplyne
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src=docs/logo.png width="500" />
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
**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.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
Since **bsplyne** is not yet on PyPI, you can install it locally as follows:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
git clone https://github.com/Dorian210/bsplyne
|
|
15
|
+
cd bsplyne
|
|
16
|
+
pip install -e .
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Dependencies
|
|
20
|
+
Make sure you have the following dependencies installed:
|
|
21
|
+
- `numpy`
|
|
22
|
+
- `numba`
|
|
23
|
+
- `scipy`
|
|
24
|
+
- `matplotlib`
|
|
25
|
+
- `meshio`
|
|
26
|
+
- `tqdm`
|
|
27
|
+
|
|
28
|
+
## Main Modules
|
|
29
|
+
|
|
30
|
+
- **BSplineBasis**
|
|
31
|
+
Implements B-spline basis function evaluation using the Cox-de Boor recursion formula.
|
|
32
|
+
|
|
33
|
+
- **BSpline**
|
|
34
|
+
Provides methods for creating and manipulating N-dimensional B-splines, including order elevation and knot insertion.
|
|
35
|
+
|
|
36
|
+
- **MultiPatchBSplineConnectivity**
|
|
37
|
+
Manages the connectivity between multiple N-dimensional B-spline patches.
|
|
38
|
+
|
|
39
|
+
- **CouplesBSplineBorder** (less documented)
|
|
40
|
+
Handles coupling between B-spline borders.
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
Several example scripts demonstrating the usage of **bsplyne** can be found in the `examples/` directory. These scripts cover:
|
|
45
|
+
- Basis evaluation on a curved line
|
|
46
|
+
- Plotting with Matplotlib
|
|
47
|
+
- Order elevation
|
|
48
|
+
- Knot insertion
|
|
49
|
+
- Surface examples
|
|
50
|
+
- Exporting to Paraview
|
|
51
|
+
|
|
52
|
+
## Documentation
|
|
53
|
+
|
|
54
|
+
The full API documentation is available in the `docs/` directory of the project or via the [online documentation portal](https://dorian210.github.io/bsplyne/).
|
|
55
|
+
|
|
56
|
+
## Contributions
|
|
57
|
+
|
|
58
|
+
At the moment, I am not actively reviewing contributions. However, if you encounter issues or have suggestions, feel free to open an issue.
|
|
59
|
+
|
|
60
|
+
## License
|
|
61
|
+
|
|
62
|
+
This project is licensed under the [CeCILL License](LICENSE.txt).
|
|
63
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""
|
|
2
|
+
.. include:: ../README.md
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from bsplyne.b_spline_basis import BSplineBasis
|
|
6
|
+
|
|
7
|
+
# BSplineBasis.__module__ = "bsplyne.b_spline_basis"
|
|
8
|
+
from bsplyne.b_spline import BSpline
|
|
9
|
+
|
|
10
|
+
# BSpline.__module__ = "bsplyne.b_spline"
|
|
11
|
+
from bsplyne.multi_patch_b_spline import (
|
|
12
|
+
MultiPatchBSplineConnectivity,
|
|
13
|
+
CouplesBSplineBorder,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
# MultiPatchBSplineConnectivity.__module__ = "bsplyne.multi_patch_b_spline"
|
|
17
|
+
# CouplesBSplineBorder.__module__ = "bsplyne.multi_patch_b_spline"
|
|
18
|
+
from bsplyne.geometries_in_3D import (
|
|
19
|
+
scale_rotate_translate,
|
|
20
|
+
new_quarter_circle,
|
|
21
|
+
new_circle,
|
|
22
|
+
new_disk,
|
|
23
|
+
new_degenerated_disk,
|
|
24
|
+
new_quarter_pipe,
|
|
25
|
+
new_pipe,
|
|
26
|
+
new_quarter_cylinder,
|
|
27
|
+
new_cylinder,
|
|
28
|
+
new_degenerated_cylinder,
|
|
29
|
+
new_closed_circle,
|
|
30
|
+
new_closed_disk,
|
|
31
|
+
new_closed_pipe,
|
|
32
|
+
new_closed_cylinder,
|
|
33
|
+
new_quarter_strut,
|
|
34
|
+
new_cube,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# scale_rotate_translate.__module__ = "bsplyne.geometries_in_3D"
|
|
38
|
+
# new_quarter_circle.__module__ = "bsplyne.geometries_in_3D"
|
|
39
|
+
# new_circle.__module__ = "bsplyne.geometries_in_3D"
|
|
40
|
+
# new_disk.__module__ = "bsplyne.geometries_in_3D"
|
|
41
|
+
# new_degenerated_disk.__module__ = "bsplyne.geometries_in_3D"
|
|
42
|
+
# new_quarter_pipe.__module__ = "bsplyne.geometries_in_3D"
|
|
43
|
+
# new_pipe.__module__ = "bsplyne.geometries_in_3D"
|
|
44
|
+
# new_quarter_cylinder.__module__ = "bsplyne.geometries_in_3D"
|
|
45
|
+
# new_cylinder.__module__ = "bsplyne.geometries_in_3D"
|
|
46
|
+
# new_degenerated_cylinder.__module__ = "bsplyne.geometries_in_3D"
|
|
47
|
+
# new_closed_circle.__module__ = "bsplyne.geometries_in_3D"
|
|
48
|
+
# new_closed_disk.__module__ = "bsplyne.geometries_in_3D"
|
|
49
|
+
# new_closed_pipe.__module__ = "bsplyne.geometries_in_3D"
|
|
50
|
+
# new_closed_cylinder.__module__ = "bsplyne.geometries_in_3D"
|
|
51
|
+
# new_quarter_strut.__module__ = "bsplyne.geometries_in_3D"
|
|
52
|
+
# new_cube.__module__ = "bsplyne.geometries_in_3D"
|
|
53
|
+
from bsplyne.parallel_utils import parallel_blocks
|
|
54
|
+
|
|
55
|
+
# parallel_blocks.__module__ = "bsplyne.parallel_utils"
|