From fa023937187ccf50c6b5c326a9f656aecb3e8dc1 Mon Sep 17 00:00:00 2001 From: Jukka Aho Date: Fri, 21 Nov 2025 00:31:09 +0200 Subject: [PATCH] refactor(topology): Update Quadrilateral reference_coordinates to SVector of Vec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- src/topology/quadrilaterals.jl | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/topology/quadrilaterals.jl b/src/topology/quadrilaterals.jl index bb46c20..c3250e2 100644 --- a/src/topology/quadrilaterals.jl +++ b/src/topology/quadrilaterals.jl @@ -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}