refactor(topology): Update Quadrilateral reference_coordinates to SVector of Vec

- Changed Quad4: tuple of tuples → SVector of Vec{2,Float64}
- Added Quad8: SVector with 4 corners + 4 edge midpoints
- Added Quad9: SVector with 4 corners + 4 edge midpoints + 1 center node
- All return SVector(Vec{2}(...), ...) format with comments
This commit is contained in:
Jukka Aho
2025-11-21 00:31:09 +02:00
parent 0926a7cdbe
commit fa02393718
+33 -1
View File
@@ -21,7 +21,39 @@ nnodes(::Quadrilateral{N}) where {N} = N
dim(::Quadrilateral{N}) where {N} = 2
function reference_coordinates(::Quadrilateral{4})
return ((-1.0, -1.0), (1.0, -1.0), (1.0, 1.0), (-1.0, 1.0))
return SVector(
Vec{2,Float64}((-1.0, -1.0)),
Vec{2,Float64}((1.0, -1.0)),
Vec{2,Float64}((1.0, 1.0)),
Vec{2,Float64}((-1.0, 1.0))
)
end
function reference_coordinates(::Quadrilateral{8})
return SVector(
Vec{2,Float64}((-1.0, -1.0)), # N1: Corner
Vec{2,Float64}((1.0, -1.0)), # N2: Corner
Vec{2,Float64}((1.0, 1.0)), # N3: Corner
Vec{2,Float64}((-1.0, 1.0)), # N4: Corner
Vec{2,Float64}((0.0, -1.0)), # N5: Edge midpoint
Vec{2,Float64}((1.0, 0.0)), # N6: Edge midpoint
Vec{2,Float64}((0.0, 1.0)), # N7: Edge midpoint
Vec{2,Float64}((-1.0, 0.0)) # N8: Edge midpoint
)
end
function reference_coordinates(::Quadrilateral{9})
return SVector(
Vec{2,Float64}((-1.0, -1.0)), # N1: Corner
Vec{2,Float64}((1.0, -1.0)), # N2: Corner
Vec{2,Float64}((1.0, 1.0)), # N3: Corner
Vec{2,Float64}((-1.0, 1.0)), # N4: Corner
Vec{2,Float64}((0.0, -1.0)), # N5: Edge midpoint
Vec{2,Float64}((1.0, 0.0)), # N6: Edge midpoint
Vec{2,Float64}((0.0, 1.0)), # N7: Edge midpoint
Vec{2,Float64}((-1.0, 0.0)), # N8: Edge midpoint
Vec{2,Float64}((0.0, 0.0)) # N9: Center node
)
end
function edges(::Quadrilateral{N}) where {N}