Exemplo n.º 1
0
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())
Exemplo n.º 2
0
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)