Skip to content

Commit

Permalink
Fix serendipitous supersmoothness assumption
Browse files Browse the repository at this point in the history
  • Loading branch information
pbrubeck committed Nov 5, 2024
1 parent ae36820 commit 8507be6
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions FIAT/macro.py
Original file line number Diff line number Diff line change
Expand Up @@ -436,13 +436,15 @@ def __init__(self, ref_el, degree, order=1, vorder=0, shape=(), **kwargs):
else:
coeffs = numpy.eye(expansion_set.get_num_members(degree))

if vorder > order + 1:
# order of serendipitous supersmoothness at interior points
sorder = order + sd - 1
if vorder > sorder:
# Impose C^vorder super-smoothness at interior vertices
# C^order automatically gives C^{order+1} at the interior vertex
verts = ref_el.get_vertices()
points = [verts[i] for i in ref_el.get_interior_facets(0)]
jumps = expansion_set.tabulate_jumps(degree, points, order=vorder)
for r in range(order+2, vorder+1):
for r in range(sorder+1, vorder+1):
dual_mat = numpy.dot(numpy.vstack(jumps[r].T), coeffs.T)
_, sig, vt = numpy.linalg.svd(dual_mat, full_matrices=True)
tol = sig[0] * 1E-10
Expand Down

0 comments on commit 8507be6

Please sign in to comment.