|
26 | 26 | end |
27 | 27 |
|
28 | 28 | @testitem "Differentiation (EnzymeExt loaded)" setup=[Utils] begin |
29 | | - # supports_autoenzyme(::Type{<:Any}) |
30 | | - @test MeshIntegrals.supports_autoenzyme(Nothing) == false |
31 | | - |
32 | | - # Check currency of supports_autoenzyme status |
33 | | - curve = BezierCurve([Point(t, 0) for t in range(-π, π, length = 361)]) |
34 | | - @test_throws "proven readonly" jacobian(curve, (0.5,), AutoEnzyme()) |
35 | | - cyl = Cylinder(Point(0, 0, 0), Point(0, 0, 1), 2.0) |
36 | | - @test_throws "jl_get_builtin_fptr" jacobian(cyl, (0.5, 0.5, 0.5), AutoEnzyme()) |
37 | | - cylsurf = CylinderSurface(Point(0, 0, 0), Point(0, 0, 1), 2.0) |
38 | | - @test_throws "jl_get_builtin_fptr" jacobian(cylsurf, (0.5, 0.5), AutoEnzyme()) |
39 | | - |
40 | | - # _default_diff_method -- using type or instance, Enzyme-supported combination |
| 29 | + # supports_autoenzyme & _default_diff_method |
| 30 | + # Nominal usage: Enzyme-supported geometry and FP type |
41 | 31 | let sphere = Sphere(Point(0, 0, 0), 1.0) |
42 | 32 | @test _default_diff_method(Meshes.Sphere, Float64) isa AutoEnzyme |
43 | 33 | @test _default_diff_method(sphere, Float64) isa AutoEnzyme |
44 | 34 | end |
45 | | - |
46 | | - # _default_diff_method -- Enzyme-unsupported FP types |
| 35 | + # supports_autoenzyme(::Type{<:Any}) for CI completeness |
| 36 | + @test MeshIntegrals.supports_autoenzyme(Nothing) == false |
| 37 | + # BezierCurve: blocked by upstream Meshes-Enzyme incompatibility |
| 38 | + let curve = BezierCurve([Point(t, 0) for t in range(-π, π, length = 361)]) |
| 39 | + @test_throws "proven readonly" jacobian(curve, (0.5,), AutoEnzyme()) |
| 40 | + @test _default_diff_method(Meshes.BezierCurve, Float64) isa FiniteDifference |
| 41 | + end |
| 42 | + # Cylinder: blocked by upstream Meshes-Enzyme incompatibility |
| 43 | + let cyl = Cylinder(Point(0, 0, 0), Point(0, 0, 1), 2.0) |
| 44 | + @test_throws "jl_get_builtin_fptr" jacobian(cyl, (0.5, 0.5, 0.5), AutoEnzyme()) |
| 45 | + @test _default_diff_method(Meshes.Cylinder, Float64) isa FiniteDifference |
| 46 | + end |
| 47 | + # CylinderSurface: blocked by upstream Meshes-Enzyme incompatibility |
| 48 | + let cylsurf = CylinderSurface(Point(0, 0, 0), Point(0, 0, 1), 2.0) |
| 49 | + @test_throws "jl_get_builtin_fptr" jacobian(cylsurf, (0.5, 0.5), AutoEnzyme()) |
| 50 | + @test _default_diff_method(Meshes.CylinderSurface, Float64) isa FiniteDifference |
| 51 | + end |
| 52 | + # ParametrizedCurve: no default AD since user-defined functions |
| 53 | + @test _default_diff_method(Meshes.ParametrizedCurve, Float64) isa FiniteDifference |
| 54 | + # Non-Float64: other FP types not supported by Enzyme |
47 | 55 | @test _default_diff_method(Meshes.Sphere, Float16) isa FiniteDifference |
48 | 56 | @test _default_diff_method(Meshes.Sphere, BigFloat) isa FiniteDifference |
49 | 57 |
|
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 | 58 | # FiniteDifference |
57 | 59 | @test FiniteDifference().ε ≈ 1e-6 |
58 | 60 |
|
|
0 commit comments