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.
- Adds integral methods for
PolyAreaand subtypes ofDomainwith explicit tests forCartesianGrid,PolyArea,RegularGrid,SimpleMesh, andStructuredGrid.
- Generalizes the alias functions (e.g.
lineintegral) to also acceptDomains. - Updated docstrings to improve clarity and consistency.
- Updated compatibility entry for CoordRefSystems.jl to support v0.17 and v0.18 (#175, #180).
- Add official support for integrating over
Frustum,Pyramid, andWedgegeometries (#168).
- Improved unit testing with analytical solutions (#162, #166).
- Made significant improvements to documentation (#165).
- Updated compatibility entry for Meshes.jl to support v0.53 (#170, #171).
- Updates several CI dependencies (#163, #167, #172).
- Implemented a more efficient internal parametric transformation for
Meshes.Tetrahedron, resulting in about an 80% integral performance improvement.
- Fixed a bug where
integralwould default todiff_method=AutoEnzyme()even when the Enzyme extension isn't loaded.
- Added a
diff_methodkeyword argument to theintegralAPI, allowing the user to specify which differentiation method should be used when calculating differential element magnitudes throughout the integration domain. - Implemented
DifferentiationMethodtypes:FiniteDifferencefor finite-difference approximation.AutoEnzymefor using Enzyme.jl automatic differentiation (AD) via a package extension.
- Added
diff_methodas an optional third argument to thejacobiananddifferentialAPI. - Adds standardized support for integrating over
Tetrahedronvolumes. - Generalizes integrand functions to support any
f::Anywith a method defined forf(::Point). - Refactored specialization methods by implementing an internal
_ParametricGeometry <: Meshes.Geometryto 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
GaussKronrodrules 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.jltests by constructing aTestableGeometrypackage and passing it to a@testgeneration function to provide more thorough and standardized test coverage. - Reorganized
@testsnippets to exist in same source file as relevant tests. - Removed
:extendedtag fromTetrahedronnow 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) andTetrahedronas:extended, removing them from automatic CI testing due to lengthy compute times.
- Adds official support and unit testing for integrating new
Meshes.ParametrizedCurvegeometries.
- Adds support for integrating geometries with any number of parametric dimensions by generalizing
differentialto n-dimensions via geometric algebra. - Adds official support and unit testing for integrating
Meshes.EllipsoidandMeshes.Hexahedrongeometries.
- Refactored the unit test system.
- Completed transition away from previous
@testgeneration system which only tested unit integrands (i.e.f(point) = 1.0) usingMeshes.measureas a benchmark. - Used TestItems.jl to define independent
@testitempackages, many with analytically-derived solutions.
- Completed transition away from previous
- Adds official support and unit testing for integrating
Meshes.Quadranglegeometries.
- Continued work transitioning away from previous
@testgeneration system.
- Fixed a bug in
differentialfinite-difference approximation that may have reduced accuracy of some integral calculations. - Made improvements to type stability with floating point type keyword argument
FP.
- Rename
IntegrationAlgorithmtoIntegrationRuleand consolidate terminology around integration rules (versus "algorithms", "settings", etc). - Convert floating point precision option
FPfrom an optional argument to a keyword argument. - Continued work transitioning away from previous
@testgeneration system.
- Remove
derivativeandunitdirectionfunctions. Allderivativefunctionality was merged intojacobian.