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
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)