Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a changelog #158

Merged
merged 6 commits into from
Dec 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
105 changes: 105 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# 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).


## [Unreleased]

### Changed

- Implemented a more efficient internal parametric transformation for `Meshes.Tetrahedron`, resulting in about an 80% integral performance improvement.


## [0.16.0] - 2024-12-14

### Added

- 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.
- Implemented `DifferentiationMethod` types:
- `FiniteDifference` for finite-difference approximation.
- `AutoEnzyme` for using [Enzyme.jl](https://github.com/EnzymeAD/Enzyme.jl) automatic differentiation (AD) via a package extension.
- Added `diff_method` as an optional third argument to the `jacobian` and `differential` API.
- Adds standardized support for integrating over `Tetrahedron` volumes.
- Generalizes integrand functions to support any `f::Any` with a method defined for `f(::Point)`.
- 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`.
- Significant performance improvements:
- Achieved an 80x improvement when integrating over `BezierCurve`.
- Achieved an up-to-4x improvement when integrating using `HAdaptiveCubature`.

### Deprecated

- 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`.

### Fixed

- Refactored the unit test system.
- 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.
- Reorganized `@testsnippet`s to exist in same source file as relevant tests.
- Removed `:extended` tag from `Tetrahedron` now that performance is significantly improved.


## [0.15.2] - 2024-10-25

MeshIntegrals.jl is now owned by the JuliaGeometry organization!

### Added

- Added a benchmarking suite using [AirspeedVelocity.jl](https://github.com/MilesCranmer/AirspeedVelocity.jl).
- Implemented more unit tests with analytical solutions.

### Changed

- Tagged unit tests for `Meshes.Box` (4D) and `Tetrahedron` as `:extended`, removing them from automatic CI testing due to lengthy compute times.


## [0.15.1] - 2024-10-11

### Added

- Adds official support and unit testing for integrating new `Meshes.ParametrizedCurve` geometries.


## [0.15.0] - 2024-10-10

### Added

- Adds support for integrating geometries with any number of parametric dimensions by generalizing `differential` to n-dimensions via geometric algebra.
- Adds official support and unit testing for integrating `Meshes.Ellipsoid` and `Meshes.Hexahedron` geometries.

### Changed

- Refactored the unit test system.
- 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.
- Used [TestItems.jl](https://github.com/julia-vscode/TestItems.jl) to define independent `@testitem` packages, many with analytically-derived solutions.


## [0.14.1] - 2024-10-04

### Added

- Adds official support and unit testing for integrating `Meshes.Quadrangle` geometries.

### Changed

- Continued work transitioning away from previous `@test` generation system.

### Fixed

- Fixed a bug in `differential` finite-difference approximation that may have reduced accuracy of some integral calculations.
- Made improvements to type stability with floating point type keyword argument `FP`.


## [0.14.0] - 2024-09-28

### Changed

- Rename `IntegrationAlgorithm` to `IntegrationRule` and consolidate terminology around integration rules (versus "algorithms", "settings", etc).
- Convert floating point precision option `FP` from an optional argument to a keyword argument.
- Continued work transitioning away from previous `@test` generation system.

### Removed

- Remove `derivative` and `unitdirection` functions. All `derivative` functionality was merged into `jacobian`.
1 change: 1 addition & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ makedocs(
"Example Usage" => "usage.md"
],
"Developer Notes" => [
"Changelog" => "CHANGELOG.md",
"How it Works" => "how_it_works.md",
"Specializations" => "specializations.md"
],
Expand Down
1 change: 1 addition & 0 deletions docs/src/CHANGELOG.md
Loading