Esempio n. 1
0
    def coarsen_tri(self, maxit=2, method='rg', plot=True, rb=True):
        cell = np.array([[0, 1, 2], [0, 2, 3], [1, 4, 5], [2, 1, 5]],
                        dtype=np.int)
        node = np.array([[0, 0], [1, 0], [1, 1], [0, 1], [2, 0], [2, 1]],
                        dtype=np.float)

        if True:
            mesh = TriangleMesh(node, cell)
            mesh = HalfEdgeMesh2d.from_mesh(mesh)
            mesh.init_level_info()
            isMarkedCell = np.array([0, 1, 0, 0, 1], dtype=np.bool_)
            NE = mesh.ds.NE
            color = np.zeros(NE * 2, dtype=np.int_)
            mesh.hedgecolor = color
            mesh.refine_triangle_rg(isMarkedCell)
            NE = mesh.ds.NE
            color = np.zeros(NE * 2, dtype=np.int_)
            if 0:
                fig = plt.figure()
                axes = fig.gca()
                mesh.add_plot(axes)
                mesh.add_halfedge_plot(axes, showindex=True)
                mesh.find_node(axes, showindex=True)
                mesh.find_cell(axes, showindex=True)
                plt.show()
            if method == 'rg':
                if 1:
                    NC = mesh.number_of_all_cells()
                    isMarkedCell = np.zeros(NC, dtype=np.bool_)
                    isMarkedCell[[1, 2, 5, 6, 7, 9]] = True
                    print('*************lll*********')
                    mesh.coarsen_triangle_rg(isMarkedCell)
                if 1:
                    NC = mesh.number_of_all_cells()
                    isMarkedCell = np.zeros(NC, dtype=np.bool_)
                    isMarkedCell[[0, 1, 2, 3, 4, 5, 6, 7]] = True
                    print('*************lll*********')
                    mesh.coarsen_triangle_rg(isMarkedCell)
                    NC = mesh.number_of_all_cells()
                    isMarkedCell = np.ones(NC, dtype=np.bool_)
                    print('*************lll*********')
                    mesh.refine_triangle_rg(isMarkedCell)

            else:
                color[[2, 3, 10, 11]] = 1
                mesh.hedgecolor = color
                isMarkedCell = np.array([0, 1, 1, 0, 0], dtype=np.bool_)
                #isMarkedCell = np.array([0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ,0],
                #       dtype=np.bool_)
                mesh.refine_triangle_nvb(isMarkedCell)
                mesh.print()
            if plot:
                fig = plt.figure()
                axes = fig.gca()
                mesh.add_plot(axes)
                mesh.add_halfedge_plot(axes, showindex=True)
                mesh.find_node(axes, showindex=True)
                mesh.find_cell(axes, showindex=True)
                plt.show()
Esempio n. 2
0
    def coarsen_poly(self, plot=True):

        node = np.array([[0, 0], [1, 0], [1, 1], [0, 1], [2, 0], [2, 1]],
                        dtype=np.float)
        cell = np.array([[0, 1, 2], [0, 2, 3], [1, 4, 5], [2, 1, 5]],
                        dtype=np.int)
        mesh = TriangleMesh(node, cell)
        mesh = HalfEdgeMesh2d.from_mesh(mesh)
        mesh.init_level_info()

        isMarkedCell = np.array([0, 0, 0, 1, 0], dtype=np.bool_)
        mesh.refine_poly(isMarkedCell)

        NC = mesh.number_of_all_cells()
        isMarkedCell = np.zeros(NC, dtype=np.bool_)
        isMarkedCell[[1, 2, 3, 4, 5, 6]] = True
        mesh.coarsen_poly(isMarkedCell)

        fig = plt.figure()
        axes = fig.gca()
        mesh.add_plot(axes)
        mesh.find_node(axes, showindex=True)
        mesh.find_cell(axes, showindex=True)
        mesh.add_halfedge_plot(axes, showindex=True)
        plt.show()