From 503bc152bcd7b1e689b2aa3542f4ef3decff46a3 Mon Sep 17 00:00:00 2001 From: Pablo Brubeck Date: Mon, 11 Dec 2023 23:24:12 +0000 Subject: [PATCH] different normalization --- FIAT/expansions.py | 14 +++++--------- test/unit/test_fiat.py | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/FIAT/expansions.py b/FIAT/expansions.py index e784dfa4e..12c48be04 100644 --- a/FIAT/expansions.py +++ b/FIAT/expansions.py @@ -32,14 +32,11 @@ def jrc(a, b, n): def integrated_jrc(a, b, n): """Integrated Jacobi recurrence coefficients""" if n == 1: - an = (a + b + 2) / 4 - bn = (a - 3*b - 2) / 4 + an = (a + b + 2) / 2 + bn = (a - 3*b - 2) / 2 cn = 0.0 else: an, bn, cn = jrc(a-1, b+1, n-1) - an *= n / (n+1) - bn *= n / (n+1) - cn *= (n-1) / (n+1) return an, bn, cn @@ -137,10 +134,9 @@ def dubiner_recurrence(dim, n, order, ref_pts, jacobian, variant=None): # normalize for index in reference_element.lattice_iter(0, n+1, codim+1): alpha = 2 * sum(index) + len(index) - - if variant == "integral" and index[-1] > 1: - n1 = index[-1] - 1 - alpha = 3*n1 * (n1 * alpha + 1) + if variant == "integral" and sum(index) > 1: + n1 = sum(index) - 1 + alpha = 3*n1*(n1*alpha + len(index)) / (n1+1)**2 scale = math.sqrt(0.5 * alpha) icur = idx(*index) diff --git a/test/unit/test_fiat.py b/test/unit/test_fiat.py index 2ddae0a8f..2d17cfe97 100644 --- a/test/unit/test_fiat.py +++ b/test/unit/test_fiat.py @@ -623,7 +623,7 @@ def test_make_bubbles(cell): for entity in range(len(top[dim])): points.extend(cell.make_points(dim, entity, degree + 1)) values = B.tabulate(points)[(0,) * sd] - assert np.allclose(values, 0, atol=1E-14) + assert np.allclose(values, 0, atol=1E-12) # test linear independence m = B.get_num_members()