diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index e93be6388..d1ca036b2 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -29,6 +29,7 @@ jobs: - name: build docs run: | pip install -r ./docs/requirements.txt + python docs/source/handle_markdown.py sphinx-build -W -b html docs/source docs/build -j auto - name: deploy docs only if it is pushed to main diff --git a/.gitignore b/.gitignore index e5705e988..8d55e5683 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ # Ignore build directories **/build/ +docs/md +docs/source/_generated # Ignore python specific file and directories **/*.egg-info/ diff --git a/.gitmodules b/.gitmodules index ec54821ea..2d8a696ec 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,9 +4,9 @@ [submodule "third_party/napf"] path = third_party/napf url = git@github.com:tataratat/napf.git -[submodule "third_party/SplineLib"] - path = third_party/SplineLib - url = git@github.com:tataratat/SplineLib.git +[submodule "third_party/BSplineLib"] + path = third_party/BSplineLib + url = git@github.com:tataratat/BSplineLib.git [submodule "third_party/bezman"] path = third_party/bezman url = git@github.com:tataratat/bezman.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 27ee6a526..a208e83fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.12.0) project(splinepy VERSION 0.0.2 LANGUAGES CXX) # build options -option(SPLINEPY_COMPILE_SPLINELIB "Compile splinelib together." ON) +option(SPLINEPY_COMPILE_BSPLINELIB "Compile bsplinelib together." ON) option(SPLINEPY_VERBOSE_MAKE "Verbose `make` output. Alias to CMAKE_VERBOSE_MAKEFILE" OFF) option(SPLINEPY_MORE "Compile a full set of splines." OFF) diff --git a/README.md b/README.md index c29096180..c06ba1ded 100644 --- a/README.md +++ b/README.md @@ -9,19 +9,11 @@ The library supports Bezier, Rational Bezier, BSpline and NURBS with fast and ea ## Install guide splinepy wheels are available for python3.6+ for MacOS, Linux, and Windows: ```bash -pip install --upgrade pip -pip install splinepy -``` +pip install splinepy[all] # this installs gustaf[all] -It is also possible to install current development version using `pip`. It requires a compiler that supports C++17 or higher (C++20 for debug mode - tested with gcc-10.3 and clang-12). Here are two variants: -1) Fast build - minimal and debug mode -```bash -SPLINEPY_MINIMAL_DEBUG_BUILD=True pip install git+https://github.com/tataratat/splinepy.git@main -vvv -``` +# or -2) Same build as in PyPI - full set of splines and optimized build -```bash -pip install git+https://github.com/tataratat/splinepy.git@main -vvv +pip install splinepy ``` `-vvv` is not necessary, but we suggest using it, since you can see the build progress. Full build (the second option) may take a while. @@ -31,9 +23,8 @@ In addition to aforementioned compilers, this requires a cmake3.16+. If you don' git clone git@github.com:tataratat/splinepy.git cd splinepy git submodule update --init --recursive -python3 setup.py install +python3 setup.py develop ``` -For visualization and extended functionalities, please take a look at [gustaf](https://github.com/tataratat/gustaf)! ## Quick start ```python @@ -99,12 +90,13 @@ Most of the functions are vectorized and capable of multithread executions. ### Splines __Any type of spline is capable of:__ - computing spline mappings, derivatives, partial derivatives, jacobian, basis functions, basis function derivatives, basis function partial derivatives, and proximity (point inversion, nearest mapping search), -- degree evalation, and -- extracting boundary splines. +- degree elevation, +- extracting boundary splines, and +- visualization (see [visualizing with splinepy](docs/markdown/spline_plotting.md)). In addition to the common features, __Bezier and Rational Bezier__ can: -- add / multiply two splines, -- split itself into multiple pathces, +- add/multiply two splines, +- split itself into multiple patches, - create derivative splines, and - compose an inner spline into an outer spline and compute its composition derivative @@ -113,15 +105,15 @@ and __BSpline and NURBS__ can: - insert and remove knots, and - extract bezier patches. -Some __BSpline fitting__ routines from the [The NURBS Book](https://link.springer.com/book/10.1007/978-3-642-97385-7): -- curve interpolation / approximation -- surface interpolation / approximation +Some __BSpline fitting__ routines from [The NURBS Book](https://link.springer.com/book/10.1007/978-3-642-97385-7): +- curve interpolation/approximation +- surface interpolation/approximation ### Multipatch -Splinepy offers a common interface for multipatch geometries, i.e., geometries consisting of multiple, individual splines of arbitrary types. This concept is both used for complex geometries as for Isogeometric Analysis. __Multipatch__ objects have the following functionalities: +Splinepy offers a common interface for multipatch geometries, i.e., geometries consisting of multiple, individual splines of arbitrary types. This concept is used for complex geometries and for Isogeometric Analysis. __Multipatch__ objects have the following functionalities: - determine patch-interfaces automatically - identification of boundary faces - - boundary assignement using different techniques, relying either on the boundary position or on the continuity inbetween patches + - boundary assignment using different techniques, relying either on the boundary position or on the continuity in between patches - Boundary extraction ### IO @@ -139,7 +131,7 @@ Available in `splinepy.io`. ## Dependencies -Followings are direct dependencies for splinepy. Please feel free to check out the repositories linked in the following. +The following are direct dependencies for splinepy. Please feel free to check out the repositories linked. | Package | Description | python | c++ | | ------- | ------------------------------------------------------- | ------ | --- | @@ -148,6 +140,7 @@ Followings are direct dependencies for splinepy. Please feel free to check out t | [bezman](https://github.com/tataratat/bezman) | Main functionalities for Beziers and rational Beziers | | X | | [napf](https://github.com/tataratat/napf) | Creates k-d trees that provides initial guess for proximity search. Wraps [nanoflann](https://github.com/jlblancoc/nanoflann) | | X | | [numpy](https://numpy.org) | Fast array data storage and manipulation | X | | +| [gustaf](https://github.com/tataratat/gustaf) | Conversion to mesh representation, visualization, and helpers | X | | | [scipy](https://scipy.org) | (Optional) Creates sparse matrices, where applicable | X | | | [cmake](https://cmake.org) | Platform independent build system for c++ implementations | | X | | [setuptools](https://setuptools.pypa.io/en/latest/) | Build python package | X | | diff --git a/cpp/splinepy/CMakeLists.txt b/cpp/splinepy/CMakeLists.txt index 45fffa3a3..1806b18fd 100644 --- a/cpp/splinepy/CMakeLists.txt +++ b/cpp/splinepy/CMakeLists.txt @@ -86,8 +86,8 @@ target_link_libraries(splinepy fitting bezman napf - SplineLib::splines - SplineLib::input_output) + BSplineLib::splines + BSplineLib::input_output) # explicit? if (SPLINEPY_BUILD_EXPLICIT) diff --git a/cpp/splinepy/explicit/CMakeLists.txt b/cpp/splinepy/explicit/CMakeLists.txt index ff0484522..0fa5f3a69 100644 --- a/cpp/splinepy/explicit/CMakeLists.txt +++ b/cpp/splinepy/explicit/CMakeLists.txt @@ -124,7 +124,7 @@ target_include_directories(explicit target_link_libraries(explicit PRIVATE bezman - SplineLib::splines + BSplineLib::splines napf) # flags diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit1.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit1.cpp index e0430a8ed..8771ab041 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit1.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit1.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" -template class splinelib::sources::splines::BSpline<1, 1>; -template class splinelib::sources::splines::BSpline<1, 2>; -template class splinelib::sources::splines::BSpline<1, 3>; +#include "BSplineLib/Splines/b_spline.hpp" +template class bsplinelib::splines::BSpline<1, 1>; +template class bsplinelib::splines::BSpline<1, 2>; +template class bsplinelib::splines::BSpline<1, 3>; #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<1, 4>; -template class splinelib::sources::splines::BSpline<1, 5>; -template class splinelib::sources::splines::BSpline<1, 6>; -template class splinelib::sources::splines::BSpline<1, 7>; -template class splinelib::sources::splines::BSpline<1, 8>; -template class splinelib::sources::splines::BSpline<1, 9>; -template class splinelib::sources::splines::BSpline<1, 10>; +template class bsplinelib::splines::BSpline<1, 4>; +template class bsplinelib::splines::BSpline<1, 5>; +template class bsplinelib::splines::BSpline<1, 6>; +template class bsplinelib::splines::BSpline<1, 7>; +template class bsplinelib::splines::BSpline<1, 8>; +template class bsplinelib::splines::BSpline<1, 9>; +template class bsplinelib::splines::BSpline<1, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit10.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit10.cpp index 7ccf494cb..95d913d6a 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit10.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit10.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<10, 1>; -template class splinelib::sources::splines::BSpline<10, 2>; -template class splinelib::sources::splines::BSpline<10, 3>; -template class splinelib::sources::splines::BSpline<10, 4>; -template class splinelib::sources::splines::BSpline<10, 5>; -template class splinelib::sources::splines::BSpline<10, 6>; -template class splinelib::sources::splines::BSpline<10, 7>; -template class splinelib::sources::splines::BSpline<10, 8>; -template class splinelib::sources::splines::BSpline<10, 9>; -template class splinelib::sources::splines::BSpline<10, 10>; +template class bsplinelib::splines::BSpline<10, 1>; +template class bsplinelib::splines::BSpline<10, 2>; +template class bsplinelib::splines::BSpline<10, 3>; +template class bsplinelib::splines::BSpline<10, 4>; +template class bsplinelib::splines::BSpline<10, 5>; +template class bsplinelib::splines::BSpline<10, 6>; +template class bsplinelib::splines::BSpline<10, 7>; +template class bsplinelib::splines::BSpline<10, 8>; +template class bsplinelib::splines::BSpline<10, 9>; +template class bsplinelib::splines::BSpline<10, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit2.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit2.cpp index f4816bf0a..b82ccb285 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit2.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit2.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" -template class splinelib::sources::splines::BSpline<2, 1>; -template class splinelib::sources::splines::BSpline<2, 2>; -template class splinelib::sources::splines::BSpline<2, 3>; +#include "BSplineLib/Splines/b_spline.hpp" +template class bsplinelib::splines::BSpline<2, 1>; +template class bsplinelib::splines::BSpline<2, 2>; +template class bsplinelib::splines::BSpline<2, 3>; #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<2, 4>; -template class splinelib::sources::splines::BSpline<2, 5>; -template class splinelib::sources::splines::BSpline<2, 6>; -template class splinelib::sources::splines::BSpline<2, 7>; -template class splinelib::sources::splines::BSpline<2, 8>; -template class splinelib::sources::splines::BSpline<2, 9>; -template class splinelib::sources::splines::BSpline<2, 10>; +template class bsplinelib::splines::BSpline<2, 4>; +template class bsplinelib::splines::BSpline<2, 5>; +template class bsplinelib::splines::BSpline<2, 6>; +template class bsplinelib::splines::BSpline<2, 7>; +template class bsplinelib::splines::BSpline<2, 8>; +template class bsplinelib::splines::BSpline<2, 9>; +template class bsplinelib::splines::BSpline<2, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit3.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit3.cpp index 29a70fc0f..6801e1165 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit3.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit3.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" -template class splinelib::sources::splines::BSpline<3, 1>; -template class splinelib::sources::splines::BSpline<3, 2>; -template class splinelib::sources::splines::BSpline<3, 3>; +#include "BSplineLib/Splines/b_spline.hpp" +template class bsplinelib::splines::BSpline<3, 1>; +template class bsplinelib::splines::BSpline<3, 2>; +template class bsplinelib::splines::BSpline<3, 3>; #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<3, 4>; -template class splinelib::sources::splines::BSpline<3, 5>; -template class splinelib::sources::splines::BSpline<3, 6>; -template class splinelib::sources::splines::BSpline<3, 7>; -template class splinelib::sources::splines::BSpline<3, 8>; -template class splinelib::sources::splines::BSpline<3, 9>; -template class splinelib::sources::splines::BSpline<3, 10>; +template class bsplinelib::splines::BSpline<3, 4>; +template class bsplinelib::splines::BSpline<3, 5>; +template class bsplinelib::splines::BSpline<3, 6>; +template class bsplinelib::splines::BSpline<3, 7>; +template class bsplinelib::splines::BSpline<3, 8>; +template class bsplinelib::splines::BSpline<3, 9>; +template class bsplinelib::splines::BSpline<3, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit4.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit4.cpp index 9897e7c93..4526b8059 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit4.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit4.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<4, 1>; -template class splinelib::sources::splines::BSpline<4, 2>; -template class splinelib::sources::splines::BSpline<4, 3>; -template class splinelib::sources::splines::BSpline<4, 4>; -template class splinelib::sources::splines::BSpline<4, 5>; -template class splinelib::sources::splines::BSpline<4, 6>; -template class splinelib::sources::splines::BSpline<4, 7>; -template class splinelib::sources::splines::BSpline<4, 8>; -template class splinelib::sources::splines::BSpline<4, 9>; -template class splinelib::sources::splines::BSpline<4, 10>; +template class bsplinelib::splines::BSpline<4, 1>; +template class bsplinelib::splines::BSpline<4, 2>; +template class bsplinelib::splines::BSpline<4, 3>; +template class bsplinelib::splines::BSpline<4, 4>; +template class bsplinelib::splines::BSpline<4, 5>; +template class bsplinelib::splines::BSpline<4, 6>; +template class bsplinelib::splines::BSpline<4, 7>; +template class bsplinelib::splines::BSpline<4, 8>; +template class bsplinelib::splines::BSpline<4, 9>; +template class bsplinelib::splines::BSpline<4, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit5.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit5.cpp index 234fb7b66..83336bb6c 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit5.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit5.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<5, 1>; -template class splinelib::sources::splines::BSpline<5, 2>; -template class splinelib::sources::splines::BSpline<5, 3>; -template class splinelib::sources::splines::BSpline<5, 4>; -template class splinelib::sources::splines::BSpline<5, 5>; -template class splinelib::sources::splines::BSpline<5, 6>; -template class splinelib::sources::splines::BSpline<5, 7>; -template class splinelib::sources::splines::BSpline<5, 8>; -template class splinelib::sources::splines::BSpline<5, 9>; -template class splinelib::sources::splines::BSpline<5, 10>; +template class bsplinelib::splines::BSpline<5, 1>; +template class bsplinelib::splines::BSpline<5, 2>; +template class bsplinelib::splines::BSpline<5, 3>; +template class bsplinelib::splines::BSpline<5, 4>; +template class bsplinelib::splines::BSpline<5, 5>; +template class bsplinelib::splines::BSpline<5, 6>; +template class bsplinelib::splines::BSpline<5, 7>; +template class bsplinelib::splines::BSpline<5, 8>; +template class bsplinelib::splines::BSpline<5, 9>; +template class bsplinelib::splines::BSpline<5, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit6.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit6.cpp index 84d7a2827..aab02b9a0 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit6.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit6.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<6, 1>; -template class splinelib::sources::splines::BSpline<6, 2>; -template class splinelib::sources::splines::BSpline<6, 3>; -template class splinelib::sources::splines::BSpline<6, 4>; -template class splinelib::sources::splines::BSpline<6, 5>; -template class splinelib::sources::splines::BSpline<6, 6>; -template class splinelib::sources::splines::BSpline<6, 7>; -template class splinelib::sources::splines::BSpline<6, 8>; -template class splinelib::sources::splines::BSpline<6, 9>; -template class splinelib::sources::splines::BSpline<6, 10>; +template class bsplinelib::splines::BSpline<6, 1>; +template class bsplinelib::splines::BSpline<6, 2>; +template class bsplinelib::splines::BSpline<6, 3>; +template class bsplinelib::splines::BSpline<6, 4>; +template class bsplinelib::splines::BSpline<6, 5>; +template class bsplinelib::splines::BSpline<6, 6>; +template class bsplinelib::splines::BSpline<6, 7>; +template class bsplinelib::splines::BSpline<6, 8>; +template class bsplinelib::splines::BSpline<6, 9>; +template class bsplinelib::splines::BSpline<6, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit7.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit7.cpp index a07f9045c..a2c58e9fe 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit7.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit7.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<7, 1>; -template class splinelib::sources::splines::BSpline<7, 2>; -template class splinelib::sources::splines::BSpline<7, 3>; -template class splinelib::sources::splines::BSpline<7, 4>; -template class splinelib::sources::splines::BSpline<7, 5>; -template class splinelib::sources::splines::BSpline<7, 6>; -template class splinelib::sources::splines::BSpline<7, 7>; -template class splinelib::sources::splines::BSpline<7, 8>; -template class splinelib::sources::splines::BSpline<7, 9>; -template class splinelib::sources::splines::BSpline<7, 10>; +template class bsplinelib::splines::BSpline<7, 1>; +template class bsplinelib::splines::BSpline<7, 2>; +template class bsplinelib::splines::BSpline<7, 3>; +template class bsplinelib::splines::BSpline<7, 4>; +template class bsplinelib::splines::BSpline<7, 5>; +template class bsplinelib::splines::BSpline<7, 6>; +template class bsplinelib::splines::BSpline<7, 7>; +template class bsplinelib::splines::BSpline<7, 8>; +template class bsplinelib::splines::BSpline<7, 9>; +template class bsplinelib::splines::BSpline<7, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit8.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit8.cpp index 67f1ebc71..94d98f235 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit8.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit8.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<8, 1>; -template class splinelib::sources::splines::BSpline<8, 2>; -template class splinelib::sources::splines::BSpline<8, 3>; -template class splinelib::sources::splines::BSpline<8, 4>; -template class splinelib::sources::splines::BSpline<8, 5>; -template class splinelib::sources::splines::BSpline<8, 6>; -template class splinelib::sources::splines::BSpline<8, 7>; -template class splinelib::sources::splines::BSpline<8, 8>; -template class splinelib::sources::splines::BSpline<8, 9>; -template class splinelib::sources::splines::BSpline<8, 10>; +template class bsplinelib::splines::BSpline<8, 1>; +template class bsplinelib::splines::BSpline<8, 2>; +template class bsplinelib::splines::BSpline<8, 3>; +template class bsplinelib::splines::BSpline<8, 4>; +template class bsplinelib::splines::BSpline<8, 5>; +template class bsplinelib::splines::BSpline<8, 6>; +template class bsplinelib::splines::BSpline<8, 7>; +template class bsplinelib::splines::BSpline<8, 8>; +template class bsplinelib::splines::BSpline<8, 9>; +template class bsplinelib::splines::BSpline<8, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_explicit9.cpp b/cpp/splinepy/explicit/splinelib/b_spline_explicit9.cpp index 1d65fa909..a44a242fc 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_explicit9.cpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_explicit9.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::BSpline<9, 1>; -template class splinelib::sources::splines::BSpline<9, 2>; -template class splinelib::sources::splines::BSpline<9, 3>; -template class splinelib::sources::splines::BSpline<9, 4>; -template class splinelib::sources::splines::BSpline<9, 5>; -template class splinelib::sources::splines::BSpline<9, 6>; -template class splinelib::sources::splines::BSpline<9, 7>; -template class splinelib::sources::splines::BSpline<9, 8>; -template class splinelib::sources::splines::BSpline<9, 9>; -template class splinelib::sources::splines::BSpline<9, 10>; +template class bsplinelib::splines::BSpline<9, 1>; +template class bsplinelib::splines::BSpline<9, 2>; +template class bsplinelib::splines::BSpline<9, 3>; +template class bsplinelib::splines::BSpline<9, 4>; +template class bsplinelib::splines::BSpline<9, 5>; +template class bsplinelib::splines::BSpline<9, 6>; +template class bsplinelib::splines::BSpline<9, 7>; +template class bsplinelib::splines::BSpline<9, 8>; +template class bsplinelib::splines::BSpline<9, 9>; +template class bsplinelib::splines::BSpline<9, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/b_spline_extern.hpp b/cpp/splinepy/explicit/splinelib/b_spline_extern.hpp index 80bb08661..79cbca213 100644 --- a/cpp/splinepy/explicit/splinelib/b_spline_extern.hpp +++ b/cpp/splinepy/explicit/splinelib/b_spline_extern.hpp @@ -1,121 +1,121 @@ #pragma once -#include "Sources/Splines/b_spline.hpp" +#include "BSplineLib/Splines/b_spline.hpp" #ifdef SPLINEPY_BUILD_EXPLICIT -extern template class splinelib::sources::splines::BSpline<1, 1>; -extern template class splinelib::sources::splines::BSpline<1, 2>; -extern template class splinelib::sources::splines::BSpline<1, 3>; +extern template class bsplinelib::splines::BSpline<1, 1>; +extern template class bsplinelib::splines::BSpline<1, 2>; +extern template class bsplinelib::splines::BSpline<1, 3>; #ifdef SPLINEPY_MORE -extern template class splinelib::sources::splines::BSpline<1, 4>; -extern template class splinelib::sources::splines::BSpline<1, 5>; -extern template class splinelib::sources::splines::BSpline<1, 6>; -extern template class splinelib::sources::splines::BSpline<1, 7>; -extern template class splinelib::sources::splines::BSpline<1, 8>; -extern template class splinelib::sources::splines::BSpline<1, 9>; -extern template class splinelib::sources::splines::BSpline<1, 10>; +extern template class bsplinelib::splines::BSpline<1, 4>; +extern template class bsplinelib::splines::BSpline<1, 5>; +extern template class bsplinelib::splines::BSpline<1, 6>; +extern template class bsplinelib::splines::BSpline<1, 7>; +extern template class bsplinelib::splines::BSpline<1, 8>; +extern template class bsplinelib::splines::BSpline<1, 9>; +extern template class bsplinelib::splines::BSpline<1, 10>; #endif -extern template class splinelib::sources::splines::BSpline<2, 1>; -extern template class splinelib::sources::splines::BSpline<2, 2>; -extern template class splinelib::sources::splines::BSpline<2, 3>; +extern template class bsplinelib::splines::BSpline<2, 1>; +extern template class bsplinelib::splines::BSpline<2, 2>; +extern template class bsplinelib::splines::BSpline<2, 3>; #ifdef SPLINEPY_MORE -extern template class splinelib::sources::splines::BSpline<2, 4>; -extern template class splinelib::sources::splines::BSpline<2, 5>; -extern template class splinelib::sources::splines::BSpline<2, 6>; -extern template class splinelib::sources::splines::BSpline<2, 7>; -extern template class splinelib::sources::splines::BSpline<2, 8>; -extern template class splinelib::sources::splines::BSpline<2, 9>; -extern template class splinelib::sources::splines::BSpline<2, 10>; +extern template class bsplinelib::splines::BSpline<2, 4>; +extern template class bsplinelib::splines::BSpline<2, 5>; +extern template class bsplinelib::splines::BSpline<2, 6>; +extern template class bsplinelib::splines::BSpline<2, 7>; +extern template class bsplinelib::splines::BSpline<2, 8>; +extern template class bsplinelib::splines::BSpline<2, 9>; +extern template class bsplinelib::splines::BSpline<2, 10>; #endif -extern template class splinelib::sources::splines::BSpline<3, 1>; -extern template class splinelib::sources::splines::BSpline<3, 2>; -extern template class splinelib::sources::splines::BSpline<3, 3>; +extern template class bsplinelib::splines::BSpline<3, 1>; +extern template class bsplinelib::splines::BSpline<3, 2>; +extern template class bsplinelib::splines::BSpline<3, 3>; #ifdef SPLINEPY_MORE -extern template class splinelib::sources::splines::BSpline<3, 4>; -extern template class splinelib::sources::splines::BSpline<3, 5>; -extern template class splinelib::sources::splines::BSpline<3, 6>; -extern template class splinelib::sources::splines::BSpline<3, 7>; -extern template class splinelib::sources::splines::BSpline<3, 8>; -extern template class splinelib::sources::splines::BSpline<3, 9>; -extern template class splinelib::sources::splines::BSpline<3, 10>; +extern template class bsplinelib::splines::BSpline<3, 4>; +extern template class bsplinelib::splines::BSpline<3, 5>; +extern template class bsplinelib::splines::BSpline<3, 6>; +extern template class bsplinelib::splines::BSpline<3, 7>; +extern template class bsplinelib::splines::BSpline<3, 8>; +extern template class bsplinelib::splines::BSpline<3, 9>; +extern template class bsplinelib::splines::BSpline<3, 10>; -extern template class splinelib::sources::splines::BSpline<4, 1>; -extern template class splinelib::sources::splines::BSpline<4, 2>; -extern template class splinelib::sources::splines::BSpline<4, 3>; -extern template class splinelib::sources::splines::BSpline<4, 4>; -extern template class splinelib::sources::splines::BSpline<4, 5>; -extern template class splinelib::sources::splines::BSpline<4, 6>; -extern template class splinelib::sources::splines::BSpline<4, 7>; -extern template class splinelib::sources::splines::BSpline<4, 8>; -extern template class splinelib::sources::splines::BSpline<4, 9>; -extern template class splinelib::sources::splines::BSpline<4, 10>; +extern template class bsplinelib::splines::BSpline<4, 1>; +extern template class bsplinelib::splines::BSpline<4, 2>; +extern template class bsplinelib::splines::BSpline<4, 3>; +extern template class bsplinelib::splines::BSpline<4, 4>; +extern template class bsplinelib::splines::BSpline<4, 5>; +extern template class bsplinelib::splines::BSpline<4, 6>; +extern template class bsplinelib::splines::BSpline<4, 7>; +extern template class bsplinelib::splines::BSpline<4, 8>; +extern template class bsplinelib::splines::BSpline<4, 9>; +extern template class bsplinelib::splines::BSpline<4, 10>; -extern template class splinelib::sources::splines::BSpline<5, 1>; -extern template class splinelib::sources::splines::BSpline<5, 2>; -extern template class splinelib::sources::splines::BSpline<5, 3>; -extern template class splinelib::sources::splines::BSpline<5, 4>; -extern template class splinelib::sources::splines::BSpline<5, 5>; -extern template class splinelib::sources::splines::BSpline<5, 6>; -extern template class splinelib::sources::splines::BSpline<5, 7>; -extern template class splinelib::sources::splines::BSpline<5, 8>; -extern template class splinelib::sources::splines::BSpline<5, 9>; -extern template class splinelib::sources::splines::BSpline<5, 10>; +extern template class bsplinelib::splines::BSpline<5, 1>; +extern template class bsplinelib::splines::BSpline<5, 2>; +extern template class bsplinelib::splines::BSpline<5, 3>; +extern template class bsplinelib::splines::BSpline<5, 4>; +extern template class bsplinelib::splines::BSpline<5, 5>; +extern template class bsplinelib::splines::BSpline<5, 6>; +extern template class bsplinelib::splines::BSpline<5, 7>; +extern template class bsplinelib::splines::BSpline<5, 8>; +extern template class bsplinelib::splines::BSpline<5, 9>; +extern template class bsplinelib::splines::BSpline<5, 10>; -extern template class splinelib::sources::splines::BSpline<6, 1>; -extern template class splinelib::sources::splines::BSpline<6, 2>; -extern template class splinelib::sources::splines::BSpline<6, 3>; -extern template class splinelib::sources::splines::BSpline<6, 4>; -extern template class splinelib::sources::splines::BSpline<6, 5>; -extern template class splinelib::sources::splines::BSpline<6, 6>; -extern template class splinelib::sources::splines::BSpline<6, 7>; -extern template class splinelib::sources::splines::BSpline<6, 8>; -extern template class splinelib::sources::splines::BSpline<6, 9>; -extern template class splinelib::sources::splines::BSpline<6, 10>; +extern template class bsplinelib::splines::BSpline<6, 1>; +extern template class bsplinelib::splines::BSpline<6, 2>; +extern template class bsplinelib::splines::BSpline<6, 3>; +extern template class bsplinelib::splines::BSpline<6, 4>; +extern template class bsplinelib::splines::BSpline<6, 5>; +extern template class bsplinelib::splines::BSpline<6, 6>; +extern template class bsplinelib::splines::BSpline<6, 7>; +extern template class bsplinelib::splines::BSpline<6, 8>; +extern template class bsplinelib::splines::BSpline<6, 9>; +extern template class bsplinelib::splines::BSpline<6, 10>; -extern template class splinelib::sources::splines::BSpline<7, 1>; -extern template class splinelib::sources::splines::BSpline<7, 2>; -extern template class splinelib::sources::splines::BSpline<7, 3>; -extern template class splinelib::sources::splines::BSpline<7, 4>; -extern template class splinelib::sources::splines::BSpline<7, 5>; -extern template class splinelib::sources::splines::BSpline<7, 6>; -extern template class splinelib::sources::splines::BSpline<7, 7>; -extern template class splinelib::sources::splines::BSpline<7, 8>; -extern template class splinelib::sources::splines::BSpline<7, 9>; -extern template class splinelib::sources::splines::BSpline<7, 10>; +extern template class bsplinelib::splines::BSpline<7, 1>; +extern template class bsplinelib::splines::BSpline<7, 2>; +extern template class bsplinelib::splines::BSpline<7, 3>; +extern template class bsplinelib::splines::BSpline<7, 4>; +extern template class bsplinelib::splines::BSpline<7, 5>; +extern template class bsplinelib::splines::BSpline<7, 6>; +extern template class bsplinelib::splines::BSpline<7, 7>; +extern template class bsplinelib::splines::BSpline<7, 8>; +extern template class bsplinelib::splines::BSpline<7, 9>; +extern template class bsplinelib::splines::BSpline<7, 10>; -extern template class splinelib::sources::splines::BSpline<8, 1>; -extern template class splinelib::sources::splines::BSpline<8, 2>; -extern template class splinelib::sources::splines::BSpline<8, 3>; -extern template class splinelib::sources::splines::BSpline<8, 4>; -extern template class splinelib::sources::splines::BSpline<8, 5>; -extern template class splinelib::sources::splines::BSpline<8, 6>; -extern template class splinelib::sources::splines::BSpline<8, 7>; -extern template class splinelib::sources::splines::BSpline<8, 8>; -extern template class splinelib::sources::splines::BSpline<8, 9>; -extern template class splinelib::sources::splines::BSpline<8, 10>; +extern template class bsplinelib::splines::BSpline<8, 1>; +extern template class bsplinelib::splines::BSpline<8, 2>; +extern template class bsplinelib::splines::BSpline<8, 3>; +extern template class bsplinelib::splines::BSpline<8, 4>; +extern template class bsplinelib::splines::BSpline<8, 5>; +extern template class bsplinelib::splines::BSpline<8, 6>; +extern template class bsplinelib::splines::BSpline<8, 7>; +extern template class bsplinelib::splines::BSpline<8, 8>; +extern template class bsplinelib::splines::BSpline<8, 9>; +extern template class bsplinelib::splines::BSpline<8, 10>; -extern template class splinelib::sources::splines::BSpline<9, 1>; -extern template class splinelib::sources::splines::BSpline<9, 2>; -extern template class splinelib::sources::splines::BSpline<9, 3>; -extern template class splinelib::sources::splines::BSpline<9, 4>; -extern template class splinelib::sources::splines::BSpline<9, 5>; -extern template class splinelib::sources::splines::BSpline<9, 6>; -extern template class splinelib::sources::splines::BSpline<9, 7>; -extern template class splinelib::sources::splines::BSpline<9, 8>; -extern template class splinelib::sources::splines::BSpline<9, 9>; -extern template class splinelib::sources::splines::BSpline<9, 10>; +extern template class bsplinelib::splines::BSpline<9, 1>; +extern template class bsplinelib::splines::BSpline<9, 2>; +extern template class bsplinelib::splines::BSpline<9, 3>; +extern template class bsplinelib::splines::BSpline<9, 4>; +extern template class bsplinelib::splines::BSpline<9, 5>; +extern template class bsplinelib::splines::BSpline<9, 6>; +extern template class bsplinelib::splines::BSpline<9, 7>; +extern template class bsplinelib::splines::BSpline<9, 8>; +extern template class bsplinelib::splines::BSpline<9, 9>; +extern template class bsplinelib::splines::BSpline<9, 10>; -extern template class splinelib::sources::splines::BSpline<10, 1>; -extern template class splinelib::sources::splines::BSpline<10, 2>; -extern template class splinelib::sources::splines::BSpline<10, 3>; -extern template class splinelib::sources::splines::BSpline<10, 4>; -extern template class splinelib::sources::splines::BSpline<10, 5>; -extern template class splinelib::sources::splines::BSpline<10, 6>; -extern template class splinelib::sources::splines::BSpline<10, 7>; -extern template class splinelib::sources::splines::BSpline<10, 8>; -extern template class splinelib::sources::splines::BSpline<10, 9>; -extern template class splinelib::sources::splines::BSpline<10, 10>; +extern template class bsplinelib::splines::BSpline<10, 1>; +extern template class bsplinelib::splines::BSpline<10, 2>; +extern template class bsplinelib::splines::BSpline<10, 3>; +extern template class bsplinelib::splines::BSpline<10, 4>; +extern template class bsplinelib::splines::BSpline<10, 5>; +extern template class bsplinelib::splines::BSpline<10, 6>; +extern template class bsplinelib::splines::BSpline<10, 7>; +extern template class bsplinelib::splines::BSpline<10, 8>; +extern template class bsplinelib::splines::BSpline<10, 9>; +extern template class bsplinelib::splines::BSpline<10, 10>; #endif #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit1.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit1.cpp index f6bf12d36..940b46a77 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit1.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit1.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" -template class splinelib::sources::splines::Nurbs<1, 1>; -template class splinelib::sources::splines::Nurbs<1, 2>; -template class splinelib::sources::splines::Nurbs<1, 3>; +#include "BSplineLib/Splines/nurbs.hpp" +template class bsplinelib::splines::Nurbs<1, 1>; +template class bsplinelib::splines::Nurbs<1, 2>; +template class bsplinelib::splines::Nurbs<1, 3>; #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<1, 4>; -template class splinelib::sources::splines::Nurbs<1, 5>; -template class splinelib::sources::splines::Nurbs<1, 6>; -template class splinelib::sources::splines::Nurbs<1, 7>; -template class splinelib::sources::splines::Nurbs<1, 8>; -template class splinelib::sources::splines::Nurbs<1, 9>; -template class splinelib::sources::splines::Nurbs<1, 10>; +template class bsplinelib::splines::Nurbs<1, 4>; +template class bsplinelib::splines::Nurbs<1, 5>; +template class bsplinelib::splines::Nurbs<1, 6>; +template class bsplinelib::splines::Nurbs<1, 7>; +template class bsplinelib::splines::Nurbs<1, 8>; +template class bsplinelib::splines::Nurbs<1, 9>; +template class bsplinelib::splines::Nurbs<1, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit10.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit10.cpp index f6f315186..97d5ff750 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit10.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit10.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<10, 1>; -template class splinelib::sources::splines::Nurbs<10, 2>; -template class splinelib::sources::splines::Nurbs<10, 3>; -template class splinelib::sources::splines::Nurbs<10, 4>; -template class splinelib::sources::splines::Nurbs<10, 5>; -template class splinelib::sources::splines::Nurbs<10, 6>; -template class splinelib::sources::splines::Nurbs<10, 7>; -template class splinelib::sources::splines::Nurbs<10, 8>; -template class splinelib::sources::splines::Nurbs<10, 9>; -template class splinelib::sources::splines::Nurbs<10, 10>; +template class bsplinelib::splines::Nurbs<10, 1>; +template class bsplinelib::splines::Nurbs<10, 2>; +template class bsplinelib::splines::Nurbs<10, 3>; +template class bsplinelib::splines::Nurbs<10, 4>; +template class bsplinelib::splines::Nurbs<10, 5>; +template class bsplinelib::splines::Nurbs<10, 6>; +template class bsplinelib::splines::Nurbs<10, 7>; +template class bsplinelib::splines::Nurbs<10, 8>; +template class bsplinelib::splines::Nurbs<10, 9>; +template class bsplinelib::splines::Nurbs<10, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit2.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit2.cpp index 56398e506..1402bc40a 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit2.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit2.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" -template class splinelib::sources::splines::Nurbs<2, 1>; -template class splinelib::sources::splines::Nurbs<2, 2>; -template class splinelib::sources::splines::Nurbs<2, 3>; +#include "BSplineLib/Splines/nurbs.hpp" +template class bsplinelib::splines::Nurbs<2, 1>; +template class bsplinelib::splines::Nurbs<2, 2>; +template class bsplinelib::splines::Nurbs<2, 3>; #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<2, 4>; -template class splinelib::sources::splines::Nurbs<2, 5>; -template class splinelib::sources::splines::Nurbs<2, 6>; -template class splinelib::sources::splines::Nurbs<2, 7>; -template class splinelib::sources::splines::Nurbs<2, 8>; -template class splinelib::sources::splines::Nurbs<2, 9>; -template class splinelib::sources::splines::Nurbs<2, 10>; +template class bsplinelib::splines::Nurbs<2, 4>; +template class bsplinelib::splines::Nurbs<2, 5>; +template class bsplinelib::splines::Nurbs<2, 6>; +template class bsplinelib::splines::Nurbs<2, 7>; +template class bsplinelib::splines::Nurbs<2, 8>; +template class bsplinelib::splines::Nurbs<2, 9>; +template class bsplinelib::splines::Nurbs<2, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit3.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit3.cpp index 617f15455..570c6e184 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit3.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit3.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" -template class splinelib::sources::splines::Nurbs<3, 1>; -template class splinelib::sources::splines::Nurbs<3, 2>; -template class splinelib::sources::splines::Nurbs<3, 3>; +#include "BSplineLib/Splines/nurbs.hpp" +template class bsplinelib::splines::Nurbs<3, 1>; +template class bsplinelib::splines::Nurbs<3, 2>; +template class bsplinelib::splines::Nurbs<3, 3>; #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<3, 4>; -template class splinelib::sources::splines::Nurbs<3, 5>; -template class splinelib::sources::splines::Nurbs<3, 6>; -template class splinelib::sources::splines::Nurbs<3, 7>; -template class splinelib::sources::splines::Nurbs<3, 8>; -template class splinelib::sources::splines::Nurbs<3, 9>; -template class splinelib::sources::splines::Nurbs<3, 10>; +template class bsplinelib::splines::Nurbs<3, 4>; +template class bsplinelib::splines::Nurbs<3, 5>; +template class bsplinelib::splines::Nurbs<3, 6>; +template class bsplinelib::splines::Nurbs<3, 7>; +template class bsplinelib::splines::Nurbs<3, 8>; +template class bsplinelib::splines::Nurbs<3, 9>; +template class bsplinelib::splines::Nurbs<3, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit4.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit4.cpp index 063c9c70f..7a629d77b 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit4.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit4.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<4, 1>; -template class splinelib::sources::splines::Nurbs<4, 2>; -template class splinelib::sources::splines::Nurbs<4, 3>; -template class splinelib::sources::splines::Nurbs<4, 4>; -template class splinelib::sources::splines::Nurbs<4, 5>; -template class splinelib::sources::splines::Nurbs<4, 6>; -template class splinelib::sources::splines::Nurbs<4, 7>; -template class splinelib::sources::splines::Nurbs<4, 8>; -template class splinelib::sources::splines::Nurbs<4, 9>; -template class splinelib::sources::splines::Nurbs<4, 10>; +template class bsplinelib::splines::Nurbs<4, 1>; +template class bsplinelib::splines::Nurbs<4, 2>; +template class bsplinelib::splines::Nurbs<4, 3>; +template class bsplinelib::splines::Nurbs<4, 4>; +template class bsplinelib::splines::Nurbs<4, 5>; +template class bsplinelib::splines::Nurbs<4, 6>; +template class bsplinelib::splines::Nurbs<4, 7>; +template class bsplinelib::splines::Nurbs<4, 8>; +template class bsplinelib::splines::Nurbs<4, 9>; +template class bsplinelib::splines::Nurbs<4, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit5.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit5.cpp index 4ea415457..059a2050e 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit5.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit5.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<5, 1>; -template class splinelib::sources::splines::Nurbs<5, 2>; -template class splinelib::sources::splines::Nurbs<5, 3>; -template class splinelib::sources::splines::Nurbs<5, 4>; -template class splinelib::sources::splines::Nurbs<5, 5>; -template class splinelib::sources::splines::Nurbs<5, 6>; -template class splinelib::sources::splines::Nurbs<5, 7>; -template class splinelib::sources::splines::Nurbs<5, 8>; -template class splinelib::sources::splines::Nurbs<5, 9>; -template class splinelib::sources::splines::Nurbs<5, 10>; +template class bsplinelib::splines::Nurbs<5, 1>; +template class bsplinelib::splines::Nurbs<5, 2>; +template class bsplinelib::splines::Nurbs<5, 3>; +template class bsplinelib::splines::Nurbs<5, 4>; +template class bsplinelib::splines::Nurbs<5, 5>; +template class bsplinelib::splines::Nurbs<5, 6>; +template class bsplinelib::splines::Nurbs<5, 7>; +template class bsplinelib::splines::Nurbs<5, 8>; +template class bsplinelib::splines::Nurbs<5, 9>; +template class bsplinelib::splines::Nurbs<5, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit6.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit6.cpp index 9e507eae9..56356418e 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit6.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit6.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<6, 1>; -template class splinelib::sources::splines::Nurbs<6, 2>; -template class splinelib::sources::splines::Nurbs<6, 3>; -template class splinelib::sources::splines::Nurbs<6, 4>; -template class splinelib::sources::splines::Nurbs<6, 5>; -template class splinelib::sources::splines::Nurbs<6, 6>; -template class splinelib::sources::splines::Nurbs<6, 7>; -template class splinelib::sources::splines::Nurbs<6, 8>; -template class splinelib::sources::splines::Nurbs<6, 9>; -template class splinelib::sources::splines::Nurbs<6, 10>; +template class bsplinelib::splines::Nurbs<6, 1>; +template class bsplinelib::splines::Nurbs<6, 2>; +template class bsplinelib::splines::Nurbs<6, 3>; +template class bsplinelib::splines::Nurbs<6, 4>; +template class bsplinelib::splines::Nurbs<6, 5>; +template class bsplinelib::splines::Nurbs<6, 6>; +template class bsplinelib::splines::Nurbs<6, 7>; +template class bsplinelib::splines::Nurbs<6, 8>; +template class bsplinelib::splines::Nurbs<6, 9>; +template class bsplinelib::splines::Nurbs<6, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit7.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit7.cpp index 7514885f7..6efd1ccbc 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit7.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit7.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<7, 1>; -template class splinelib::sources::splines::Nurbs<7, 2>; -template class splinelib::sources::splines::Nurbs<7, 3>; -template class splinelib::sources::splines::Nurbs<7, 4>; -template class splinelib::sources::splines::Nurbs<7, 5>; -template class splinelib::sources::splines::Nurbs<7, 6>; -template class splinelib::sources::splines::Nurbs<7, 7>; -template class splinelib::sources::splines::Nurbs<7, 8>; -template class splinelib::sources::splines::Nurbs<7, 9>; -template class splinelib::sources::splines::Nurbs<7, 10>; +template class bsplinelib::splines::Nurbs<7, 1>; +template class bsplinelib::splines::Nurbs<7, 2>; +template class bsplinelib::splines::Nurbs<7, 3>; +template class bsplinelib::splines::Nurbs<7, 4>; +template class bsplinelib::splines::Nurbs<7, 5>; +template class bsplinelib::splines::Nurbs<7, 6>; +template class bsplinelib::splines::Nurbs<7, 7>; +template class bsplinelib::splines::Nurbs<7, 8>; +template class bsplinelib::splines::Nurbs<7, 9>; +template class bsplinelib::splines::Nurbs<7, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit8.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit8.cpp index 1d20588d6..845e666b1 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit8.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit8.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<8, 1>; -template class splinelib::sources::splines::Nurbs<8, 2>; -template class splinelib::sources::splines::Nurbs<8, 3>; -template class splinelib::sources::splines::Nurbs<8, 4>; -template class splinelib::sources::splines::Nurbs<8, 5>; -template class splinelib::sources::splines::Nurbs<8, 6>; -template class splinelib::sources::splines::Nurbs<8, 7>; -template class splinelib::sources::splines::Nurbs<8, 8>; -template class splinelib::sources::splines::Nurbs<8, 9>; -template class splinelib::sources::splines::Nurbs<8, 10>; +template class bsplinelib::splines::Nurbs<8, 1>; +template class bsplinelib::splines::Nurbs<8, 2>; +template class bsplinelib::splines::Nurbs<8, 3>; +template class bsplinelib::splines::Nurbs<8, 4>; +template class bsplinelib::splines::Nurbs<8, 5>; +template class bsplinelib::splines::Nurbs<8, 6>; +template class bsplinelib::splines::Nurbs<8, 7>; +template class bsplinelib::splines::Nurbs<8, 8>; +template class bsplinelib::splines::Nurbs<8, 9>; +template class bsplinelib::splines::Nurbs<8, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_explicit9.cpp b/cpp/splinepy/explicit/splinelib/nurbs_explicit9.cpp index d9aa4f848..fd7f898c0 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_explicit9.cpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_explicit9.cpp @@ -1,13 +1,13 @@ -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_MORE -template class splinelib::sources::splines::Nurbs<9, 1>; -template class splinelib::sources::splines::Nurbs<9, 2>; -template class splinelib::sources::splines::Nurbs<9, 3>; -template class splinelib::sources::splines::Nurbs<9, 4>; -template class splinelib::sources::splines::Nurbs<9, 5>; -template class splinelib::sources::splines::Nurbs<9, 6>; -template class splinelib::sources::splines::Nurbs<9, 7>; -template class splinelib::sources::splines::Nurbs<9, 8>; -template class splinelib::sources::splines::Nurbs<9, 9>; -template class splinelib::sources::splines::Nurbs<9, 10>; +template class bsplinelib::splines::Nurbs<9, 1>; +template class bsplinelib::splines::Nurbs<9, 2>; +template class bsplinelib::splines::Nurbs<9, 3>; +template class bsplinelib::splines::Nurbs<9, 4>; +template class bsplinelib::splines::Nurbs<9, 5>; +template class bsplinelib::splines::Nurbs<9, 6>; +template class bsplinelib::splines::Nurbs<9, 7>; +template class bsplinelib::splines::Nurbs<9, 8>; +template class bsplinelib::splines::Nurbs<9, 9>; +template class bsplinelib::splines::Nurbs<9, 10>; #endif diff --git a/cpp/splinepy/explicit/splinelib/nurbs_extern.hpp b/cpp/splinepy/explicit/splinelib/nurbs_extern.hpp index acc74fbd3..e80bcb895 100644 --- a/cpp/splinepy/explicit/splinelib/nurbs_extern.hpp +++ b/cpp/splinepy/explicit/splinelib/nurbs_extern.hpp @@ -1,119 +1,119 @@ #pragma once -#include "Sources/Splines/nurbs.hpp" +#include "BSplineLib/Splines/nurbs.hpp" #ifdef SPLINEPY_BUILD_EXPLICIT -extern template class splinelib::sources::splines::Nurbs<1, 1>; -extern template class splinelib::sources::splines::Nurbs<1, 2>; -extern template class splinelib::sources::splines::Nurbs<1, 3>; +extern template class bsplinelib::splines::Nurbs<1, 1>; +extern template class bsplinelib::splines::Nurbs<1, 2>; +extern template class bsplinelib::splines::Nurbs<1, 3>; #ifdef SPLINEPY_MORE -extern template class splinelib::sources::splines::Nurbs<1, 4>; -extern template class splinelib::sources::splines::Nurbs<1, 5>; -extern template class splinelib::sources::splines::Nurbs<1, 6>; -extern template class splinelib::sources::splines::Nurbs<1, 7>; -extern template class splinelib::sources::splines::Nurbs<1, 8>; -extern template class splinelib::sources::splines::Nurbs<1, 9>; -extern template class splinelib::sources::splines::Nurbs<1, 10>; +extern template class bsplinelib::splines::Nurbs<1, 4>; +extern template class bsplinelib::splines::Nurbs<1, 5>; +extern template class bsplinelib::splines::Nurbs<1, 6>; +extern template class bsplinelib::splines::Nurbs<1, 7>; +extern template class bsplinelib::splines::Nurbs<1, 8>; +extern template class bsplinelib::splines::Nurbs<1, 9>; +extern template class bsplinelib::splines::Nurbs<1, 10>; #endif -extern template class splinelib::sources::splines::Nurbs<2, 1>; -extern template class splinelib::sources::splines::Nurbs<2, 2>; -extern template class splinelib::sources::splines::Nurbs<2, 3>; +extern template class bsplinelib::splines::Nurbs<2, 1>; +extern template class bsplinelib::splines::Nurbs<2, 2>; +extern template class bsplinelib::splines::Nurbs<2, 3>; #ifdef SPLINEPY_MORE -extern template class splinelib::sources::splines::Nurbs<2, 4>; -extern template class splinelib::sources::splines::Nurbs<2, 5>; -extern template class splinelib::sources::splines::Nurbs<2, 6>; -extern template class splinelib::sources::splines::Nurbs<2, 7>; -extern template class splinelib::sources::splines::Nurbs<2, 8>; -extern template class splinelib::sources::splines::Nurbs<2, 9>; -extern template class splinelib::sources::splines::Nurbs<2, 10>; +extern template class bsplinelib::splines::Nurbs<2, 4>; +extern template class bsplinelib::splines::Nurbs<2, 5>; +extern template class bsplinelib::splines::Nurbs<2, 6>; +extern template class bsplinelib::splines::Nurbs<2, 7>; +extern template class bsplinelib::splines::Nurbs<2, 8>; +extern template class bsplinelib::splines::Nurbs<2, 9>; +extern template class bsplinelib::splines::Nurbs<2, 10>; #endif -extern template class splinelib::sources::splines::Nurbs<3, 1>; -extern template class splinelib::sources::splines::Nurbs<3, 2>; -extern template class splinelib::sources::splines::Nurbs<3, 3>; +extern template class bsplinelib::splines::Nurbs<3, 1>; +extern template class bsplinelib::splines::Nurbs<3, 2>; +extern template class bsplinelib::splines::Nurbs<3, 3>; #ifdef SPLINEPY_MORE -extern template class splinelib::sources::splines::Nurbs<3, 4>; -extern template class splinelib::sources::splines::Nurbs<3, 5>; -extern template class splinelib::sources::splines::Nurbs<3, 6>; -extern template class splinelib::sources::splines::Nurbs<3, 7>; -extern template class splinelib::sources::splines::Nurbs<3, 8>; -extern template class splinelib::sources::splines::Nurbs<3, 9>; -extern template class splinelib::sources::splines::Nurbs<3, 10>; +extern template class bsplinelib::splines::Nurbs<3, 4>; +extern template class bsplinelib::splines::Nurbs<3, 5>; +extern template class bsplinelib::splines::Nurbs<3, 6>; +extern template class bsplinelib::splines::Nurbs<3, 7>; +extern template class bsplinelib::splines::Nurbs<3, 8>; +extern template class bsplinelib::splines::Nurbs<3, 9>; +extern template class bsplinelib::splines::Nurbs<3, 10>; -extern template class splinelib::sources::splines::Nurbs<4, 1>; -extern template class splinelib::sources::splines::Nurbs<4, 2>; -extern template class splinelib::sources::splines::Nurbs<4, 3>; -extern template class splinelib::sources::splines::Nurbs<4, 4>; -extern template class splinelib::sources::splines::Nurbs<4, 5>; -extern template class splinelib::sources::splines::Nurbs<4, 6>; -extern template class splinelib::sources::splines::Nurbs<4, 7>; -extern template class splinelib::sources::splines::Nurbs<4, 8>; -extern template class splinelib::sources::splines::Nurbs<4, 9>; -extern template class splinelib::sources::splines::Nurbs<4, 10>; +extern template class bsplinelib::splines::Nurbs<4, 1>; +extern template class bsplinelib::splines::Nurbs<4, 2>; +extern template class bsplinelib::splines::Nurbs<4, 3>; +extern template class bsplinelib::splines::Nurbs<4, 4>; +extern template class bsplinelib::splines::Nurbs<4, 5>; +extern template class bsplinelib::splines::Nurbs<4, 6>; +extern template class bsplinelib::splines::Nurbs<4, 7>; +extern template class bsplinelib::splines::Nurbs<4, 8>; +extern template class bsplinelib::splines::Nurbs<4, 9>; +extern template class bsplinelib::splines::Nurbs<4, 10>; -extern template class splinelib::sources::splines::Nurbs<5, 1>; -extern template class splinelib::sources::splines::Nurbs<5, 2>; -extern template class splinelib::sources::splines::Nurbs<5, 3>; -extern template class splinelib::sources::splines::Nurbs<5, 4>; -extern template class splinelib::sources::splines::Nurbs<5, 5>; -extern template class splinelib::sources::splines::Nurbs<5, 6>; -extern template class splinelib::sources::splines::Nurbs<5, 7>; -extern template class splinelib::sources::splines::Nurbs<5, 8>; -extern template class splinelib::sources::splines::Nurbs<5, 9>; -extern template class splinelib::sources::splines::Nurbs<5, 10>; +extern template class bsplinelib::splines::Nurbs<5, 1>; +extern template class bsplinelib::splines::Nurbs<5, 2>; +extern template class bsplinelib::splines::Nurbs<5, 3>; +extern template class bsplinelib::splines::Nurbs<5, 4>; +extern template class bsplinelib::splines::Nurbs<5, 5>; +extern template class bsplinelib::splines::Nurbs<5, 6>; +extern template class bsplinelib::splines::Nurbs<5, 7>; +extern template class bsplinelib::splines::Nurbs<5, 8>; +extern template class bsplinelib::splines::Nurbs<5, 9>; +extern template class bsplinelib::splines::Nurbs<5, 10>; -extern template class splinelib::sources::splines::Nurbs<6, 1>; -extern template class splinelib::sources::splines::Nurbs<6, 2>; -extern template class splinelib::sources::splines::Nurbs<6, 3>; -extern template class splinelib::sources::splines::Nurbs<6, 4>; -extern template class splinelib::sources::splines::Nurbs<6, 5>; -extern template class splinelib::sources::splines::Nurbs<6, 6>; -extern template class splinelib::sources::splines::Nurbs<6, 7>; -extern template class splinelib::sources::splines::Nurbs<6, 8>; -extern template class splinelib::sources::splines::Nurbs<6, 9>; -extern template class splinelib::sources::splines::Nurbs<6, 10>; +extern template class bsplinelib::splines::Nurbs<6, 1>; +extern template class bsplinelib::splines::Nurbs<6, 2>; +extern template class bsplinelib::splines::Nurbs<6, 3>; +extern template class bsplinelib::splines::Nurbs<6, 4>; +extern template class bsplinelib::splines::Nurbs<6, 5>; +extern template class bsplinelib::splines::Nurbs<6, 6>; +extern template class bsplinelib::splines::Nurbs<6, 7>; +extern template class bsplinelib::splines::Nurbs<6, 8>; +extern template class bsplinelib::splines::Nurbs<6, 9>; +extern template class bsplinelib::splines::Nurbs<6, 10>; -extern template class splinelib::sources::splines::Nurbs<7, 1>; -extern template class splinelib::sources::splines::Nurbs<7, 2>; -extern template class splinelib::sources::splines::Nurbs<7, 3>; -extern template class splinelib::sources::splines::Nurbs<7, 4>; -extern template class splinelib::sources::splines::Nurbs<7, 5>; -extern template class splinelib::sources::splines::Nurbs<7, 6>; -extern template class splinelib::sources::splines::Nurbs<7, 7>; -extern template class splinelib::sources::splines::Nurbs<7, 8>; -extern template class splinelib::sources::splines::Nurbs<7, 9>; -extern template class splinelib::sources::splines::Nurbs<7, 10>; +extern template class bsplinelib::splines::Nurbs<7, 1>; +extern template class bsplinelib::splines::Nurbs<7, 2>; +extern template class bsplinelib::splines::Nurbs<7, 3>; +extern template class bsplinelib::splines::Nurbs<7, 4>; +extern template class bsplinelib::splines::Nurbs<7, 5>; +extern template class bsplinelib::splines::Nurbs<7, 6>; +extern template class bsplinelib::splines::Nurbs<7, 7>; +extern template class bsplinelib::splines::Nurbs<7, 8>; +extern template class bsplinelib::splines::Nurbs<7, 9>; +extern template class bsplinelib::splines::Nurbs<7, 10>; -extern template class splinelib::sources::splines::Nurbs<8, 1>; -extern template class splinelib::sources::splines::Nurbs<8, 2>; -extern template class splinelib::sources::splines::Nurbs<8, 3>; -extern template class splinelib::sources::splines::Nurbs<8, 4>; -extern template class splinelib::sources::splines::Nurbs<8, 5>; -extern template class splinelib::sources::splines::Nurbs<8, 6>; -extern template class splinelib::sources::splines::Nurbs<8, 7>; -extern template class splinelib::sources::splines::Nurbs<8, 8>; -extern template class splinelib::sources::splines::Nurbs<8, 9>; -extern template class splinelib::sources::splines::Nurbs<8, 10>; +extern template class bsplinelib::splines::Nurbs<8, 1>; +extern template class bsplinelib::splines::Nurbs<8, 2>; +extern template class bsplinelib::splines::Nurbs<8, 3>; +extern template class bsplinelib::splines::Nurbs<8, 4>; +extern template class bsplinelib::splines::Nurbs<8, 5>; +extern template class bsplinelib::splines::Nurbs<8, 6>; +extern template class bsplinelib::splines::Nurbs<8, 7>; +extern template class bsplinelib::splines::Nurbs<8, 8>; +extern template class bsplinelib::splines::Nurbs<8, 9>; +extern template class bsplinelib::splines::Nurbs<8, 10>; -extern template class splinelib::sources::splines::Nurbs<9, 1>; -extern template class splinelib::sources::splines::Nurbs<9, 2>; -extern template class splinelib::sources::splines::Nurbs<9, 3>; -extern template class splinelib::sources::splines::Nurbs<9, 4>; -extern template class splinelib::sources::splines::Nurbs<9, 5>; -extern template class splinelib::sources::splines::Nurbs<9, 6>; -extern template class splinelib::sources::splines::Nurbs<9, 7>; -extern template class splinelib::sources::splines::Nurbs<9, 8>; -extern template class splinelib::sources::splines::Nurbs<9, 9>; -extern template class splinelib::sources::splines::Nurbs<9, 10>; +extern template class bsplinelib::splines::Nurbs<9, 1>; +extern template class bsplinelib::splines::Nurbs<9, 2>; +extern template class bsplinelib::splines::Nurbs<9, 3>; +extern template class bsplinelib::splines::Nurbs<9, 4>; +extern template class bsplinelib::splines::Nurbs<9, 5>; +extern template class bsplinelib::splines::Nurbs<9, 6>; +extern template class bsplinelib::splines::Nurbs<9, 7>; +extern template class bsplinelib::splines::Nurbs<9, 8>; +extern template class bsplinelib::splines::Nurbs<9, 9>; +extern template class bsplinelib::splines::Nurbs<9, 10>; -extern template class splinelib::sources::splines::Nurbs<10, 1>; -extern template class splinelib::sources::splines::Nurbs<10, 2>; -extern template class splinelib::sources::splines::Nurbs<10, 3>; -extern template class splinelib::sources::splines::Nurbs<10, 4>; -extern template class splinelib::sources::splines::Nurbs<10, 5>; -extern template class splinelib::sources::splines::Nurbs<10, 6>; -extern template class splinelib::sources::splines::Nurbs<10, 7>; -extern template class splinelib::sources::splines::Nurbs<10, 8>; -extern template class splinelib::sources::splines::Nurbs<10, 9>; -extern template class splinelib::sources::splines::Nurbs<10, 10>; +extern template class bsplinelib::splines::Nurbs<10, 1>; +extern template class bsplinelib::splines::Nurbs<10, 2>; +extern template class bsplinelib::splines::Nurbs<10, 3>; +extern template class bsplinelib::splines::Nurbs<10, 4>; +extern template class bsplinelib::splines::Nurbs<10, 5>; +extern template class bsplinelib::splines::Nurbs<10, 6>; +extern template class bsplinelib::splines::Nurbs<10, 7>; +extern template class bsplinelib::splines::Nurbs<10, 8>; +extern template class bsplinelib::splines::Nurbs<10, 9>; +extern template class bsplinelib::splines::Nurbs<10, 10>; #endif #endif diff --git a/cpp/splinepy/py/py_spline.hpp b/cpp/splinepy/py/py_spline.hpp index 8fb76b37c..b43b3b47b 100644 --- a/cpp/splinepy/py/py_spline.hpp +++ b/cpp/splinepy/py/py_spline.hpp @@ -25,7 +25,7 @@ namespace splinepy::py { namespace py = pybind11; -using namespace splinelib::sources; +using namespace bsplinelib; template static bool CheckPyArrayShape(const py::array_t arr, diff --git a/cpp/splinepy/py/py_spline_exporter.hpp b/cpp/splinepy/py/py_spline_exporter.hpp index ed9edd0ea..fb5ff521f 100644 --- a/cpp/splinepy/py/py_spline_exporter.hpp +++ b/cpp/splinepy/py/py_spline_exporter.hpp @@ -10,11 +10,11 @@ #include // SplineLib -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include // splinepy #include @@ -27,11 +27,9 @@ namespace splinepy::py { namespace py = pybind11; /// this is a shared pointer of splinelib's SplineItem -using SplineLibIoSpline = - splinelib::sources::input_output::operations::SplineEntry; +using SplineLibIoSpline = bsplinelib::input_output::operations::SplineEntry; // same as std::vector -using SplineLibIoSplines = - splinelib::sources::input_output::operations::Splines; +using SplineLibIoSplines = bsplinelib::input_output::operations::Splines; /// convert CoreSpline (shared_ptr of splinepybase) to splinelib io splines /// PySpline has the same namespace @@ -55,21 +53,21 @@ SplineLibIoSplines ListOfPySplinesToSplineLibIoSplines(py::list pysplines) { /// IGES void ExportIges(std::string fname, py::list splines) { - splinelib::sources::input_output::iges::Write( + bsplinelib::input_output::iges::Write( ListOfPySplinesToSplineLibIoSplines(splines), fname); } /// IRIT void ExportIrit(std::string fname, py::list splines) { - splinelib::sources::input_output::irit::Write( + bsplinelib::input_output::irit::Write( ListOfPySplinesToSplineLibIoSplines(splines), fname); } /// XML void ExportXml(std::string fname, py::list splines) { - splinelib::sources::input_output::xml::Write( + bsplinelib::input_output::xml::Write( ListOfPySplinesToSplineLibIoSplines(splines), fname); } @@ -79,7 +77,7 @@ void ExportVtk(std::string fname, py::list splines, py::list resolutions_per_spline) { using ResolutionsPerSpline = - splinelib::sources::input_output::vtk::NumbersOfParametricCoordinates; + bsplinelib::input_output::vtk::NumbersOfParametricCoordinates; using ResolutionsType = typename ResolutionsPerSpline::value_type; using ResolutionValueType = typename ResolutionsPerSpline::value_type::value_type; @@ -146,7 +144,7 @@ void ExportVtk(std::string fname, } // good, - splinelib::sources::input_output::vtk::Sample(sl_io_splines, fname, sl_rps); + bsplinelib::input_output::vtk::Sample(sl_io_splines, fname, sl_rps); } /// @brief Adds Python spline exporter diff --git a/cpp/splinepy/py/py_spline_reader.hpp b/cpp/splinepy/py/py_spline_reader.hpp index 4c27413fa..9c5228b02 100644 --- a/cpp/splinepy/py/py_spline_reader.hpp +++ b/cpp/splinepy/py/py_spline_reader.hpp @@ -10,11 +10,11 @@ #include // SplineLib -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include @@ -22,7 +22,7 @@ namespace splinepy::py { namespace py = pybind11; -using namespace splinelib::sources; +using namespace bsplinelib; /// @brief BSpline parser class /// @tparam para_dim Dimension of parametric space diff --git a/cpp/splinepy/splines/bspline.hpp b/cpp/splinepy/splines/bspline.hpp index e04c744db..cb2f4f6a5 100644 --- a/cpp/splinepy/splines/bspline.hpp +++ b/cpp/splinepy/splines/bspline.hpp @@ -1,7 +1,7 @@ #pragma once // SplineLib -#include +#include #include "splinepy/explicit/splinelib/b_spline_extern.hpp" #include "splinepy/proximity/proximity.hpp" @@ -20,7 +20,7 @@ namespace splinepy::splines { /// @tparam dim Dimension of physical space template class BSpline : public splinepy::splines::SplinepyBase, - public splinelib::sources::splines::BSpline { + public bsplinelib::splines::BSpline { public: /// @brief Dimension of parametric space static constexpr int kParaDim = para_dim; @@ -45,9 +45,9 @@ class BSpline : public splinepy::splines::SplinepyBase, using SplinepyBase_ = splinepy::splines::SplinepyBase; // splinelib - using Base_ = splinelib::sources::splines::BSpline; + using Base_ = bsplinelib::splines::BSpline; template - using BaseTemplate_ = splinelib::sources::splines::BSpline; + using BaseTemplate_ = bsplinelib::splines::BSpline; // parameter space /// Parameter space using ParameterSpace_ = typename Base_::ParameterSpace_; @@ -79,11 +79,11 @@ class BSpline : public splinepy::splines::SplinepyBase, using ScalarCoordinate_ = typename Coordinate_::value_type; // frequently used types using Derivative_ = typename Base_::Derivative_; - using Dimension_ = splinelib::Dimension; - using Tolerance_ = splinelib::sources::splines::Tolerance; + using Dimension_ = bsplinelib::Dimension; + using Tolerance_ = bsplinelib::splines::Tolerance; using OutputInformation_ = - splinelib::Tuple; + bsplinelib::Tuple; using Index_ = typename Base_::Base_::Index_; using IndexLength_ = typename Index_::Length_; using IndexValue_ = typename Index_::Value_; @@ -241,7 +241,7 @@ class BSpline : public splinepy::splines::SplinepyBase, kv.reserve(kvsize); // Index wants int for (int j{}; j < static_cast(kvsize); ++j) { - kv.emplace_back(static_cast(core_kv[splinelib::Index{j}])); + kv.emplace_back(static_cast(core_kv[bsplinelib::Index{j}])); } knot_vectors->push_back(std::move(kv)); } @@ -252,8 +252,8 @@ class BSpline : public splinepy::splines::SplinepyBase, std::size_t ncps = vector_space.GetNumberOfCoordinates(); // fill it up, phil! for (std::size_t i{}; i < ncps; ++i) { - auto const& coord_named_phil = vector_space[splinelib::Index{ - static_cast(i)}]; + auto const& coord_named_phil = vector_space[bsplinelib::Index{ + static_cast(i)}]; for (std::size_t j{}; j < kDim; ++j) { control_points[i * kDim + j] = static_cast(coord_named_phil[j]); diff --git a/cpp/splinepy/splines/helpers/extract_bezier_patches.hpp b/cpp/splinepy/splines/helpers/extract_bezier_patches.hpp index 326afa9d5..7438a5eed 100644 --- a/cpp/splinepy/splines/helpers/extract_bezier_patches.hpp +++ b/cpp/splinepy/splines/helpers/extract_bezier_patches.hpp @@ -134,7 +134,7 @@ auto ExtractBezierPatches(SplineType& input) { const auto bezier_information = parameter_space.DetermineBezierExtractionKnots( // Use SplineLib Type - splinelib::Dimension{i_p_dim}); + bsplinelib::Dimension{i_p_dim}); n_patches_per_para_dim[i_p_dim] = std::get<0>(bezier_information); n_ctps_per_para_dim[i_p_dim] = n_patches_per_para_dim[i_p_dim] * degrees[i_p_dim] + 1; @@ -143,15 +143,15 @@ auto ExtractBezierPatches(SplineType& input) { // Insert knot into the copy of the spline before extraction // this is the most costly part of the calculation for (std::size_t i_knot{}; i_knot < knot_vector_ref.size(); i_knot++) { - input.InsertKnot(splinelib::Dimension{i_p_dim}, knot_vector_ref[i_knot]); + input.InsertKnot(bsplinelib::Dimension{i_p_dim}, knot_vector_ref[i_knot]); } } // Auxiliary function const auto& ControlPointVector = [&](const int& id) { if constexpr (is_rational) { - return input.GetWeightedVectorSpace()[splinelib::Index{id}]; + return input.GetWeightedVectorSpace()[bsplinelib::Index{id}]; } else { - return input.GetVectorSpace()[splinelib::Index{id}]; + return input.GetVectorSpace()[bsplinelib::Index{id}]; } }; diff --git a/cpp/splinepy/splines/helpers/properties.hpp b/cpp/splinepy/splines/helpers/properties.hpp index f0bdf9d31..6490ccb48 100644 --- a/cpp/splinepy/splines/helpers/properties.hpp +++ b/cpp/splinepy/splines/helpers/properties.hpp @@ -2,7 +2,7 @@ #include -#include "Sources/Utilities/index.hpp" +#include "BSplineLib/Utilities/index.hpp" namespace splinepy::splines::helpers { @@ -92,7 +92,7 @@ inline void GetGrevilleAbscissae(const SplineType& spline, double factor{}; for (int k{0}; k < degrees[i_para_dim]; ++k) { factor += - knot_vectors->operator[](typename splinelib::Index(k + j + 1)); + knot_vectors->operator[](typename bsplinelib::Index(k + j + 1)); } greville_abscissae[j] = static_cast(inv_factor * factor); } else { diff --git a/cpp/splinepy/splines/nurbs.hpp b/cpp/splinepy/splines/nurbs.hpp index 1c23e8c01..6caa76abd 100644 --- a/cpp/splinepy/splines/nurbs.hpp +++ b/cpp/splinepy/splines/nurbs.hpp @@ -1,7 +1,7 @@ #pragma once // SplineLib -#include +#include #include #include @@ -18,7 +18,7 @@ namespace splinepy::splines { /// @tparam dim Dimension of physical space template class Nurbs : public splinepy::splines::SplinepyBase, - public splinelib::sources::splines::Nurbs { + public bsplinelib::splines::Nurbs { public: /// @brief Dimension of parametric space static constexpr int kParaDim = para_dim; @@ -43,7 +43,7 @@ class Nurbs : public splinepy::splines::SplinepyBase, using SplinepyBase_ = splinepy::splines::SplinepyBase; // splinelib - using Base_ = splinelib::sources::splines::Nurbs; + using Base_ = bsplinelib::splines::Nurbs; // Parameter space using ParameterSpace_ = typename Base_::ParameterSpace_; using Degrees_ = typename ParameterSpace_::Degrees_; @@ -69,11 +69,11 @@ class Nurbs : public splinepy::splines::SplinepyBase, using Weight_ = typename Weights_::value_type; // Frequently used types using Derivative_ = typename Base_::Derivative_; - using Dimension_ = splinelib::Dimension; - using Tolerance_ = splinelib::sources::splines::Tolerance; + using Dimension_ = bsplinelib::Dimension; + using Tolerance_ = bsplinelib::splines::Tolerance; using OutputInformation_ = - splinelib::Tuple; + bsplinelib::Tuple; using Index_ = typename Base_::Base_::Index_; using IndexLength_ = typename Index_::Length_; using IndexValue_ = typename Index_::Value_; @@ -236,7 +236,7 @@ class Nurbs : public splinepy::splines::SplinepyBase, kv.reserve(kvsize); // Index wants int for (int j{}; j < static_cast(kvsize); ++j) { - kv.emplace_back(static_cast(core_kv[splinelib::Index{j}])); + kv.emplace_back(static_cast(core_kv[bsplinelib::Index{j}])); } knot_vectors->push_back(std::move(kv)); } @@ -247,8 +247,8 @@ class Nurbs : public splinepy::splines::SplinepyBase, std::size_t ncps = vector_space.GetNumberOfCoordinates(); // fill it up, phil! for (std::size_t i{}; i < ncps; ++i) { - auto const& coord_named_phil = vector_space[splinelib::Index{ - static_cast(i)}]; + auto const& coord_named_phil = vector_space[bsplinelib::Index{ + static_cast(i)}]; // unweight - phil needs to first project before filling. if (control_points) { auto const& projected_phil = diff --git a/docs/Makefile b/docs/Makefile index d0c3cbf10..825c4b90b 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -3,8 +3,9 @@ # You can set these variables from the command line, and also # from the environment for the first two. -SPHINXOPTS ?= +SPHINXOPTS ?= -j auto SPHINXBUILD ?= sphinx-build +PYTHON ?= python SOURCEDIR = source BUILDDIR = build @@ -17,4 +18,11 @@ help: # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile + $(PYTHON) $(SOURCEDIR)/handle_markdown.py @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + + +clean: + rm -r $(BUILDDIR) + rm -r md + rm -r $(SOURCEDIR)/_generated diff --git a/docs/markdown/spline_plotting.md b/docs/markdown/spline_plotting.md new file mode 100644 index 000000000..77dcd6ee9 --- /dev/null +++ b/docs/markdown/spline_plotting.md @@ -0,0 +1,100 @@ +# Visualizing Splines +As a new feature SplinePy now also has the ability to directly plot splines. Currently only `vedo` is available as plotting library. + +The following will give a brief introduction into basic spline creation and visualization. + +## Creating a basic NURBS +For example here we will be creating an arc of 120 degrees explicitly as a +NURBS. +```python + +# create a 2D NURBS disk and visualize +nurbs = gus.NURBS( + degrees=[1, 2], + knot_vectors=[ + [ 1. , 0.59493748], + [ 1. , 0.59493748], + [ 0.5 , 0.29746874], + [ 0.5 , 0.29746874], + [ 0.47715876, 0.87881711], + [ 0.47715876, 0.87881711], + [ 0.23857938, 0.43940856], + [ 0.23857938, 0.43940856], + [-0.04568248, 1.16269674], + [-0.04568248, 1.16269674], + [-0.02284124, 0.58134837], + [-0.02284124, 0.58134837], + [-0.54463904, 0.83867057], + [-0.54463904, 0.83867057], + [-0.27231952, 0.41933528], + [-0.27231952, 0.41933528], + ], + weights=[ + [1. ], + [1. ], + [1. ], + [1. ], + [0.85940641], + [0.85940641], + [0.85940641], + [0.85940641], + [1. ], + [1. ], + [1. ], + [1. ], + [0.85940641], + [0.85940641], + [0.85940641], + [0.85940641], + [1. ], + [1. ], + [1. ] + [1. ] + ] +) +nurbs.show() +``` +![NURBS](../source/_static/nurbs.png) + +## Easier with `revolve` + +You might think well this is a lot of code and you are right, that is +why gustaf provides powerful functions to create splines on the fly. To show +this next the same geometry is created with a single command. +```python +easy_arc = gus.spline.create.disk(1, 0.5, 120, 2) + +gus.show( + ["Hardcoded Arc", *nurbs_showable.values()], + ["Easy Arc", *easy_arc_showable.values()], +) +``` +![Easy Arc creation](../source/_static/compare_disks.png) +Is that not much better. Feel free to peruse the helpful functions in `splinepy.spline.create`. + +## Expanding into 3D +You can also extrude and revolve spline with the build in Creator class. + + +```python +extruded = nurbs.create.extruded(extrusion_vector=[0, 0, 1]) +revolved = nurbs.create.revolved(axis=[1, 0, 0], angle=70) + +gus.show( + ["Extruded NURBS", extruded], + ["Revolved NURBS", revolved], +) +``` +![Easy Arc creation](../source/_static/extrude_revolve.png) + +This does not need to be only from 2D->3D but can also be from 1D->2D etc. + +This is just the beginning of what you can do with the given plotting and creation capabilities in this library. Please look into the [examples folder](https://github.com/tataratat/splinepy/example) to see more capabilities. diff --git a/docs/source/CONTRIBUTING.rst b/docs/source/CONTRIBUTING.rst index 6e1a721b9..85bb7bcf8 100644 --- a/docs/source/CONTRIBUTING.rst +++ b/docs/source/CONTRIBUTING.rst @@ -1,4 +1,4 @@ ------------ Contributing ------------ -.. mdinclude:: ../../CONTRIBUTING.md +.. mdinclude:: ../md/CONTRIBUTING.md diff --git a/docs/source/_static/compare_disks.png b/docs/source/_static/compare_disks.png new file mode 100644 index 000000000..8f256e27c Binary files /dev/null and b/docs/source/_static/compare_disks.png differ diff --git a/docs/source/_static/extrude_revolve.png b/docs/source/_static/extrude_revolve.png new file mode 100644 index 000000000..deec8fe40 Binary files /dev/null and b/docs/source/_static/extrude_revolve.png differ diff --git a/docs/source/_static/nurbs.png b/docs/source/_static/nurbs.png new file mode 100644 index 000000000..62d18a4ad Binary files /dev/null and b/docs/source/_static/nurbs.png differ diff --git a/docs/source/conf.py b/docs/source/conf.py index dd8fd3246..433afa01e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -43,7 +43,27 @@ # -- Options for HTML output ------------------------------------------------- html_theme = "pydata_sphinx_theme" +html_theme_options = { + # "logo": { + # "image_light": "_static/temp_logo.png", + # "image_dark": "_static/temp_logo.png", + # }, + "icon_links": [ + { + "name": "GitHub", + "url": "https://github.com/tataratat/splinepy", + "icon": "fa-brands fa-square-github", + }, + { + "name": "PyPI", + "url": "https://pypi.org/project/splinepy/", + "icon": "fa-solid fa-box", + }, + ], +} +# html_favicon = "_static/favicon.ico" html_static_path = ["_static"] +html_css_files = ["style.css"] autodoc_default_options = { diff --git a/docs/source/handle_markdown.py b/docs/source/handle_markdown.py new file mode 100644 index 000000000..c4a503369 --- /dev/null +++ b/docs/source/handle_markdown.py @@ -0,0 +1,172 @@ +"""Handles the processing of markdown files. + +This script is used to process the markdown files in the project that are also +reused in the documentation. The script will replace the relative links in the +markdown files with relative links that are correct when the documentation is +built. + +The paths change since the documentation is built from the docs folder and not +from the root of the project. + +Author: Clemens Fricke +""" +import os +import pathlib +import re + +# Path to this file. +file_path = os.path.abspath(os.path.dirname(__file__)) +original_cwd = os.getcwd() +repo_root = str(pathlib.Path(__file__).resolve()).split("docs")[0] +os.chdir(repo_root) + + +def get_markdown_links(line: str) -> str: + """Get the markdown links from a string. + + Args: + line (str): text. + + Returns: + str: Markdown links. + """ + possible = re.findall(r"\[(.*?)\]\((.*?)\)", line) + return possible if possible else "" + + +def get_github_path_from(link): + """Substitute the path to the github repository. + + This will expand the link to the github repository. This is used to create + pages that are independent of the documentation. Like for the long + description on PyPI. Normally we try to use relative links in the files + to guarantee that the documentation is also available offline. But for + the long description on PyPI we need to use absolute links to an online + repository like the github raw files. + + Args: + link (_type_): _description_ + + Returns: + _type_: _description_ + """ + return str(pathlib.Path(link).resolve()).replace( + repo_root, "https://raw.githubusercontent.com/tataratat/splinepy/main/" + ) + + +def get_common_parent(path1: str, path2: str) -> str: + """Get the common parent of two paths. + + Args: + path1 (str): Path 1. + path2 (str): Path 2. + + Returns: + str: Common parent path. + """ + path1 = pathlib.Path(path1).resolve().parent + path2 = pathlib.Path(path2).resolve() + steps_back = 0 + while path1.is_relative_to(path2) is False: + path2 = path2.parent + steps_back += 1 + return path2, steps_back + + +# Folder to save the processed markdown files to. +folder_to_save_to = os.path.join(repo_root, "docs/md/") + +# List of markdown files that are used in the documentation. +markdown_files = [ + pathlib.Path("README.md").resolve(), + pathlib.Path("CONTRIBUTING.md").resolve(), + pathlib.Path("docs/markdown/spline_intro.md").resolve(), + pathlib.Path("docs/markdown/spline_plotting.md").resolve(), +] + +# List of explicit link substitutions. +link_substitutions = { + "docs/markdown/spline_plotting.md": "spline_intro.html#creating-and-plotting-splines" # noqa E501 +} + + +def process_file( + file: str, relative_links: bool = True, return_content: bool = False +): + """Process a markdown file. + + This function will process a markdown file. It will replace all relative + links with links that are correct when the documentation is built. + If relative_links is True, the links will be relative to the documentation + folder. If relative_links is False, the links will be absolute links to + the github repository. + + Args: + file (str): Path to the markdown file. + relative_links (bool, optional): + Generate relative links. Defaults to True. + return_content (bool, optional): + Return the content instead of saving it. Defaults to False. + + Returns: + str: Content of the markdown file. Only if return_content is True. + """ + # read in the content of the markdown file + with open(file) as f: + content = f.read() + os.chdir(os.path.dirname(file)) if os.path.dirname(file) else None + # get all links from the markdown file + links = get_markdown_links(content) + + for item in links: + if item[1].startswith( + tuple(["http", "#"]) + ): # skip http links and anchors + if "badge" in item[1]: + continue + content = content.replace( + f"[{item[0]}]({item[1]})", + f"{item[0]}", + ) + continue + elif item[1] in link_substitutions: + if relative_links: + content = content.replace( + f"[{item[0]}]({item[1]})", + f"{item[0]}", + ) + continue + else: + content = content.replace( + f"[{item[0]}]({item[1]})", + "See documentation for examples.", + ) + elif not relative_links: # generate links to github repo + new_path = get_github_path_from(pathlib.Path(item[1]).resolve()) + else: # generate relative links + common_sub_path, steps_back = get_common_parent( + item[1], folder_to_save_to + ) + new_path = "../" * steps_back + str( + pathlib.Path(item[1]).resolve().relative_to(common_sub_path) + ) + content = content.replace(item[1], str(new_path)) + + os.chdir(original_cwd) + + if return_content: + return content + + with open( + os.path.join(folder_to_save_to, os.path.basename(file)), "w" + ) as f: + f.write(content) + + +if __name__ == "__main__": + os.chdir(repo_root) + os.makedirs(folder_to_save_to, exist_ok=True) + # Process all markdown files + for file in markdown_files: + process_file(file) diff --git a/docs/source/index.rst b/docs/source/index.rst index e7ec8351c..5941a0b6c 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,7 +1,7 @@ .. toctree:: :maxdepth: 2 -.. mdinclude:: ../../README.md +.. mdinclude:: ../md/README.md Table of Contents ----------------- diff --git a/docs/source/python_api.rst b/docs/source/python_api.rst index fa2d5e440..12aee968d 100644 --- a/docs/source/python_api.rst +++ b/docs/source/python_api.rst @@ -1,5 +1,5 @@ .. autosummary:: - :toctree: _autosummary + :toctree: _generated :template: :recursive: diff --git a/docs/source/spline_intro.rst b/docs/source/spline_intro.rst index 9cdbe9c0e..d20310577 100644 --- a/docs/source/spline_intro.rst +++ b/docs/source/spline_intro.rst @@ -1,4 +1,11 @@ ----------------------- Introduction to Splines ----------------------- -.. mdinclude:: ../markdown/spline_intro.md +.. mdinclude:: ../md/spline_intro.md + + + +----------------------------- +Creating and Plotting Splines +----------------------------- +.. mdinclude:: ../md/spline_plotting.md diff --git a/examples/run_all_examples.py b/examples/run_all_examples.py new file mode 100644 index 000000000..9c29fc6d4 --- /dev/null +++ b/examples/run_all_examples.py @@ -0,0 +1,25 @@ +"""Call all *.py files in the working directory. +""" +import glob +import subprocess +import sys + +if __name__ == "__main__": + files_not_completed = [] + + for file in glob.glob("*.py"): + if file == "run_all_examples.py": + continue + print(f"Calling {file}") + proc_return = subprocess.run([sys.executable, file]) + if proc_return.returncode != 0: + files_not_completed.append(file) + if len(files_not_completed) > 0: + print( + f"Failed to call {len(files_not_completed)} files: " + f"{files_not_completed}." + ) + sys.exit(1) + + print("All files completed successfully.") + sys.exit(0) diff --git a/setup.py b/setup.py index d0a8d9425..023298613 100644 --- a/setup.py +++ b/setup.py @@ -284,7 +284,7 @@ def if_in_argv_do(argv, flag, build_opts, value): CMakeExtension("splinepy.splinepy_core", extra_args=build_options) ], cmdclass=dict(build_ext=CMakeBuild), - extras_require={"test": ["pytest>=6.0"]}, + extras_require={"test": ["pytest>=6.0"], "all": ["gustaf[all]>=0.0.12"]}, zip_safe=False, license="MIT", ) diff --git a/splinepy/helpme/extract.py b/splinepy/helpme/extract.py index 1654e9e14..f5d99d64f 100644 --- a/splinepy/helpme/extract.py +++ b/splinepy/helpme/extract.py @@ -133,106 +133,29 @@ def faces( ) elif spline.para_dim == 3: - # TODO: use spline extraction routine to first extract - # spline, extract faces, merge vertices. + # extract boundaries and sample from them + # alternatively, as each groups share basis and will have same + # resolution query, we could reuse the basis. + boundaries = spline.extract_boundaries() + grouped_boundaries = [ + boundaries[i * 2 : (i + 1) * 2] for i in range(spline.para_dim) + ] - # Spline to surfaces + list_res = list(resolutions) vertices = [] faces = [] offset = 0 - # accommodate bezier Splines - u_kvs = spline.unique_knots - - for i in range(spline.para_dim): - extract = i - # Get extracting dimension - extract_along = [0, 1, 2] - extract_along.pop(extract) - - # Extract range - extract_range = [ - [ - min(u_kvs[extract_along[0]]), - max(u_kvs[extract_along[0]]), - ], - [ - min(u_kvs[extract_along[1]]), - max(u_kvs[extract_along[1]]), - ], - ] - - extract_list = [ - min(u_kvs[extract]), - max(u_kvs[extract]), - ] - - # surface point queries (spq) - spq = np.linspace( - extract_range[0][0], - extract_range[0][1], - resolutions[extract_along[0]], - ).reshape(-1, 1) - - # expand horizontally and init with 1 - spq = np.hstack((spq, np.ones((len(spq), 1)))) - spq = np.vstack( - np.linspace( - spq * [1, extract_range[1][0]], - spq * [1, extract_range[1][1]], - resolutions[extract_along[1]], - ) - ) - - # expand horizontally and init with 1 - spq = np.hstack((spq, np.ones((len(spq), 1)))) - spq = np.vstack( - np.linspace( - spq * [1, 1, extract_list[0]], - spq * [1, 1, extract_list[1]], - 2, - ) - ) - - surface_point_queries = arr.make_c_contiguous( - spq, - dtype="float64", - ) - sorted_ids = np.argsort( - [extract_along[0], extract_along[1], extract] - ) - surface_point_queries = surface_point_queries[:, sorted_ids] - - vertices.append( - spline.evaluate( - surface_point_queries[ - : int(surface_point_queries.shape[0] / 2) - ] - ) - ) - - if len(faces) != 0: - offset = faces[-1].max() + 1 - - tmp_faces = connec.make_quad_faces( - [ - resolutions[extract_along[0]], - resolutions[extract_along[1]], - ] - ) - - faces.append(tmp_faces + int(offset)) - - vertices.append( - spline.evaluate( - surface_point_queries[ - int(surface_point_queries.shape[0] / 2) : - ] - ) - ) + for i, gb in enumerate(grouped_boundaries): + this_res = list_res.copy() # shallow + this_res.pop(i) - offset = faces[-1].max() + 1 + tmp_faces = connec.make_quad_faces(this_res) + offset_size = np.prod(this_res) - faces.append(tmp_faces + int(offset)) + for g in gb: # each spline + vertices.append(g.sample(this_res)) + faces.append(tmp_faces + int(offset)) + offset += offset_size # make faces and merge vertices before returning f = Faces(vertices=np.vstack(vertices), faces=np.vstack(faces)) diff --git a/splinepy/helpme/multi_index.py b/splinepy/helpme/multi_index.py index 2d087c9fa..083d31b63 100644 --- a/splinepy/helpme/multi_index.py +++ b/splinepy/helpme/multi_index.py @@ -28,7 +28,7 @@ def __init__(self, grid_resolutions): ) # create raveled indices - raveled = np.arange(np.product(grid_resolutions), dtype="int32") + raveled = np.arange(np.prod(grid_resolutions), dtype="int32") # to allow general __getitem__ like query, turn them into # grid's shape diff --git a/splinepy/spline.py b/splinepy/spline.py index 53b1c8cb4..109b39ff7 100644 --- a/splinepy/spline.py +++ b/splinepy/spline.py @@ -1391,9 +1391,7 @@ def sample(self, resolutions, nthreads=None): -------- results: (math.product(resolutions), dim) np.ndarray """ - self._logd( - f"Sampling {np.product(resolutions)} " "points from spline." - ) + self._logd(f"Sampling {np.prod(resolutions)} " "points from spline.") return super().sample( resolutions, nthreads=_default_if_none(nthreads, settings.NTHREADS) @@ -1734,14 +1732,28 @@ def extract_boundaries(self, boundary_ids=None): boundary_spline: type(self) boundary spline, which has one less para_dim """ - if boundary_ids is None: - boundary_ids = np.array([], dtype=np.int32) + # check if boundaries were saved. + saved_boundaries = self._data.get("boundaries", None) + if saved_boundaries is not None: + if boundary_ids is None: + return saved_boundaries + else: + return [saved_boundaries[bi] for bi in boundary_ids] - return [ + # extract boundaries + boundaries = [ type(self)(spline=c) - for c in core.extract_boundaries(self, boundary_ids) + for c in core.extract_boundaries( + self, _default_if_none(boundary_ids, []) + ) ] + # save if this was all-query + if boundary_ids is None: + self._data["boundaries"] = boundaries + + return boundaries + @_new_core_if_modified def export(self, fname): """ diff --git a/tests/test_multi_index.py b/tests/test_multi_index.py index 34eddf163..91c4cf188 100644 --- a/tests/test_multi_index.py +++ b/tests/test_multi_index.py @@ -30,19 +30,19 @@ def test_multi_index(self): # test first and last slice that's orthogonal to the last dimension # first slice - ref_raveled = c.np.arange(c.np.product(resolutions[:-1])) + ref_raveled = c.np.arange(c.np.prod(resolutions[:-1])) to_test = multi[..., 0] assert c.np.array_equal(ref_raveled, to_test) # last slice - upper = c.np.product(resolutions) - lower = upper - c.np.product(resolutions[:-1]) + upper = c.np.prod(resolutions) + lower = upper - c.np.prod(resolutions[:-1]) ref_raveled = c.np.arange(lower, upper) to_test = multi[..., -1] assert c.np.array_equal(ref_raveled, to_test) # test first and last slice that's orthogonal to the first dim - full_ids = c.np.arange(c.np.product(resolutions)) + full_ids = c.np.arange(c.np.prod(resolutions)) # first slice ref_raveled = full_ids[0 :: resolutions[0]] diff --git a/third_party/BSplineLib b/third_party/BSplineLib new file mode 160000 index 000000000..9dca198d8 --- /dev/null +++ b/third_party/BSplineLib @@ -0,0 +1 @@ +Subproject commit 9dca198d8042ce148143b05987d59ec2a4114ed5 diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt index 8e01bf4cc..3267b70ad 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt @@ -1,8 +1,8 @@ # disable tests for splinelib and bezman set(GOOGLETEST OFF) -if(SPLINEPY_COMPILE_SPLINELIB) - add_subdirectory(SplineLib) +if(SPLINEPY_COMPILE_BSPLINELIB) + add_subdirectory(BSplineLib) endif() set(BEZMAN_GOOGLETEST OFF) diff --git a/third_party/SplineLib b/third_party/SplineLib deleted file mode 160000 index ae3b4ea97..000000000 --- a/third_party/SplineLib +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ae3b4ea978d024e8b5f62b02593d904f33f8ba79