Example #1
0
def test_quad_rtcf():
    W0_h = FIAT.Lagrange(UFCInterval(), 1)
    W1_h = FIAT.DiscontinuousLagrange(UFCInterval(), 0)

    W0_v = FIAT.DiscontinuousLagrange(UFCInterval(), 0)
    W0 = FIAT.Hdiv(FIAT.TensorProductElement(W0_h, W0_v))

    W1_v = FIAT.Lagrange(UFCInterval(), 1)
    W1 = FIAT.Hdiv(FIAT.TensorProductElement(W1_h, W1_v))

    elem = FIAT.EnrichedElement(W0, W1)
    assert {0: [0, 1, 2], 1: [0, 1, 3]} == entity_support_dofs(elem, (1, 0))
    assert {0: [0, 2, 3], 1: [1, 2, 3]} == entity_support_dofs(elem, (0, 1))
Example #2
0
def test_prism_hcurl(space, degree, horiz_expected, vert_expected):
    W0_h = FIAT.Lagrange(UFCTriangle(), degree)
    W1_h = FIAT.supported_elements[space](UFCTriangle(), degree)

    W0_v = FIAT.DiscontinuousLagrange(UFCInterval(), degree - 1)
    W0 = FIAT.Hcurl(FIAT.TensorProductElement(W0_h, W0_v))

    W1_v = FIAT.Lagrange(UFCInterval(), degree)
    W1 = FIAT.Hcurl(FIAT.TensorProductElement(W1_h, W1_v))

    elem = FIAT.EnrichedElement(W0, W1)
    assert horiz_expected == entity_support_dofs(elem, (2, 0))
    assert vert_expected == entity_support_dofs(elem, (1, 1))
Example #3
0
def _(element, vector_is_mixed):
    cell = element.cell()
    if type(cell) is not ufl.TensorProductCell:
        raise ValueError("TPE not on TPC?")
    A, B = element.sub_elements()
    return FIAT.TensorProductElement(create_element(A, vector_is_mixed),
                                     create_element(B, vector_is_mixed))
Example #4
0
def test_quad(base, extr, horiz_expected, vert_expected):
    elem_A = FIAT.supported_elements[base[0]](UFCInterval(), base[1])
    elem_B = FIAT.supported_elements[extr[0]](UFCInterval(), extr[1])
    elem = FIAT.TensorProductElement(elem_A, elem_B)
    assert horiz_expected == entity_support_dofs(elem, (1, 0))
    assert vert_expected == entity_support_dofs(elem, (0, 1))
Example #5
0
def _create_tp_finiteelement(element) -> FIAT.TensorProductElement:
    e0, e1 = element.sub_elements()
    return FIAT.TensorProductElement(_create_element(e0), _create_element(e1))
Example #6
0
 def fiat_equivalent(self):
     # FIAT TensorProductElement support only 2 factors
     A, B = self.factors
     return FIAT.TensorProductElement(A.fiat_equivalent, B.fiat_equivalent)