Ferrite-FEM / Ferrite.jl

Finite element toolbox for Julia
https://ferrite-fem.github.io
Other
345 stars 92 forks source link

Revive mixed dimensional relations in topology #843

Open termi-official opened 11 months ago

termi-official commented 11 months ago

The initial version of our topology was able to handle mixed dimensional constraints, but it was removed to obtain type stability in https://github.com/Ferrite-FEM/Ferrite.jl/pull/753 which made the topology construction a bit faster . The idea is for the recovery of this feature basically 6 additional collections for neighborhoods:

termi-official commented 5 months ago

I think with the new face and edge API we can query mixed-dimensional relations in a type stable way with the queries on FaceIndex and EdgeIndex.

Minimal test:

using Ferrite
cells = [
    Hexahedron((1, 2, 3, 4, 5, 6, 7, 8)),
    Quadrilateral((3, 2, 9, 10)),
    ]
nodes = [Node(coord) for coord in zeros(Vec{3,Float64}, 10)]
grid = Grid(cells, nodes)

topo = ExclusiveTopology(grid)
@assert any(.!isempty.(topo.edge_edge_neighbor))