Skip to content

Commit

Permalink
degress of more elements
Browse files Browse the repository at this point in the history
  • Loading branch information
mscroggs committed Sep 26, 2024
1 parent c3a75af commit a2d6654
Show file tree
Hide file tree
Showing 50 changed files with 1,133 additions and 13 deletions.
1 change: 1 addition & 0 deletions CHANGELOG_SINCE_LAST_VERSION.md
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
- Corrected polyset for Arnold-Winther element
- Added sub- and superdegree functions
20 changes: 20 additions & 0 deletions symfem/elements/ac.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,28 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
if self.order < 2:
return self.order
else:
return self.order // 2

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
return self.order + 1

@property
def polynomial_subdegree(self) -> int:
return self.order

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
return self.order + 1

names = ["Arbogast-Correa", "AC", "AC full", "Arbogast-Correa full"]
references = ["quadrilateral"]
min_order = 0
continuity = "H(div)"
value_type = "vector"
last_updated = "2023.06"
16 changes: 16 additions & 0 deletions symfem/elements/alfeld_sorokina.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,22 @@ def __init__(self, reference: Reference, order: int):

super().__init__(reference, order, poly, dofs, reference.tdim, 1)

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Alfeld-Sorokina", "AS"]
references = ["triangle"]
min_order = 2
Expand Down
17 changes: 17 additions & 0 deletions symfem/elements/argyris.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,26 @@ def __init__(self, reference: Reference, order: int):

super().__init__(reference, order, poly, dofs, reference.tdim, 1)

@property
def lagrange_subdegree(self) -> int:
return self.order

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
return self.order

@property
def polynomial_subdegree(self) -> int:
return self.order

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
return self.order

names = ["Argyris"]
references = ["triangle"]
min_order = 5
max_order = 5
continuity = "L2"
value_type = "scalar"
last_updated = "2023.05"
34 changes: 34 additions & 0 deletions symfem/elements/aw.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,27 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
return self.order - 1

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
return self.order

@property
def polynomial_subdegree(self) -> int:
return self.order - 1

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
return self.order

names = ["Arnold-Winther", "AW", "conforming Arnold-Winther"]
references = ["triangle"]
min_order = 3
continuity = "integral inner H(div)"
value_type = "symmetric matrix"
last_updated = "2024.09"


Expand Down Expand Up @@ -216,9 +233,26 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
return self.order - 1

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
return self.order

@property
def polynomial_subdegree(self) -> int:
return self.order - 1

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
return self.order

names = ["nonconforming Arnold-Winther", "nonconforming AW"]
references = ["triangle"]
min_order = 2
max_order = 2
continuity = "integral inner H(div)"
value_type = "symmetric matrix"
last_updated = "2023.06"
16 changes: 16 additions & 0 deletions symfem/elements/bddm.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,22 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Brezzi-Douglas-Duran-Fortin", "BDDF"]
references = ["hexahedron"]
min_order = 1
Expand Down
16 changes: 16 additions & 0 deletions symfem/elements/bdfm.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,22 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Brezzi-Douglas-Fortin-Marini", "BDFM"]
references = ["triangle", "quadrilateral", "hexahedron", "tetrahedron"]
min_order = 1
Expand Down
16 changes: 16 additions & 0 deletions symfem/elements/bdm.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,22 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Brezzi-Douglas-Marini", "BDM", "N2div"]
references = ["triangle", "tetrahedron"]
min_order = 1
Expand Down
16 changes: 16 additions & 0 deletions symfem/elements/bell.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,22 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Bell"]
references = ["triangle"]
min_order = 5
Expand Down
16 changes: 16 additions & 0 deletions symfem/elements/bernardi_raugel.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,22 @@ def __init__(self, reference: Reference, order: int):

super().__init__(reference, order, poly, dofs, reference.tdim, reference.tdim)

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Bernardi-Raugel"]
references = ["triangle", "tetrahedron"]
min_order = 1
Expand Down
16 changes: 16 additions & 0 deletions symfem/elements/bernstein.py
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,22 @@ def index(x: int, y: int = 0, z: int = 0) -> int:

super().__init__(reference, order, poly, dofs, reference.tdim, 1)

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Bernstein", "Bernstein-Bezier"]
references = ["interval", "triangle", "tetrahedron"]
min_order = 0
Expand Down
16 changes: 16 additions & 0 deletions symfem/elements/bfs.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,22 @@ def __init__(self, reference: Reference, order: int):
poly += quolynomial_set_1d(reference.tdim, order)
super().__init__(reference, order, poly, dofs, reference.tdim, 1)

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["Bogner-Fox-Schmit", "BFS"]
references = ["quadrilateral"]
min_order = 3
Expand Down
48 changes: 48 additions & 0 deletions symfem/elements/bubble.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,22 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["bubble"]
references = ["interval", "triangle", "tetrahedron", "quadrilateral", "hexahedron"]
min_order = {
Expand Down Expand Up @@ -122,6 +138,22 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["bubble enriched Lagrange"]
references = ["triangle"]
min_order = 1
Expand Down Expand Up @@ -167,6 +199,22 @@ def init_kwargs(self) -> typing.Dict[str, typing.Any]:
"""
return {"variant": self.variant}

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["bubble enriched vector Lagrange"]
references = ["triangle"]
min_order = 1
Expand Down
16 changes: 16 additions & 0 deletions symfem/elements/conforming_crouzeix_raviart.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,22 @@ def __init__(self, reference: Reference, order: int):

super().__init__(reference, order, poly, dofs, reference.tdim, 1)

@property
def lagrange_subdegree(self) -> int:
pass # TODO

@property
def lagrange_superdegree(self) -> typing.Optional[int]:
pass # TODO

@property
def polynomial_subdegree(self) -> int:
pass # TODO

@property
def polynomial_superdegree(self) -> typing.Optional[int]:
pass # TODO

names = ["conforming Crouzeix-Raviart", "conforming CR"]
references = ["triangle"]
min_order = 1
Expand Down
Loading

0 comments on commit a2d6654

Please sign in to comment.