Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
171 commits
Select commit Hold shift + click to select a range
73d5e99
Add: show_swept-file and swept-function in create-file
OberGue Apr 18, 2024
0b5315a
Add: first kinda swept surface implementation in show_swept-file
OberGue Apr 29, 2024
630ca7b
Fix: Moved computation from show_swept-file to create-file
OberGue May 2, 2024
afd3b8b
Add: function for transformation matrix
OberGue May 2, 2024
a789aea
Add: show_options changed in show_swept-file
OberGue May 2, 2024
0120f9c
Add: positioning of cross-section control points
OberGue May 6, 2024
46dead2
Fix: now, evaluation-points are fitted instead of CPs
OberGue May 6, 2024
214a357
Add: rotation matrix and centered cross section
OberGue May 7, 2024
cf86242
Fix: getting fitting flexible for CS eval points; Note: WIP
OberGue May 7, 2024
76e566a
Add: Transformation matrix now with projection; Note: WIP
OberGue May 14, 2024
60eeceb
Fix: calculation of transformation matrix - still working on projecti…
OberGue May 15, 2024
c6bee4f
minor clean up during discussion
j042 May 21, 2024
d74eafa
Fix: create-file transformation matrices now calculated once; rotatio…
OberGue May 22, 2024
330d62e
Fix: changed arbitrary vector vec and rotation matrix in create-file;…
OberGue May 22, 2024
d4f6946
Fix: random vector vec now dependent of tangent
OberGue May 23, 2024
61e15b6
Add: new function in fit.py-file; Fix: adaptions in create.py-file ac…
OberGue Jun 9, 2024
b2d3960
Fix: pre-commit changes
OberGue Jun 9, 2024
14c4d41
Add: changed show-settings to better possibility of comparison
OberGue Jun 12, 2024
9fa62b1
Big update; Add: nurbs, traj refinement; Del: fitting routine
OberGue Jun 12, 2024
5a45695
Fix: calculation of rotation matrix
OberGue Jun 19, 2024
6fb1954
Add: refinement routine; Fix: no more derivative redundance
OberGue Jun 20, 2024
3b90639
Fix: no more global splinepy import
OberGue Jun 27, 2024
05f226b
Add: self-refinement now working; added function in bspline.py (note:…
OberGue Jul 1, 2024
3c3a80e
Add: function for closed trajectories
OberGue Jul 2, 2024
37083cd
Add: some checks were added
OberGue Jul 2, 2024
3d233d3
Add: reference to nurbs book
OberGue Jul 2, 2024
37f180d
Add: auto_refinement variable
OberGue Jul 2, 2024
bf2b961
Fix: positioning of cs-cps now acc to traj-cps; Fix: auto_refinement …
OberGue Jul 2, 2024
8930b19
Add: test functions in create-test-file
OberGue Jul 2, 2024
8c2cc7f
Rm: removed unnecessary insertion function in bspline.py
OberGue Jul 3, 2024
f610564
Add: opportunity to set cross-sec CPs on traj eval points or traj CPs
OberGue Jul 3, 2024
8f1142d
Add: swept description; Fix: using settings.TOLERANCE
OberGue Jul 3, 2024
ecc32ad
Fix: get rid of x,y,z
OberGue Jul 3, 2024
7ae9231
Fix: embedded calc of transf matrices in normal code - without functi…
OberGue Jul 3, 2024
99ab4e4
Add: debug log at cs_normal_vector
OberGue Jul 3, 2024
b556010
Add: debug log for B division by zero
OberGue Jul 3, 2024
390302e
Add: functionality to rotate cross_section around traj-tangent-vector
OberGue Jul 8, 2024
d8ea3d2
Add: test function to compare swept and extruded
OberGue Jul 8, 2024
49d8e06
Add: test_swept_with_costum_normal now with derivative check
OberGue Jul 8, 2024
84ffe6f
Rm: auto_refinement; Rm: clean up show_swept file
OberGue Jul 10, 2024
6e4f37d
Fix: new test functions
OberGue Jul 12, 2024
31251eb
Rm: german comment
OberGue Jul 12, 2024
a3c8b0c
Add: capabilities of sweeping in the docstring
OberGue Jul 12, 2024
616fc4d
Fix: changed indentation in docstring
OberGue Jul 12, 2024
dc0fa91
Fix: added points in docstring
OberGue Jul 12, 2024
a52689a
Add: show_swept-file now shows more examples
OberGue Sep 9, 2024
d5e2ad1
Rm: .all()-function in test_create-file
OberGue Sep 10, 2024
a2c8566
Fix: show_options and variable names in show_swept
OberGue Sep 11, 2024
0b97f00
Fix: changed comments of cs_nv
OberGue Sep 16, 2024
137c10b
Add: assertions and comments in test_basic_functionality-function in …
OberGue Sep 16, 2024
82467e1
Fix: error messages in create-file
OberGue Sep 16, 2024
7611ece
Fix: clarified error messages at input checks of create-file
OberGue Sep 16, 2024
fa4ac39
Fix: rotation matrix calculation now also for e2 entries
OberGue Sep 17, 2024
99b7d21
Add: catch division by zero in trajectory-tangent calculation
OberGue Nov 8, 2024
c736c9a
Fix: input checks now with spline-instance; Add: casting of rotation_…
OberGue Nov 8, 2024
6b6bc3b
Add: temporal variable in order to avoid multiple cross-product-calcu…
OberGue Nov 8, 2024
28edb14
Fix: changed vector calculations to inplace syntax (where possible)
OberGue Nov 8, 2024
153d242
Fix: changed name of centering test-function
OberGue Nov 8, 2024
9ff3981
Fix: split first instance check and insert f for string
OberGue Nov 8, 2024
191e675
Fix: changed error messages semantically
OberGue Nov 8, 2024
f7a51af
Fix: changed TypeError to ValueError
OberGue Nov 8, 2024
6c6616c
Add: catch division by zero
OberGue Nov 8, 2024
f740098
Add: anchor functionality; Fix: vectorize for-loop; Fix: use np.allcl…
OberGue Apr 14, 2026
187c002
Fix: function signature in test-file; Add: anchor test
OberGue Apr 14, 2026
2c73c8e
Fix: function signature in example file; Add: anchor example
OberGue Apr 14, 2026
01357ac
Add: show-swept entry in README with picture
OberGue Apr 14, 2026
788f237
Fix: additional information in docstring; Add: catch dimension error
OberGue Apr 15, 2026
e4fed50
Add: cross-section normal gets more rigorous checks
OberGue Apr 15, 2026
2ef0bc1
Fix: more informative log messages
OberGue Apr 15, 2026
5a67a47
Fix: no more redundant check of first derivative
OberGue Apr 15, 2026
80538f1
Fix: moved parameter validiation
OberGue Apr 15, 2026
5fc89a3
Add: information about sweeping method in docstring
OberGue Apr 15, 2026
28a6a00
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Apr 13, 2026
63c49ab
Fix: Add py314, zip(required=true) for most
clemens-fricke Apr 14, 2026
e6f49e7
Chore(pre-commit): Change pre-commit ci target branch
clemens-fricke Apr 14, 2026
9c47724
Add test for microtile classes
markriegler Aug 9, 2024
617a6cc
WIP add test if all microtiles lie in unit cube (only for default par…
markriegler Aug 9, 2024
89fcdbf
Add test for microstructure closures
markriegler Aug 12, 2024
cb29a75
Add test for non-default parameters of microtiles
markriegler Aug 12, 2024
12f0ea7
Add test for non-default parameters plus closure of microtiles
markriegler Aug 12, 2024
6c9cf84
Restructure microstructure tests
markriegler Aug 12, 2024
7050de6
Add test for tile derivatives (WIP)
markriegler Aug 26, 2024
6d01d7b
Add derivative of HollowOctagon tile
markriegler Aug 26, 2024
ce88fdc
Add derivatives for closure of HollowOctagon tile
markriegler Aug 26, 2024
655c37d
Add derivatives for Armadillo tile
markriegler Aug 26, 2024
60ce376
Fix typo which led to error
markriegler Aug 26, 2024
fbacc09
Add derivatives for HollowOctagonExtrude tile w/o closure
markriegler Aug 26, 2024
d96d261
Add test for tile derivatives with tile closure
markriegler Aug 27, 2024
b13a300
Restructure and add derivatives for InverseCross3D tile (WIP)
markriegler Aug 27, 2024
d425921
Fix derivative of Chi tile
markriegler Oct 9, 2024
c8be7cc
Add/fix derivative of tile InverseCross3D
markriegler Oct 9, 2024
27d9e28
Fix CubeVoid derivatives
markriegler Oct 9, 2024
9a5396d
Fix Ellipsvoid derivatives
markriegler Oct 9, 2024
bff1b76
Change to more appropriate name test_microtiles
markriegler Oct 10, 2024
879fc8e
Add microstructure closure test
markriegler Oct 10, 2024
0f45332
Add test for microstructure macro sensitivities
markriegler Oct 11, 2024
8222222
Add working closure to HollowOctagonExtrude
markriegler Oct 11, 2024
7c54ca1
Add pytest parametrization of all the microtiles
markriegler Jan 14, 2025
03dc05a
Add to description that tiles are not tested
markriegler Jan 15, 2025
d73e51c
Simplify code which skips tile classes
markriegler Jan 15, 2025
3254e72
Failed sensitivity calculation now outputs evaluation points
markriegler Jan 15, 2025
7a9c7e1
Fixing RNG seed, sensitivity step size and number of random test points
markriegler Jan 15, 2025
e2a56a2
Fix failing knot vector test
markriegler Jan 15, 2025
432e584
Refactor, add common code to TileBase
markriegler Jan 16, 2025
6d4e8e4
Refactor all tile classes to make use of common functions
markriegler Jan 16, 2025
7fc1d8a
Add comments according to coderabbitai
markriegler Jan 16, 2025
6c2d3cb
Add check of default tile parameters
markriegler Jan 17, 2025
7e17e18
Change input to custom parameter check
markriegler Jan 17, 2025
cf24f7f
Add bounds for custom tile parameters to class attributes
markriegler Jan 17, 2025
2c986ac
Add comments according to coderabbitai
markriegler Jan 17, 2025
70aa104
Add dynamical update of parameter bounds
markriegler Jan 20, 2025
d670222
Test tile class now works with instances so that _parameter_bounds ca…
markriegler Jan 20, 2025
30bda30
Define class properties as class attribute or instance attribute
markriegler Jan 20, 2025
fcbb133
Accept integers as tile parameters as well
markriegler Jan 20, 2025
0cd340e
Add pytest skip for unfinished/hard-to-test tiles and some coderabbit…
markriegler Jan 20, 2025
3b5d01a
Ignore parameters (unused in function) for pre-commit
markriegler Jan 20, 2025
140e21a
Enhance error message for unsupported closure directions
markriegler Feb 6, 2025
1ad4479
Replace assert statements with proper exception handling
markriegler Feb 6, 2025
cc84b5c
Add tests to check if error is validly thrown when parameters are wrong
markriegler Feb 6, 2025
9b94403
Enhance error message clarity
markriegler Feb 6, 2025
5f8bac8
Add fourth order accurate Finite Difference calculation of parameter …
markriegler Feb 6, 2025
7c57106
Change some error types
markriegler Feb 6, 2025
3103a64
Add clarification of parameter bounds
markriegler Feb 6, 2025
dd4f0c0
Add some suggestions from coderabbit
markriegler Feb 7, 2025
05830d8
Add more suggestions from coderabbit
markriegler Feb 7, 2025
936036c
Nit: Rename symbol to pass pre-commit
clemens-fricke Jun 2, 2025
742c843
Fix incorrect ordering in FD calculation
markriegler Jun 2, 2025
7af98e3
Fix typos and enhance error messages
markriegler Jun 2, 2025
8d1877f
Remove HollowOctagonExtrude from list of failing tests since it passe…
markriegler Jun 2, 2025
b652715
Fix(microstructure): Fix cls method calling self, add strict to zip c…
clemens-fricke Apr 20, 2026
3761777
Fix(microstructure): Fix error message
clemens-fricke Apr 20, 2026
d8780f1
Make Chi-tile exempt from macro-sensitivity tests
markriegler Apr 22, 2026
4c960ec
First Try Stokes example IGA collocation
jzwar Apr 29, 2026
85dc64d
Solve least square problem
jzwar May 9, 2026
a90b1f3
Make example with more options
jzwar May 10, 2026
b91dc06
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 10, 2026
68a8d95
Slight modifications to stokes collocation example
danielwolff1 May 13, 2026
b8aee96
Final Touches
jzwar May 17, 2026
1a2762c
Add nitpicks from AI code review
danielwolff1 May 21, 2026
b92b922
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] May 21, 2026
89bf809
add FieldIntegrator
j042 Feb 27, 2024
24f2b76
add assemble base
j042 Feb 27, 2024
f18a6c2
add Transformation class
markriegler Aug 1, 2024
042f171
Add test for transformation class
markriegler Aug 1, 2024
0c56299
Add custom and default quadrature order for transformation class
markriegler Aug 2, 2024
01c6744
Restructure helpme/integrate.py
markriegler Aug 2, 2024
6bccfdf
Add assembly to field integrator
markriegler Aug 5, 2024
b803e61
Add Laplace FieldIntegrator example
markriegler Aug 5, 2024
302588d
Add inhomogeneous Dirichlet BCs from function
markriegler Aug 5, 2024
9408b4b
Add system integrator
markriegler Aug 6, 2024
617b19b
Rebase from main
j042 Feb 13, 2024
004cf98
Merge test integrate
markriegler Aug 1, 2024
9fff528
Add custom and default quadrature order for transformation class
markriegler Aug 2, 2024
2974a10
Restrucutre helpme/integrate.py
markriegler Aug 2, 2024
8d1413f
Resolved all rebase issues
markriegler Aug 6, 2024
4350d22
Add comments
markriegler Aug 6, 2024
52ff34e
Restructure FieldIntegrator's Dirichlet function
markriegler Aug 13, 2024
095e352
Add return values option to FieldIntegrator's Dirichlet function
markriegler Aug 13, 2024
9391afd
Add L2-projection to FieldIntegrator
markriegler Aug 15, 2024
d5a76c1
Add error calcuation to FieldIntegrator
markriegler Aug 16, 2024
e9fd081
Getting it to the state I wanted it to be without all the rebase issues
markriegler Aug 16, 2024
87834b9
Remove formula from Dirichlet BC docstring
markriegler Sep 6, 2024
fd85398
Add comments for more clarity
markriegler Jun 3, 2025
6165eb9
Add docstring
markriegler Apr 20, 2026
3bb7071
Fix error with blackdoc
markriegler Apr 22, 2026
5bb1bb1
Format: missing file
clemens-fricke May 12, 2026
e983182
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Jun 8, 2026
18118c9
Add detailed CHANGELOG.md for v0.2.1
Copilot Jun 11, 2026
fa16dad
Chore: Bump version, Swap tataratat legacy links to isosuite (why jae…
clemens-fricke Jun 11, 2026
fc78aa8
Chore: Further tataratat legacy links and Coder review comments
clemens-fricke Jun 16, 2026
c45bbe1
Chore: Update changelog to show release
clemens-fricke Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
strategy:
matrix:
arch: [x86_64]
cw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"]
cw_build: ["cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*"]

steps:
- uses: actions/checkout@v4
Expand All @@ -35,7 +35,7 @@ jobs:
strategy:
matrix:
arch: [arm64]
cw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"]
cw_build: ["cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*"]

steps:
- uses: actions/checkout@v4
Expand All @@ -60,7 +60,7 @@ jobs:
strategy:
matrix:
arch: [x86_64]
cw_build: ["cp39*many*", "cp310*many*", "cp311*many*", "cp312*many*", "cp313*many*"]
cw_build: ["cp310*many*", "cp311*many*", "cp312*many*", "cp313*many*", "cp314*many*"]

steps:
- uses: actions/checkout@v4
Expand All @@ -85,7 +85,7 @@ jobs:
strategy:
matrix:
arch: [AMD64]
cw_build: ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"]
cw_build: ["cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*"]

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test_full.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
SPLINEPY_GITHUB_ACTIONS_BUILD: True
strategy:
matrix:
python-version: [3.9, "3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
os: [ubuntu-latest, macos-latest, windows-latest]

steps:
Expand Down
6 changes: 3 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
url = git@github.com:pybind/pybind11.git
[submodule "third_party/napf"]
path = third_party/napf
url = git@github.com:tataratat/napf.git
url = git@github.com:isosuite/napf.git
[submodule "third_party/BSplineLib"]
path = third_party/BSplineLib
url = git@github.com:tataratat/BSplineLib.git
url = git@github.com:isosuite/BSplineLib.git
[submodule "third_party/bezman"]
path = third_party/bezman
url = git@github.com:tataratat/bezman.git
url = git@github.com:isosuite/bezman.git
14 changes: 5 additions & 9 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@

# use default options for ci
ci:
autoupdate_schedule: "weekly"
autoupdate_branch: 'develop'
autoupdate_schedule: "monthly"
submodules: false

repos:
Expand All @@ -24,24 +25,19 @@ repos:
- id: check-yaml
- id: debug-statements
- id: end-of-file-fixer
exclude: '^tests/data/.*$'
- id: mixed-line-ending
- id: requirements-txt-fixer
- id: trailing-whitespace

- repo: https://github.com/psf/black-pre-commit-mirror
rev: "26.3.1"
hooks:
- id: black
additional_dependencies: [tomli]

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.7
rev: v0.15.16
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]

- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v22.1.1
rev: v22.1.5
hooks:
- id: clang-format
types_or: [c, c++]
Expand Down
157 changes: 157 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.1] - 2026-06

### Added

#### Swept Surface/Solid Generation
- New `splinepy.helpme.create.swept()` function for generating swept surfaces and solids by sweeping a cross-section along a trajectory spline ([examples/show_swept.py](examples/show_swept.py))
- Supports curve (1D) and surface (2D) cross-sections to produce surfaces and solids respectively
- Cross-section orientation uses the projection-normal method (Siltanen & Woodward), following [The NURBS Book](https://link.springer.com/book/10.1007/978-3-642-59223-2), Piegl & Tiller, 2nd ed., Chapter 10.4
- Supports closed trajectories with orientation correction (p. 483 of the NURBS book)
- `anchor` parameter controls which reference point of the cross-section is placed on the trajectory (`"parametric"`, `"control_box"`, `"geometry_box"`, or `"auto"`)
- `set_on_trajectory` parameter selects between placement at trajectory knot evaluation points or trajectory control points
- Optional `rotation_adaption` parameter for additional rotation of the cross-section around the trajectory tangent
- Added swept surface image to README and documentation

#### IGA Assembly: `FieldIntegrator` and `Transformation`
- New `Transformation` class in `splinepy.helpme.integrate` encapsulating all quadrature and geometry transformation data needed for IGA discretization:
- Precomputes quadrature points, supports, Jacobians, Jacobian inverses, and Jacobian determinants per element
- Configurable quadrature orders
- New `FieldIntegrator` class in `splinepy.helpme.integrate` providing a high-level interface for PDE assembly:
- `assemble_matrix(function)` — assembles the global stiffness matrix
- `assemble_vector(function)` — assembles the global load vector
- `assemble_matrix_and_vector(function)` — assembles both simultaneously
- `L2_projection(function)` — computes the L2 projection of a function onto the spline space
- `compute_error(function, norm)` — computes the L2 or H1 error of the current solution
- `apply_homogeneous_dirichlet_boundary_conditions()` — enforces homogeneous Dirichlet BCs
- `apply_dirichlet_boundary_conditions(function)` — enforces inhomogeneous Dirichlet BCs from a given function
- `solve_linear_system()` — solves the assembled linear system using `scipy.sparse.linalg.spsolve`
- Uses sparse matrix assembly via `scipy.sparse.dok_matrix`

#### Microstructure: Tile Parameter Handling and Sensitivities
- Extended `TileBase` with standardised class attributes and properties for parameter validation and introspection:
- `_parameter_bounds` / `parameter_bounds` — bounds for each tile parameter
- `_parameters_shape` / `parameters_shape` — shape of the parameter array
- `_default_parameter_value` / `default_parameter_value` — default values for tile parameters
- `_sensitivities_implemented` / `sensitivities_implemented` — flag indicating whether parameter sensitivities are implemented
- `_closure_directions` / `closure_directions` — list of supported closure directions
- `check_params(parameters)` — validates user-supplied parameters against bounds
- `_process_input(parameters, parameter_sensitivities)` — shared input-processing logic
- `_check_custom_parameter(value, param_name, bounds)` — validates individual parameters
- Derived tile classes now inherit common parameter-processing code from `TileBase`, reducing code duplication
- Changed `evaluation_points`, `para_dim`, and `dim` from class methods to instance properties for consistency
- Added `n_info_per_eval_point` property to `TileBase`
- Derivatives (parameter sensitivities) implemented or fixed for:
- `HollowOctagon` (with and without closure)
- `HollowOctagonExtrude` (added working closure, with derivatives)
- `Armadillo`
- `Chi` tile (fixed)
- `InverseCross3D` (restructured and fixed)
- `CubeVoid` (fixed)
- `EllipsVoid` (fixed)
- Fourth-order accurate finite-difference calculation for numerical verification of parameter sensitivities
- Sensitivities calculation now outputs evaluation points when it fails for easier debugging
- `Microstructure`: integers are now accepted as tile parameters alongside floats

#### Multipatch
- Added `Multipatch.set_interface_orientations(interface_orientations)` setter for manually specifying interface orientations, enabling export of scalar-field splines where automatic Jacobian-based orientation computation is not possible

#### Examples
- Added `examples/show_swept.py` demonstrating swept surface and solid construction
- Added `examples/iga/galerkin_laplace_problem_field_integrator.py` demonstrating Galerkin IGA for the Laplace problem using `FieldIntegrator`
- Added `examples/iga/collocation_stokes_problem_sparse.py` demonstrating IGA collocation for the Stokes problem using sparse matrices

### Changed

#### CI/CD and Python Support
- Dropped Python 3.9 support; added Python 3.14 support (updated workflows and `pyproject.toml` classifiers)
- Switched macOS CI runner from deprecated `macos-13` to `macos-15-intel` for continued x86_64 testing
- Fixed wheel naming convention issue in CI

#### Microstructure
- Refactored all tile classes to use common functions from `TileBase`, reducing code duplication significantly
- `TileBase`: removed class methods in favour of instance/class properties for `dim`, `para_dim`, and `evaluation_points`
- `TileBase`: removed unneeded classmethods to simplify the class hierarchy
- `Microstructure`: replaced bare `assert` statements with proper `raise` expressions for parameter validation; improved error messages
- `Microstructure`: updated `zip` calls to use `strict=True` for stricter length checking (Python 3.10+)
- `Chi` tile is now excluded from macro-sensitivity tests (analytical sensitivities not yet finalized)
- `HollowOctagonExtrude` removed from the list of skipped test tiles

#### Integration (`helpme/integrate.py`)
- Extracted `_default_quadrature_orders(spline)` helper function (previously inlined in `_get_quadrature_information`)
- Improved docstrings for `_get_integral_measure`, `_get_quadrature_information`, and related functions
- Corrected typos in docstrings (`paramtric` → `parametric`, `Determinante` → `Determinant`)

#### Gismo IO (`splinepy/io/gismo.py`)
- Added helper functions for Gismo export
- Fixed patch range text format for multi-patch exports

#### IRIT IO (`splinepy/io/irit.py`)
- Updated `zip` calls to use `strict=True`

#### MFEM IO (`splinepy/io/mfem.py`)
- Fixed test data for Cartesian 2D and 3D meshes

#### PR Template
- Updated pull request template to use `develop` as the default base branch

### Fixed

- **`helpme/create.py`**: Fixed error in rotation matrix calculation for e2 entries in swept surface generation; improved input validation and error messages throughout
- **`helpme/integrate.py`**: Fixed typos and improved docstrings
- **`microstructure/tiles`**: Fixed incorrect ordering in finite-difference sensitivity calculation; fixed derivative implementations for `Chi`, `CubeVoid`, `EllipsVoid`, `InverseCross3D`; fixed typo causing errors in `HollowOctagonExtrude`
- **`microstructure/microstructure.py`**: Fixed typo in class docstring (`facilitatae` → `facilitate`)
- **`multipatch.py`**: Added check to verify that Jacobians exist before computing interface orientations
- **`bspline.py`**: Allow any negative number in the knot vector (previously restricted), fixing issue [#476](https://github.com/isosuite/splinepy/pull/476)
- **`utils/data.py`**: Minor fixes
- **Various IO modules**: Fixed miscellaneous issues and improved error handling

### Tests

- Added `tests/test_microtiles.py` with comprehensive parametrised tests for all microtile classes:
- All tiles lie within the unit cube for default parameters
- Tiles with non-default parameters
- Closure tests
- Tile derivative (sensitivity) tests, including closure derivatives
- Macro-sensitivity tests (finite-difference verification)
- Added `tests/test_microstructure.py` with additional microstructure integration tests
- Added test for `Transformation` class in `tests/helpme/test_integrate.py`
- Extended `tests/helpme/test_create.py` with swept surface tests, including:
- Comparison of swept vs extruded surfaces
- Custom cross-section normal vector
- Anchor modes
- Derivative checks
- Fixed RNG seed, sensitivity step size, and number of random test points for reproducible results
- Updated various existing tests for compatibility with Python 3.10+ `zip(strict=True)` changes

## [0.2.0] - 2025-06-01

- Physical function integration in `helpme/integrate.py`
- Gismo export helper functions
- Python 3.13 support
- Various bug fixes and CI/CD maintenance

## [0.1.3] - 2024

- Proximity / nearest-point query updates

## [0.1.2] - 2024

- MFEM 3D single-patch IO
- Padding initializer for splines

## [0.1.1] - 2024

- Initial stable release series

[0.2.1]: https://github.com/isosuite/splinepy/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/isosuite/splinepy/compare/v0.1.3...v0.2.0
[0.1.3]: https://github.com/isosuite/splinepy/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/isosuite/splinepy/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/isosuite/splinepy/releases/tag/v0.1.1
Loading
Loading