|
17 | 17 |
|
18 | 18 | @testitem "Utilities" setup=[Utils] begin
|
19 | 19 | # _KVector
|
20 |
| - v = Meshes.Vec(3, 4) |
21 |
| - @test norm(MeshIntegrals._KVector(v)) ≈ 5.0u"m" |
| 20 | + let v = Meshes.Vec(3, 4) |
| 21 | + @test norm(MeshIntegrals._KVector(v)) ≈ 5.0u"m" |
| 22 | + end |
22 | 23 |
|
23 | 24 | # _units
|
24 |
| - p = Point(1.0u"cm", 2.0u"mm", 3.0u"m") |
25 |
| - @test _units(p) == u"m" |
| 25 | + let p = Point(1.0u"cm", 2.0u"mm", 3.0u"m") |
| 26 | + @test _units(p) == u"m" |
| 27 | + end |
26 | 28 |
|
27 | 29 | # _zeros
|
28 | 30 | @test _zeros(2) == (0.0, 0.0)
|
|
33 | 35 | @test _ones(Float32, 2) == (1.0f0, 1.0f0)
|
34 | 36 | end
|
35 | 37 |
|
36 |
| -@testitem "Differentiation (EnzymeExt loaded)" setup=[Utils] begin |
37 |
| - # supports_autoenzyme(::Type{<:Any}) |
38 |
| - @test MeshIntegrals.supports_autoenzyme(Nothing) == false |
39 |
| - |
40 |
| - # _default_diff_method -- using type or instance, Enzyme-supported combination |
| 38 | +@testitem "Differentiation (MeshIntegralsEnzymeExt loaded)" setup=[Utils] begin |
| 39 | + # supports_autoenzyme & _default_diff_method |
| 40 | + # Nominal usage: Enzyme-supported geometry and FP type |
41 | 41 | let sphere = Sphere(Point(0, 0, 0), 1.0)
|
42 | 42 | @test _default_diff_method(Meshes.Sphere, Float64) isa AutoEnzyme
|
43 | 43 | @test _default_diff_method(sphere, Float64) isa AutoEnzyme
|
44 | 44 | end
|
45 |
| - |
46 |
| - # _default_diff_method -- Enzyme-unsupported FP types |
| 45 | + # supports_autoenzyme(::Type{<:Any}) for CI completeness |
| 46 | + @test MeshIntegrals.supports_autoenzyme(Nothing) == false |
| 47 | + # BezierCurve: blocked by upstream Meshes-Enzyme incompatibility |
| 48 | + let curve = BezierCurve([Point(t, 0) for t in range(-π, π, length = 361)]) |
| 49 | + @test_throws "proven readonly" jacobian(curve, (0.5,), AutoEnzyme()) |
| 50 | + @test _default_diff_method(Meshes.BezierCurve, Float64) isa FiniteDifference |
| 51 | + end |
| 52 | + # Cylinder: blocked by version-dependent upstream Meshes-Enzyme incompatibility |
| 53 | + let cyl = Cylinder(Point(0, 0, 0), Point(0, 0, 1), 2.0) |
| 54 | + @test _default_diff_method(Meshes.Cylinder, Float64) isa FiniteDifference |
| 55 | + end |
| 56 | + # CylinderSurface: blocked by version-dependent upstream Meshes-Enzyme incompatibility |
| 57 | + let cylsurf = CylinderSurface(Point(0, 0, 0), Point(0, 0, 1), 2.0) |
| 58 | + @test _default_diff_method(Meshes.CylinderSurface, Float64) isa FiniteDifference |
| 59 | + end |
| 60 | + # ParametrizedCurve: parametric functions are user-defined, can't guarantee behavior |
| 61 | + @test _default_diff_method(Meshes.ParametrizedCurve, Float64) isa FiniteDifference |
| 62 | + # Non-Float64: other FP types not supported by Enzyme |
47 | 63 | @test _default_diff_method(Meshes.Sphere, Float16) isa FiniteDifference
|
48 | 64 | @test _default_diff_method(Meshes.Sphere, BigFloat) isa FiniteDifference
|
49 | 65 |
|
50 |
| - # _default_diff_method -- geometries that currently error with AutoEnzyme |
51 |
| - @test _default_diff_method(Meshes.BezierCurve, Float64) isa FiniteDifference |
52 |
| - @test _default_diff_method(Meshes.CylinderSurface, Float64) isa FiniteDifference |
53 |
| - @test _default_diff_method(Meshes.Cylinder, Float64) isa FiniteDifference |
54 |
| - @test _default_diff_method(Meshes.ParametrizedCurve, Float64) isa FiniteDifference |
55 |
| - |
56 | 66 | # FiniteDifference
|
57 |
| - @test FiniteDifference().ε ≈ 1e-6 |
| 67 | + let diff = FiniteDifference() |
| 68 | + @test typeof(diff.ε) == Float64 |
| 69 | + @test diff.ε ≈ 1e-6 |
| 70 | + end |
58 | 71 |
|
59 | 72 | # Two-argument jacobian
|
60 |
| - segment = Segment(Point(0), Point(1)) |
61 |
| - @test MeshIntegrals.jacobian(segment, (0.5,)) == (Vec(1),) |
| 73 | + let segment = Segment(Point(0), Point(1)) |
| 74 | + @test MeshIntegrals.jacobian(segment, (0.5,)) == (Vec(1),) |
| 75 | + end |
62 | 76 |
|
63 | 77 | # Test jacobian with wrong number of parametric coordinates
|
64 |
| - box = Box(Point(0, 0), Point(1, 1)) |
65 |
| - @test_throws ArgumentError jacobian(box, zeros(3), FiniteDifference()) |
66 |
| - @test_throws ArgumentError jacobian(box, zeros(3), AutoEnzyme()) |
| 78 | + let box = Box(Point(0, 0), Point(1, 1)) |
| 79 | + @test_throws ArgumentError jacobian(box, zeros(3), FiniteDifference()) |
| 80 | + @test_throws ArgumentError jacobian(box, zeros(3), AutoEnzyme()) |
| 81 | + end |
67 | 82 | end
|
68 | 83 |
|
69 | 84 | @testitem "_ParametricGeometry" setup=[Utils] begin
|
|
0 commit comments