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.
- Add official support for Frustum, Pyramid, and Wedge geometries.
- Improved unit tests for
Meshes.Cylinder
andMeshes.CylinderSurface
(GitHub Issue #67).
- Implemented a more efficient internal parametric transformation for
Meshes.Tetrahedron
, resulting in about an 80% integral performance improvement.
- Fixed a bug where
integral
would default todiff_method=AutoEnzyme()
even when the Enzyme extension isn't loaded.
- 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 manual specification of
GaussKronrod
rules for surfaces, i.e. geometries whereMeshes.paramdim(geometry) == 2
. A warning is now generated recommending users switch toHAdaptiveCubature
.
- 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
MeshIntegrals.jl is now owned by the JuliaGeometry organization!
- Added a benchmarking suite using AirspeedVelocity.jl.
- Implemented more unit tests with analytical solutions.
- Tagged unit tests for
Meshes.Box
(4D) andTetrahedron
as:extended
, removing them from automatic CI testing due to lengthy compute times.
- Adds official support and unit testing for integrating new
Meshes.ParametrizedCurve
geometries.
- 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.
- 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
- Adds official support and unit testing for integrating
Meshes.Quadrangle
geometries.
- Continued work transitioning away from previous
@test
generation system.
- 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
.
- 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.
- Remove
derivative
andunitdirection
functions. Allderivative
functionality was merged intojacobian
.