Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.16.1] - 2024-12-29
Changed
- Implemented a more efficient internal parametric transformation for
Meshes.Tetrahedron
, resulting in about an 80% integral performance improvement.
Fixed
- Fixed a bug where
integral
would default todiff_method=AutoEnzyme()
even when the Enzyme extension isn't loaded.
[0.16.0] - 2024-12-14
Added
- Added a
diff_method
keyword argument to theintegral
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 automatic differentiation (AD) via a package extension.
- Added
diff_method
as an optional third argument to thejacobian
anddifferential
API. - Adds standardized support for integrating over
Tetrahedron
volumes. - Generalizes integrand functions to support any
f::Any
with a method defined forf(::Point)
. - Refactored specialization methods by implementing an internal
_ParametricGeometry <: Meshes.Geometry
to define geometries with custom parametric functions, standardizing support forBezierCurve
,Line
,Plane
,Ray
,Tetrahedron
, andTriangle
. - Significant performance improvements:
- Achieved an 80x improvement when integrating over
BezierCurve
. - Achieved an up-to-4x improvement when integrating using
HAdaptiveCubature
.
- Achieved an 80x improvement when integrating over
Deprecated
- Deprecated manual specification of
GaussKronrod
rules for surfaces, i.e. geometries whereMeshes.paramdim(geometry) == 2
. A warning is now generated recommending users switch toHAdaptiveCubature
.
Fixed
- Refactored the unit test system.
- Standardized
combinations.jl
tests by constructing aTestableGeometry
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 fromTetrahedron
now that performance is significantly improved.
- Standardized
[0.15.2] - 2024-10-25
MeshIntegrals.jl is now owned by the JuliaGeometry organization!
Added
- Added a benchmarking suite using AirspeedVelocity.jl.
- Implemented more unit tests with analytical solutions.
Changed
- Tagged unit tests for
Meshes.Box
(4D) andTetrahedron
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
andMeshes.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
) usingMeshes.measure
as a benchmark. - Used TestItems.jl to define independent
@testitem
packages, many with analytically-derived solutions.
- Completed transition away from previous
[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
toIntegrationRule
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
andunitdirection
functions. Allderivative
functionality was merged intojacobian
.