Skip to content

Assemble methode doesn't support traingle mesh with udin=2 #186

@bboeyken

Description

@bboeyken

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions