Exemple #1
0
def gl_quadrature_rule(cell, elem_deg):
    fiat_cell = ufc_cell("interval")
    fiat_rule = GaussLegendreQuadratureLineRule(fiat_cell, elem_deg + 1)
    line_rules = [QuadratureRule(GaussLegendrePointSet(fiat_rule.get_points()),
                                 fiat_rule.get_weights())
                  for _ in range(cell.topological_dimension())]
    finat_rule = reduce(lambda a, b: TensorProductQuadratureRule([a, b]), line_rules)
    return finat_rule
def gll_quadrature_rule(cell, elem_deg):
    fiat_cell = ufc_cell("interval")
    fiat_rule = GaussLobattoLegendreQuadratureLineRule(fiat_cell, elem_deg + 1)
    line_rules = [QuadratureRule(GaussLobattoLegendrePointSet(fiat_rule.get_points()),
                                 fiat_rule.get_weights())
                  for _ in range(cell.topological_dimension())]
    finat_rule = reduce(lambda a, b: TensorProductQuadratureRule([a, b]), line_rules)
    return finat_rule
Exemple #3
0
def test_basis_values(dim, degree):
    """Ensure that integrating a simple monomial produces the expected results."""
    from FIAT import ufc_cell, make_quadrature
    from FIAT import DPC

    cell = np.array([None, 'interval', 'quadrilateral', 'hexahedron'])
    s = ufc_cell(cell[dim])
    q = make_quadrature(s, degree + 1)

    fe = DPC(s, degree)
    tab = fe.tabulate(0, q.pts)[(0, ) * dim]

    for test_degree in range(degree + 1):
        coefs = [n(lambda x: x[0]**test_degree) for n in fe.dual.nodes]
        integral = np.float(np.dot(coefs, np.dot(tab, q.wts)))
        reference = np.dot([x[0]**test_degree for x in q.pts], q.wts)
        assert np.isclose(integral, reference, rtol=1e-14)
def test_basis_values(dim, degree):
    """Ensure that integrating a simple monomial produces the expected results."""
    from FIAT import ufc_cell, make_quadrature
    from FIAT.discontinuous_pc import DPC

    cell = np.array([None, 'interval', 'quadrilateral', 'hexahedron'])
    s = ufc_cell(cell[dim])
    q = make_quadrature(s, degree + 1)

    fe = DPC(s, degree)
    tab = fe.tabulate(0, q.pts)[(0,) * dim]

    for test_degree in range(degree + 1):
        coefs = [n(lambda x: x[0]**test_degree) for n in fe.dual.nodes]
        integral = np.float(np.dot(coefs, np.dot(tab, q.wts)))
        reference = np.dot([x[0]**test_degree
                            for x in q.pts], q.wts)
        assert np.isclose(integral, reference, rtol=1e-14)