fig = plt.figure() axes = fig.gca() tmesh.add_plot(axes) #tmesh.find_node(axes, showindex=True) plt.show() p = 1 maxit = 5 pde = PDE() errorType = ['$|| u - u_h||_0$', '$||\\nabla u - \\nabla u_h||_0$'] errorMatrix = np.zeros((len(errorType), maxit), dtype=np.float) Ndof = np.zeros(maxit, dtype=np.int) integrator = tmesh.integrator(7) for i in range(maxit): fem = PoissonFEMModel(pde, tmesh, p, integrator) ls = fem.solve() sio.savemat('test%d.mat' % (i), ls) Ndof[i] = fem.femspace.number_of_global_dofs() errorMatrix[0, i] = fem.get_L2_error() errorMatrix[1, i] = fem.get_H1_error() if i < maxit - 1: #tmesh.uniform_refine() h = h / 2 pmesh = distmesh2d(fd, h, box, pfix, meshtype='polygon') node = pmesh.entity('node') t = Delaunay(node) tmesh = TriangleMesh(node, t.simplices.copy())
def f2(p): x = p[..., 0] y = p[..., 1] val = np.exp(5 * (x**2 + (y - 1)**2)) / np.exp(10) return val theta = 0.35 node = np.array([(0, 0), (1, 0), (1, 1), (0, 1)], dtype=np.float) cell = np.array([(1, 2, 0), (3, 0, 2)], dtype=np.int) mesh = TriangleMesh(node, cell) mesh.uniform_refine(4) integrator = mesh.integrator(3) node = mesh.entity('node') cell = mesh.entity('cell') tmesh = Tritree(node, cell) femspace = LagrangeFiniteElementSpace(mesh, p=1) integralalg = FEMeshIntegralAlg(integrator, mesh) qf = integrator bcs, ws = qf.quadpts, qf.weights u1 = femspace.interpolation(f1) grad = femspace.grad_value(u1, bcs, cellidx=None) eta1 = integralalg.L2_norm1(grad, celltype=True)