예제 #1
0
    def solve_poisson_robin(self, p=1, n=1, plot=True):

        pde = XYData()
        mesh = pde.init_mesh(n=n)

        node = mesh.node
        cell = mesh.entity("cell")
        name = 'RobinBCTest.mat'
        space = LagrangeFiniteElementSpace(mesh, p=p)
        A = space.stiff_matrix()
        F = space.source_vector(pde.source)
#        print(A.toarray())

#        A, F = space.set_robin_bc(A, F, pde.robin)
 
        uh = space.function()
        #bc = BoundaryCondition(space, robin=pde.robin)
        A, b = space.set_robin_bc(A, F, pde.robin)
        uh[:] = spsolve(A, b).reshape(-1)
        error = space.integralalg.L2_error(pde.solution, uh)
        print(error)

#        print('A:', A.toarray())
#        print('F:', F)


        if plot:
            fig = plt.figure()
            axes = fig.gca()
            mesh.add_plot(axes)
            mesh.find_node(axes, showindex=True)
            mesh.find_cell(axes, showindex=True)
            plt.show()
예제 #2
0
    def solve_poisson_robin(self, p=1, n=1, plot=True):

        pde = XYData()
        mesh = pde.init_mesh(n=1)

        space = LagrangeFiniteElementSpace(mesh, p=p)
        A = space.stiff_matrix()
        F = space.source_vector(pde.source)

        space.set_robin_bc(A, F, pde.robin)

        print('A:', A.toarray())
        print('F:', F)

        if plot:
            fig = plt.figure()
            axes = fig.gca()
            mesh.add_plot(axes)
            mesh.find_node(axes, showindex=True)
            mesh.find_cell(axes, showindex=True)
            plt.show()
예제 #3
0
    def solve_poisson_robin(self, p=1, n=1, plot=True):

        pde = CosCosCosData()
        mesh = pde.init_mesh(n=n)

        space = LagrangeFiniteElementSpace(mesh, p=p)

        A = space.stiff_matrix()
        F = space.source_vector(pde.source)
        uh = space.function()
        bc = BoundaryCondition(space, robin=pde.robin)
        A, b = space.set_robin_bc(A, F, pde.robin)
        uh[:] = spsolve(A, b).reshape(-1)
        error = space.integralalg.L2_error(pde.solution, uh)
        print(error)