diff --git a/previews/PR157/.documenter-siteinfo.json b/previews/PR157/.documenter-siteinfo.json
index 776a03d2..12de35bb 100644
--- a/previews/PR157/.documenter-siteinfo.json
+++ b/previews/PR157/.documenter-siteinfo.json
@@ -1 +1 @@
-{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2024-12-19T21:47:47","documenter_version":"1.8.0"}}
\ No newline at end of file
+{"documenter":{"julia_version":"1.9.4","generation_timestamp":"2024-12-19T23:05:49","documenter_version":"1.8.0"}}
\ No newline at end of file
diff --git a/previews/PR157/api/index.html b/previews/PR157/api/index.html
index 9ecd8e4c..531c4c96 100644
--- a/previews/PR157/api/index.html
+++ b/previews/PR157/api/index.html
@@ -1,5 +1,5 @@
-
Numerically integrate a given function f(::Point) over the domain defined by a geometry using a particular numerical integration rule with floating point precision of type FP.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
geometry: some Meshes.Geometry that defines the integration domain
rule: optionally, the IntegrationRule used for integration (by default
GaussKronrod() in 1D and HAdaptiveCubature() else)
Keyword Arguments
diff_method::DifferentiationMethod = _default_diff_method(geometry, FP): the method to
use for calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired.
Like integral but integrates along the domain defined by curve.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
curve: a Meshes.BezierCurve that defines the integration domain
rule = GaussKronrod(): optionally, the IntegrationRule used for integration
Keyword Arguments
diff_method::DifferentiationMethod = Analytical(): the method to use for
calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired
alg = Meshes.Horner(): the method to use for parametrizing curve. Alternatively,
alg=Meshes.DeCasteljau() can be specified for increased accuracy, but comes with a steep performance cost, especially for curves with a large number of control points.
Like integral but integrates along the domain defined by ring. The specified integration rule is applied independently to each segment formed by consecutive points in the Ring.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
ring: a Ring that defines the integration domain
rule = GaussKronrod(): optionally, the IntegrationRule used for integration
Keyword Arguments
diff_method::DifferentiationMethod = FiniteDifference(): the method to use for
calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired
Like integral but integrates along the domain defined by rope. The specified integration rule is applied independently to each segment formed by consecutive points in the Rope.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
rope: a Rope that defines the integration domain
rule = GaussKronrod(): optionally, the IntegrationRule used for integration
Keyword Arguments
diff_method::DifferentiationMethod = FiniteDifference(): the method to use for
calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired
_ParametricGeometry is used internally in MeshIntegrals.jl to behave like a generic wrapper for geometries with custom parametric functions. This type is used for transforming other geometries to enable integration over the standard rectangular [0,1]^n domain.
Meshes.jl adopted a ParametrizedCurve type that performs a similar role as of v0.51.20, but only supports geometries with one parametric dimension. Support is additionally planned for more types that span surfaces and volumes, at which time this custom type will probably no longer be required.
Fields
fun - anything callable representing a parametric function: (ts...) -> Meshes.Point
Type Structure
M <: Meshes.Manifold - same usage as in Meshes.Geometry{M, C}
C <: CoordRefSystems.CRS - same usage as in Meshes.Geometry{M, C}
_parametric(geometry::G) where {G <: Meshes.Geometry} -> Function
Used in MeshIntegrals.jl for defining parametric functions that transform non-standard geometries into a form that can be integrated over the standard rectangular [0,1]^n limits.
Numerically integrate a given function f(::Point) along a line-like geometry using a particular numerical integration rule with floating point precision of type FP.
Numerically integrate a given function f(::Point) along a surface geometry using a particular numerical integration rule with floating point precision of type FP.
Numerically integrate a given function f(::Point) throughout a volumetric geometry using a particular numerical integration rule with floating point precision of type FP.
The h-adaptive Gauss-Kronrod quadrature rule implemented by QuadGK.jl. All standard QuadGK.quadgk keyword arguments are supported. This rule works natively for one dimensional geometries; some two- and three-dimensional geometries are additionally supported using nested integral solvers with the specified kwarg settings.
An n'th-order Gauss-Legendre quadrature rule. Nodes and weights are efficiently calculated using FastGaussQuadrature.jl.
So long as the integrand function can be well-approximated by a polynomial of order 2n-1, this method should yield results with 16-digit accuracy in O(n) time. If the function is know to have some periodic content, then n should (at a minimum) be greater than the expected number of periods over the geometry, e.g. length(geometry)/λ.
A category of types used to specify the desired method for calculating derivatives. Derivatives are used to form Jacobian matrices when calculating the differential element size throughout the integration region.
Calculate the differential element (length, area, volume, etc) of the parametric function for geometry at arguments ts. Optionally, direct the use of a particular differentiation method diff_method; by default use analytic solutions where possible and finite difference approximations otherwise.
Arguments
geometry: some Meshes.Geometry of N parametric dimensions
ts: a parametric point specified as a vector or tuple of length N
Calculate the Jacobian of a geometry's parametric function at some point ts. Optionally, direct the use of a particular differentiation method diff_method; by default use analytic solutions where possible and finite difference approximations otherwise.
Arguments
geometry: some Meshes.Geometry of N parametric dimensions
ts: a parametric point specified as a vector or tuple of length N
Numerically integrate a given function f(::Point) over the domain defined by a geometry using a particular numerical integration rule with floating point precision of type FP.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
geometry: some Meshes.Geometry that defines the integration domain
rule: optionally, the IntegrationRule used for integration (by default
GaussKronrod() in 1D and HAdaptiveCubature() else)
Keyword Arguments
diff_method::DifferentiationMethod = _default_diff_method(geometry, FP): the method to
use for calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired.
Like integral but integrates along the domain defined by curve.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
curve: a Meshes.BezierCurve that defines the integration domain
rule = GaussKronrod(): optionally, the IntegrationRule used for integration
Keyword Arguments
diff_method::DifferentiationMethod = Analytical(): the method to use for
calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired
alg = Meshes.Horner(): the method to use for parametrizing curve. Alternatively,
alg=Meshes.DeCasteljau() can be specified for increased accuracy, but comes with a steep performance cost, especially for curves with a large number of control points.
Like integral but integrates along the domain defined by ring. The specified integration rule is applied independently to each segment formed by consecutive points in the Ring.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
ring: a Ring that defines the integration domain
rule = GaussKronrod(): optionally, the IntegrationRule used for integration
Keyword Arguments
diff_method::DifferentiationMethod = FiniteDifference(): the method to use for
calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired
Like integral but integrates along the domain defined by rope. The specified integration rule is applied independently to each segment formed by consecutive points in the Rope.
Arguments
f: an integrand function, i.e. any callable with a method f(::Meshes.Point)
rope: a Rope that defines the integration domain
rule = GaussKronrod(): optionally, the IntegrationRule used for integration
Keyword Arguments
diff_method::DifferentiationMethod = FiniteDifference(): the method to use for
calculating Jacobians that are used to calculate differential elements
FP = Float64: the floating point precision desired
_ParametricGeometry is used internally in MeshIntegrals.jl to behave like a generic wrapper for geometries with custom parametric functions. This type is used for transforming other geometries to enable integration over the standard rectangular [0,1]^n domain.
Meshes.jl adopted a ParametrizedCurve type that performs a similar role as of v0.51.20, but only supports geometries with one parametric dimension. Support is additionally planned for more types that span surfaces and volumes, at which time this custom type will probably no longer be required.
Fields
fun - anything callable representing a parametric function: (ts...) -> Meshes.Point
Type Structure
M <: Meshes.Manifold - same usage as in Meshes.Geometry{M, C}
C <: CoordRefSystems.CRS - same usage as in Meshes.Geometry{M, C}
_parametric(geometry::G) where {G <: Meshes.Geometry} -> Function
Used in MeshIntegrals.jl for defining parametric functions that transform non-standard geometries into a form that can be integrated over the standard rectangular [0,1]^n limits.
Numerically integrate a given function f(::Point) along a line-like geometry using a particular numerical integration rule with floating point precision of type FP.
Numerically integrate a given function f(::Point) along a surface geometry using a particular numerical integration rule with floating point precision of type FP.
Numerically integrate a given function f(::Point) throughout a volumetric geometry using a particular numerical integration rule with floating point precision of type FP.
The h-adaptive Gauss-Kronrod quadrature rule implemented by QuadGK.jl. All standard QuadGK.quadgk keyword arguments are supported. This rule works natively for one dimensional geometries; some two- and three-dimensional geometries are additionally supported using nested integral solvers with the specified kwarg settings.
An n'th-order Gauss-Legendre quadrature rule. Nodes and weights are efficiently calculated using FastGaussQuadrature.jl.
So long as the integrand function can be well-approximated by a polynomial of order 2n-1, this method should yield results with 16-digit accuracy in O(n) time. If the function is know to have some periodic content, then n should (at a minimum) be greater than the expected number of periods over the geometry, e.g. length(geometry)/λ.
A category of types used to specify the desired method for calculating derivatives. Derivatives are used to form Jacobian matrices when calculating the differential element size throughout the integration region.
Calculate the differential element (length, area, volume, etc) of the parametric function for geometry at arguments ts. Optionally, direct the use of a particular differentiation method diff_method; by default use analytic solutions where possible and finite difference approximations otherwise.
Arguments
geometry: some Meshes.Geometry of N parametric dimensions
ts: a parametric point specified as a vector or tuple of length N
Calculate the Jacobian of a geometry's parametric function at some point ts. Optionally, direct the use of a particular differentiation method diff_method; by default use analytic solutions where possible and finite difference approximations otherwise.
Arguments
geometry: some Meshes.Geometry of N parametric dimensions
ts: a parametric point specified as a vector or tuple of length N
This document was generated with Documenter.jl version 1.8.0 on Thursday 19 December 2024. Using Julia version 1.9.4.
diff --git a/previews/PR157/how_it_works/index.html b/previews/PR157/how_it_works/index.html
index 7c6a27b7..970f2ddf 100644
--- a/previews/PR157/how_it_works/index.html
+++ b/previews/PR157/how_it_works/index.html
@@ -8,4 +8,4 @@
ball(tρ, tθ, tφ) # for args in range [0, 1], maps to a corresponding Meshes.Point
-ball(0, tθ, tφ) == center
In effect, we can now use the geometry itself as a function that maps from three normalized ($0 \le t \le 1$) arguments to every point on the geometry. For the sake of generalization, let this parametric function be called $g$.
Each of these partial derivatives is a vector representing the direction that changing each parametric function argument will move the resultant point. The differential element ($E$) size is then calculated using geometric algebra as the magnitude of the exterior product ($\wedge$) of these three vectors.
Finally, we use the parametric function itself, $g$, as a map to all points $\bar{r}$ in the integration domain. Since Meshes.Geometry parametric functions all operate on normalized domains, we can now solve any volume integral as simply
This form of integral can be trivially generalized to support $n$-dimensional geometries in a form that enables the use of a wide range of numerical integration libraries.
Settings
This document was generated with Documenter.jl version 1.8.0 on Thursday 19 December 2024. Using Julia version 1.9.4.