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}