Skip to content

Commit 40a0e06

Browse files
authored
Merge pull request #187 from firedrakeproject/pbrubeck/quad-element
QuadratureElement: construct directly from a QuadratureRule
2 parents bccca57 + 554f8bd commit 40a0e06

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

finat/quadrature_element.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ def make_quadrature_element(fiat_ref_cell, degree, scheme="default", codim=0):
3131
else:
3232
rule_ref_cell = fiat_ref_cell
3333

34-
rule = make_quadrature(rule_ref_cell, degree, scheme=scheme)
34+
if isinstance(scheme, AbstractQuadratureRule):
35+
rule = scheme
36+
assert rule.ref_el == rule_ref_cell
37+
else:
38+
rule = make_quadrature(rule_ref_cell, degree, scheme=scheme)
39+
3540
return QuadratureElement(fiat_ref_cell, rule)
3641

3742

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import pytest
2+
3+
from FIAT import ufc_cell
4+
from finat.quadrature import make_quadrature
5+
from finat.quadrature_element import make_quadrature_element
6+
7+
8+
@pytest.fixture(params=["interval", "triangle", "interval * interval", "triangle * interval"])
9+
def cell(request):
10+
return ufc_cell(request.param)
11+
12+
13+
def test_create_from_quadrature(cell):
14+
degree = 4
15+
scheme = "default"
16+
fe1 = make_quadrature_element(cell, degree, scheme=scheme)
17+
18+
quadrature = make_quadrature(cell, degree, scheme=scheme)
19+
fe2 = make_quadrature_element(cell, degree, scheme=quadrature)
20+
21+
Q1, ps1 = fe1.dual_basis
22+
Q2, ps2 = fe2.dual_basis
23+
assert ps1.almost_equal(ps2)

0 commit comments

Comments
 (0)