File: refelement.py

package info (click to toggle)
dune-geometry 2.10.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 2,304 kB
  • sloc: cpp: 15,221; python: 253; makefile: 3
file content (43 lines) | stat: -rw-r--r-- 1,759 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
# SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception

from dune.geometry import referenceElement
from dune.geometry import vertex, line, triangle, quadrilateral, tetrahedron, pyramid, prism, hexahedron, none

def test(r):
    for codim in range(r.dimension+1):
        types = r.types(codim)
        if len(types) != r.size(codim):
            raise Exception("types tuple has wrong size")
        for i in range(len(types)):
            if types[i] != r.type(i, codim):
                raise Exception("types tuple has wrong content")

    for codim in range(r.dimension+1):
        positions = r.positions(codim)
        if len(positions) != r.size(codim):
            raise Exception("positions tuple has wrong size")
        for i in range(len(positions)):
            if positions[i] != r.position(i, codim):
                raise Exception("positions tuple has wrong content")

    if r.dimension > 0:
        normals = r.integrationOuterNormals
        if len(normals) != r.size(1):
            raise Exception("integrationOuterNormals has wrong size")
        for i in range(len(normals)):
            if normals[i] != r.integrationOuterNormal(i):
                raise Exception("integrationOuterNormals has wrong content")

test(referenceElement(vertex))
test(referenceElement(line))
test(referenceElement(triangle))
test(referenceElement(quadrilateral))
test(referenceElement(tetrahedron))
test(referenceElement(pyramid))
test(referenceElement(prism))
test(referenceElement(hexahedron))

for dim in range(4):
    if referenceElement(none(dim)) is not None:
        raise Exception("got reference element for geometry type none")