|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | + |
| 9 | +## [Unreleased] |
| 10 | + |
| 11 | +### Changed |
| 12 | + |
| 13 | +- Implemented a more efficient internal parametric transformation for `Meshes.Tetrahedron`, resulting in about an 80% integral performance improvement. |
| 14 | + |
| 15 | + |
| 16 | +## [0.16.0] - 2024-12-14 |
| 17 | + |
| 18 | +### Added |
| 19 | + |
| 20 | +- Added a `diff_method` keyword argument to the `integral` API, allowing the user to specify which differentiation method should be used when calculating differential element magnitudes throughout the integration domain. |
| 21 | +- Implemented `DifferentiationMethod` types: |
| 22 | + - `FiniteDifference` for finite-difference approximation. |
| 23 | + - `AutoEnzyme` for using [Enzyme.jl](https://github.com/EnzymeAD/Enzyme.jl) automatic differentiation (AD) via a package extension. |
| 24 | +- Added `diff_method` as an optional third argument to the `jacobian` and `differential` API. |
| 25 | +- Adds standardized support for integrating over `Tetrahedron` volumes. |
| 26 | +- Generalizes integrand functions to support any `f::Any` with a method defined for `f(::Point)`. |
| 27 | +- Refactored specialization methods by implementing an internal `_ParametricGeometry <: Meshes.Geometry` to define geometries with custom parametric functions, standardizing support for `BezierCurve`, `Line`, `Plane`, `Ray`, `Tetrahedron`, and `Triangle`. |
| 28 | +- Significant performance improvements: |
| 29 | + - Achieved an 80x improvement when integrating over `BezierCurve`. |
| 30 | + - Achieved an up-to-4x improvement when integrating using `HAdaptiveCubature`. |
| 31 | + |
| 32 | +### Deprecated |
| 33 | + |
| 34 | +- Deprecated manual specification of `GaussKronrod` rules for surfaces, i.e. geometries where `Meshes.paramdim(geometry) == 2`. A warning is now generated recommending users switch to `HAdaptiveCubature`. |
| 35 | + |
| 36 | +### Fixed |
| 37 | + |
| 38 | +- Refactored the unit test system. |
| 39 | + - Standardized `combinations.jl` tests by constructing a `TestableGeometry` package and passing it to a `@test` generation function to provide more thorough and standardized test coverage. |
| 40 | + - Reorganized `@testsnippet`s to exist in same source file as relevant tests. |
| 41 | + - Removed `:extended` tag from `Tetrahedron` now that performance is significantly improved. |
| 42 | + |
| 43 | + |
| 44 | +## [0.15.2] - 2024-10-25 |
| 45 | + |
| 46 | +MeshIntegrals.jl is now owned by the JuliaGeometry organization! |
| 47 | + |
| 48 | +### Added |
| 49 | + |
| 50 | +- Added a benchmarking suite using [AirspeedVelocity.jl](https://github.com/MilesCranmer/AirspeedVelocity.jl). |
| 51 | +- Implemented more unit tests with analytical solutions. |
| 52 | + |
| 53 | +### Changed |
| 54 | + |
| 55 | +- Tagged unit tests for `Meshes.Box` (4D) and `Tetrahedron` as `:extended`, removing them from automatic CI testing due to lengthy compute times. |
| 56 | + |
| 57 | + |
| 58 | +## [0.15.1] - 2024-10-11 |
| 59 | + |
| 60 | +### Added |
| 61 | + |
| 62 | +- Adds official support and unit testing for integrating new `Meshes.ParametrizedCurve` geometries. |
| 63 | + |
| 64 | + |
| 65 | +## [0.15.0] - 2024-10-10 |
| 66 | + |
| 67 | +### Added |
| 68 | + |
| 69 | +- Adds support for integrating geometries with any number of parametric dimensions by generalizing `differential` to n-dimensions via geometric algebra. |
| 70 | +- Adds official support and unit testing for integrating `Meshes.Ellipsoid` and `Meshes.Hexahedron` geometries. |
| 71 | + |
| 72 | +### Changed |
| 73 | + |
| 74 | +- Refactored the unit test system. |
| 75 | + - Completed transition away from previous `@test` generation system which only tested unit integrands (i.e. `f(point) = 1.0`) using `Meshes.measure` as a benchmark. |
| 76 | + - Used [TestItems.jl](https://github.com/julia-vscode/TestItems.jl) to define independent `@testitem` packages, many with analytically-derived solutions. |
| 77 | + |
| 78 | + |
| 79 | +## [0.14.1] - 2024-10-04 |
| 80 | + |
| 81 | +### Added |
| 82 | + |
| 83 | +- Adds official support and unit testing for integrating `Meshes.Quadrangle` geometries. |
| 84 | + |
| 85 | +### Changed |
| 86 | + |
| 87 | +- Continued work transitioning away from previous `@test` generation system. |
| 88 | + |
| 89 | +### Fixed |
| 90 | + |
| 91 | +- Fixed a bug in `differential` finite-difference approximation that may have reduced accuracy of some integral calculations. |
| 92 | +- Made improvements to type stability with floating point type keyword argument `FP`. |
| 93 | + |
| 94 | + |
| 95 | +## [0.14.0] - 2024-09-28 |
| 96 | + |
| 97 | +### Changed |
| 98 | + |
| 99 | +- Rename `IntegrationAlgorithm` to `IntegrationRule` and consolidate terminology around integration rules (versus "algorithms", "settings", etc). |
| 100 | +- Convert floating point precision option `FP` from an optional argument to a keyword argument. |
| 101 | +- Continued work transitioning away from previous `@test` generation system. |
| 102 | + |
| 103 | +### Removed |
| 104 | + |
| 105 | +- Remove `derivative` and `unitdirection` functions. All `derivative` functionality was merged into `jacobian`. |
0 commit comments