for i in range(maxit): print('step:', i) space = LagrangeFiniteElementSpace(mesh, p=p) A = space.stiff_matrix() F = space.source_vector(pde.source) NDof[i] = space.number_of_global_dofs() bc = DirichletBC(space, pde.dirichlet) uh = space.function() A, F = bc.apply(A, F, uh) uh[:] = spsolve(A, F) errorMatrix[0, i] = space.integralalg.error(pde.solution, uh.value) errorMatrix[1, i] = space.integralalg.error(pde.gradient, uh.grad_value) eta = space.residual_estimate(uh) errorMatrix[2, i] = np.sqrt(np.sum(eta**2)) if i < maxit - 1: isMarkedCell = mark(eta, theta=theta) mesh.bisect(isMarkedCell) mesh.add_plot(plt) plt.savefig('./test-' + str(i+1) + '.png') plt.close() fig = plt.figure() axes = fig.gca() mesh.add_plot(axes) showmultirate(plt, maxit - 5, NDof, errorMatrix, errorType) plt.show()
plt.close() for i in range(maxit): print('step:', i) space = LagrangeFiniteElementSpace(mesh, p=p) A = space.stiff_matrix(q=1) F = space.source_vector(pde.source) NDof[i] = space.number_of_global_dofs() bc = DirichletBC(space, pde.dirichlet) uh = space.function() A, F = bc.apply(A, F, uh) uh[:] = spsolve(A, F) errorMatrix[0, i] = space.integralalg.error(pde.solution, uh.value) errorMatrix[1, i] = space.integralalg.error(pde.gradient, uh.grad_value) eta = space.residual_estimate(uh, f=pde.source) errorMatrix[2, i] = np.sqrt(np.sum(eta**2)) if i < maxit - 1: isMarkedCell = mark(eta, theta=theta) mesh.bisect(isMarkedCell) mesh.add_plot(plt) plt.savefig('./test-' + str(i + 1) + '.png') plt.close() mesh.add_plot(plt) showmultirate(plt, maxit - 5, NDof, errorMatrix, errorType) plt.show()