Skip to content

Commit

Permalink
Merge pull request #645 from kinnala/add-element-tet-dg
Browse files Browse the repository at this point in the history
Add ElementTetDG
  • Loading branch information
kinnala committed May 24, 2021
2 parents cb90f2e + 7d54d92 commit fb649d8
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 10 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Added: `utils.penalize`, an alternative to `condense` and `enforce` for
essential boundary conditions
- Added: `InteriorBasis.point_source`, with `ex38`
- Added: `ElementTetDG`, similar to `ElementTriDG` for tetrahedral meshes
- Fixed: `MeshLine1.element_finder`

### [3.0.0] - 2021-04-19
Expand Down
3 changes: 2 additions & 1 deletion skfem/element/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
ElementQuadBFS)
from .element_tet import (ElementTetP0, ElementTetP1, ElementTetP2,
ElementTetRT0, ElementTetN0, ElementTetMini,
ElementTetCR)
ElementTetCR, ElementTetDG)
from .element_hex import (ElementHex0, ElementHex1, ElementHex2,
ElementHexS2) # noqa
from .element_line import (ElementLineP0, ElementLineP1, ElementLineP2,
Expand Down Expand Up @@ -84,6 +84,7 @@
"ElementTetN0",
"ElementTetMini",
"ElementTetCR",
"ElementTetDG",
"ElementHex0",
"ElementHex1",
"ElementHex2",
Expand Down
1 change: 1 addition & 0 deletions skfem/element/element_tet/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
from .element_tet_n0 import ElementTetN0 # noqa
from .element_tet_mini import ElementTetMini # noqa
from .element_tet_cr import ElementTetCR # noqa
from .element_tet_dg import ElementTetDG # noqa
21 changes: 21 additions & 0 deletions skfem/element/element_tet/element_tet_dg.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from ..element import Element
from ...refdom import RefTet


class ElementTetDG(Element):

refdom = RefTet

def __init__(self, elem):
# change all dofs to interior dofs
self.elem = elem
self.maxdeg = elem.maxdeg
self.interior_dofs = (4 * elem.nodal_dofs +
4 * elem.facet_dofs +
6 * elem.edge_dofs +
elem.interior_dofs)
self.dofnames = elem.dofnames
self.doflocs = elem.doflocs

def gbasis(self, *args, **kwargs):
return self.elem.gbasis(*args, **kwargs)
21 changes: 12 additions & 9 deletions tests/test_elements.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
ElementTriP1, ElementTriP2, ElementTriRT0,
ElementVectorH1, ElementHex2, ElementQuadBFS,
ElementTriCR, ElementTetCR, ElementTriHermite,
ElementTriMorley, ElementTriArgyris, ElementTriDG)
ElementTriMorley, ElementTriArgyris, ElementTriDG,
ElementTetDG)
from skfem.mesh import MeshHex, MeshLine, MeshQuad, MeshTet, MeshTri
from skfem.assembly import InteriorBasis, Functional
from skfem.mapping import MappingAffine
Expand Down Expand Up @@ -275,18 +276,20 @@ def test_throw_index_error(self):


@pytest.mark.parametrize(
"e",
"m,e,edg",
[
ElementTriP1(),
ElementTriArgyris(),
ElementTriMorley(),
ElementTriHermite(),
(MeshTri().refined(), ElementTriP1(), ElementTriDG),
(MeshTri().refined(), ElementTriP2(), ElementTriDG),
(MeshTet().refined(), ElementTetP1(), ElementTetDG),
(MeshTet().refined(), ElementTetP2(), ElementTetDG),
(MeshTri().refined(), ElementTriArgyris(), ElementTriDG),
(MeshTri().refined(), ElementTriMorley(), ElementTriDG),
(MeshTri().refined(), ElementTriHermite(), ElementTriDG),
]
)
def test_dg_element(e):
def test_dg_element(m, e, edg):

m = MeshTri().refined()
edg = ElementTriDG(e)
edg = edg(e)

@Functional
def square(w):
Expand Down

0 comments on commit fb649d8

Please sign in to comment.