Skip to content

Commit c2ec19a

Browse files
committed
Sminus
1 parent fe2a76e commit c2ec19a

4 files changed

Lines changed: 16 additions & 24 deletions

File tree

FIAT/Sminus.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -412,9 +412,8 @@ def __init__(self, ref_el, degree):
412412
degree = self._parse_degree(degree)
413413
flat_el = flatten_reference_cube(ref_el)
414414
dim = flat_el.get_spatial_dimension()
415-
if dim != 2:
416-
if dim != 3:
417-
raise Exception("Trimmed Serendipity_k edge elements only valid for dimensions 2 and 3")
415+
if dim not in {2, 3}:
416+
raise Exception("Trimmed Serendipity_k edge elements only valid for dimensions 2 and 3")
418417

419418
verts = flat_el.get_vertices()
420419

@@ -448,14 +447,9 @@ def __init__(self, ref_el, degree):
448447
else:
449448
IL = ()
450449

451-
Sminus_list = EL + FL
452-
if dim == 3:
453-
Sminus_list = Sminus_list + IL
450+
Sminus_list = EL + FL + IL
454451

455-
if dim == 2:
456-
self.basis = {(0, 0): Array(Sminus_list)}
457-
else:
458-
self.basis = {(0, 0, 0): Array(Sminus_list)}
452+
self.basis = {(0,)*dim: Array(Sminus_list)}
459453
super().__init__(ref_el=ref_el, degree=degree, mapping="covariant piola")
460454

461455

@@ -484,5 +478,5 @@ def __init__(self, ref_el, degree):
484478

485479
Sminus_list = EL + FL
486480
Sminus_list = [[-a[1], a[0]] for a in Sminus_list]
487-
self.basis = {(0, 0): Array(Sminus_list)}
481+
self.basis = {(0,)*dim: Array(Sminus_list)}
488482
super().__init__(ref_el=ref_el, degree=degree, mapping="contravariant piola")

FIAT/SminusCurl.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ def choose_ijk_total(degree):
2626

2727

2828
class TrimmedSerendipityCurl(FiniteElement):
29-
def __init__(self, ref_el, degree):
30-
if degree < 1:
31-
raise Exception("Trimmed serendipity elements only valid for k >= 1")
29+
DEFAULT_DEGREE = 1
3230

31+
def __init__(self, ref_el, degree):
32+
degree = self._parse_degree(degree)
3333
flat_el = flatten_reference_cube(ref_el)
3434
dim = flat_el.get_spatial_dimension()
3535
self.fdim = dim

FIAT/SminusDiv.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ def choose_ijk_total(degree):
2626

2727

2828
class TrimmedSerendipityDiv(FiniteElement):
29-
def __init__(self, ref_el, degree):
30-
if degree < 1:
31-
raise Exception("Trimmed serendipity elements only valid for k >= 1")
3229

30+
DEFAULT_DEGREE = 1
31+
32+
def __init__(self, ref_el, degree):
33+
degree = self._parse_degree(degree)
3334
flat_el = flatten_reference_cube(ref_el)
3435
dim = flat_el.get_spatial_dimension()
3536
self.fdim = dim

FIAT/brezzi_douglas_marini_cube.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,19 @@ class BrezziDouglasMariniCube(FiniteElement):
3939
The Brezzi-Douglas-Marini element on quadrilateral cells.
4040
4141
:arg ref_el: The reference element.
42-
:arg k: The degree.
42+
:arg degree: The degree.
4343
:arg mapping: A string giving the Piola mapping.
4444
Either 'contravariant Piola' or 'covariant Piola'.
4545
"""
46+
DEFAULT_DEGREE = 1
4647

4748
def __init__(self, ref_el, degree, mapping):
48-
49-
# Check that ref_el and degree are appropriate
50-
if degree < 1:
51-
raise Exception("BDMc_k elements only valid for k >= 1")
52-
49+
degree = self._parse_degree(degree)
5350
flat_el = flatten_reference_cube(ref_el)
5451
dim = flat_el.get_spatial_dimension()
5552
self.fdim = dim
5653
if dim != 2:
57-
raise Exception("BDMc_k elements only valid for dimension 2")
54+
raise Exception(f"{type(self).__name__} only valid for dimension 2")
5855

5956
# Collect the IDs of the reference element entities
6057
flat_topology = flat_el.get_topology()

0 commit comments

Comments
 (0)