예제 #1
0
    def runTest(self):

        m1 = MeshTet()
        m2 = m1.mirrored((1, 0, 0))
        m3 = m1.mirrored((0, 1, 0))
        m4 = m1.mirrored((0, 0, 1))
        m = m1 + m2 + m3 + m4

        self.assertEqual(m.nvertices, 20)
        self.assertEqual(m.nelements, 20)

        m = MeshTri.init_tensor(
            np.linspace(1, 2, 2),
            np.linspace(1, 2, 2),
        )
        m = m + m.mirrored((0, 1), (2, 1))

        self.assertEqual(len(m.boundary_facets()), 6)
        self.assertEqual(m.nvertices, 6)
예제 #2
0
    u = solve(*impose(A, x=u, D=boundary_dofs))

    @Functional
    def gradu(w):
        gradu = w['sol'].grad
        return dot(gradu, gradu)

    np.testing.assert_almost_equal(gradu.assemble(basis,
                                                  sol=basis.interpolate(u)),
                                   8 / 3,
                                   decimal=9)


@pytest.mark.parametrize("m,mdgtype,etype,check1,check2", [
    (
        MeshTri.init_tensor(np.linspace(0, 1, 7), np.linspace(0, 1, 7)),
        MeshTri1DG,
        ElementTriP1,
        lambda x: x[0] == 1,
        lambda x: x[0] == 0,
    ),
    (
        MeshTri.init_tensor(np.linspace(0, 1, 5), np.linspace(0, 1, 5)),
        MeshTri1DG,
        ElementTriP1,
        lambda x: x[0] == 1,
        lambda x: x[0] == 0,
    ),
    (
        MeshTri().refined(2),
        MeshTri1DG,