Skip to content

Commit 2e01eec

Browse files
authored
Add "gl" Lagrange variant (#295)
* legendre and legendre-polynomials * gl and legendre * changelog * update tests
1 parent ca5b613 commit 2e01eec

File tree

5 files changed

+15
-3
lines changed

5 files changed

+15
-3
lines changed

CHANGELOG_SINCE_LAST_VERSION.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Allow "gl" variant of Lagrange element

symfem/elements/lagrange.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ def __init__(self, reference: Reference, order: int, variant: str = "equispaced"
6161
for f in basis:
6262
dofs.append(IntegralAgainst(reference, f, (edim, e_n)))
6363
else:
64-
points, _ = get_quadrature(variant, order + 1)
64+
if variant == "gl":
65+
points, _ = get_quadrature("legendre", order + 1)
66+
else:
67+
points, _ = get_quadrature(variant, order + 1)
6568
if variant != "equispaced":
6669
assert reference.name in ["interval", "quadrilateral", "hexahedron"]
6770

symfem/elements/lagrange_prism.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@ def __init__(self, reference: Reference, order: int, variant: str = "equispaced"
5454
elif variant == "lobatto":
5555
raise NotImplementedError()
5656
else:
57-
points, _ = get_quadrature(variant, order + 1)
57+
if variant == "gl":
58+
points, _ = get_quadrature("legendre", order + 1)
59+
else:
60+
points, _ = get_quadrature(variant, order + 1)
5861

5962
# Vertices
6063
for v_n, v in enumerate(reference.vertices):

symfem/elements/lagrange_pyramid.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ def __init__(self, reference: Reference, order: int, variant: str = "equispaced"
4949
elif variant == "lobatto":
5050
raise NotImplementedError()
5151
else:
52-
points, _ = get_quadrature(variant, order + 1)
52+
if variant == "gl":
53+
points, _ = get_quadrature("legendre", order + 1)
54+
else:
55+
points, _ = get_quadrature(variant, order + 1)
5356

5457
# Vertices
5558
for v_n, v in enumerate(reference.vertices):

test/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
"P": [
1010
({"variant": "equispaced"}, range(6)),
1111
({"variant": "lobatto"}, range(4)),
12+
({"variant": "gl"}, [0, 1]),
1213
({"variant": "legendre"}, range(5)),
1314
],
1415
"vP": [
1516
({"variant": "equispaced"}, range(6)),
1617
({"variant": "lobatto"}, range(3)),
1718
({"variant": "radau"}, range(3)),
19+
({"variant": "gl"}, [0, 1]),
1820
({"variant": "legendre"}, range(3)),
1921
],
2022
"dPc": [({"variant": "equispaced"}, range(6)), ({"variant": "lobatto"}, range(4))],

0 commit comments

Comments
 (0)