The assemble function can't deal with triangulized surface in udim = 2 for lagrange and nedelec interpolation. assemble calls quaddata and _allocate_workspace. This last method calls the following function, for a lagrange reference space:
|
# Evaluete linear lagrange elements on a triangle |
|
function (f::LagrangeRefSpace{T,1,3})(t) where T |
This methode calculates the normal of a triangle. However in a udim = 2, a triangle has no normal vector.
A solution is to overload this function so that it doesn't require the normal vector.
Example for the issue is the following:
Ω = meshrectangle(1.0, 1.0, 0.5, 2)
X = lagrangec0d1(Ω, boundary(Ω))
I = BEAST.Identity()
assemble(I, X,X)
Which give rise to "BoundsError: attempt to access Tuple{} at index [1]", meaning there is no normal vector.
The assemble function can't deal with triangulized surface in udim = 2 for lagrange and nedelec interpolation. assemble calls quaddata and _allocate_workspace. This last method calls the following function, for a lagrange reference space:
BEAST.jl/src/bases/local/laglocal.jl
Lines 213 to 214 in 55ec0a3
This methode calculates the normal of a triangle. However in a udim = 2, a triangle has no normal vector.
A solution is to overload this function so that it doesn't require the normal vector.
Example for the issue is the following:
Which give rise to "BoundsError: attempt to access Tuple{} at index [1]", meaning there is no normal vector.