def __init__(self, ref_el, m): ptx, wx = compute_gauss_jacobi_rule(0., 0., m) pty, wy = compute_gauss_jacobi_rule(1., 0., m) ptz, wz = compute_gauss_jacobi_rule(2., 0., m) # map ptx , pty pts_ref = [ expansions.xi_tetrahedron((x, y, z)) for x in ptx for y in pty for z in ptz ] Ref1 = reference_element.DefaultTetrahedron() A, b = reference_element.make_affine_mapping(Ref1.get_vertices(), ref_el.get_vertices()) mapping = lambda x: numpy.dot(A, x) + b scale = numpy.linalg.det(A) pts = tuple([tuple(mapping(x)) for x in pts_ref]) wts = [ scale * 0.125 * w1 * w2 * w3 for w1 in wx for w2 in wy for w3 in wz ] QuadratureRule.__init__(self, ref_el, tuple(pts), tuple(wts))
def __init__(self, ref_el, m): ptx, wx = compute_gauss_jacobi_rule(0., 0., m) pty, wy = compute_gauss_jacobi_rule(1., 0., m) ptz, wz = compute_gauss_jacobi_rule(2., 0., m) # map ptx , pty pts_ref = [expansions.xi_tetrahedron((x, y, z)) for x in ptx for y in pty for z in ptz] Ref1 = reference_element.DefaultTetrahedron() A, b = reference_element.make_affine_mapping(Ref1.get_vertices(), ref_el.get_vertices()) mapping = lambda x: numpy.dot(A, x) + b scale = numpy.linalg.det(A) pts = tuple([tuple(mapping(x)) for x in pts_ref]) wts = [scale * 0.125 * w1 * w2 * w3 for w1 in wx for w2 in wy for w3 in wz] QuadratureRule.__init__(self, ref_el, tuple(pts), tuple(wts))