# visual_mesh.write_png("Image/mesh_%gx%g.png"%(nx,ny)) # Plot solution X = 0; Y = 1; u1,u2 = u0.split(deepcopy = True) us = u1 if u1.ufl_element().degree() == 1 else \ interpolate(u1, FunctionSpace(mesh, 'Lagrange', 1)) u_box = scitools.BoxField.dolfin_function2BoxField(us, mesh, (nx,ny), uniform_mesh=True) ev.contour(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, 20, savefig='Image/Contour of u1_P%g(mesh:%g-%g).png'% (nz,nx,ny), title='Contour plot of u1', colorbar='on') ev.figure() ev.surf(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, shading='interp', colorbar='on', title='surf plot of u1', savefig='Image/Surf of u1_P%g(mesh:%g-%g).png'% (nz,nx,ny)) #ev.figure() #ev.mesh(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values,colorbar='on',shading='interp', title='mesh plot of u1', savefig='Image/Mesh of u1_P%g(mesh:%g-%g).png'% (nz,nx,ny)) # Plot exact solution u1_ex,u2_ex = u_ex.split(deepcopy = True) u1_ex = u1_ex if u1_ex.ufl_element().degree() == 1 else \ interpolate(u1_ex, FunctionSpace(mesh, 'Lagrange', 1)) u_box = scitools.BoxField.dolfin_function2BoxField(u1_ex, mesh, (nx,ny), uniform_mesh=True) ev.figure() ev.contour(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, 20, savefig='Image/Contour of exact solution u1_P%g(mesh:%g-%g).png'% (nz,nx,ny), title='Contour plot of exact u1',colorbar='on') ev.figure()
i = nx j = ny print 'u(%g,%g)=%g' % (u_box.grid.coor[X][i], u_box.grid.coor[Y][j], u_box.values[i, j]) ev.contour(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, 14, savefig='tmp0.eps', title='Contour plot of u', clabels='on') ev.figure() ev.surf(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, shading='interp', colorbar='on', title='surf plot of u', savefig='tmp3.eps') ev.figure() ev.mesh(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, title='mesh plot of u', savefig='tmp4.eps') # Extract and plot u along the line y=0.5 start = (0, 0.5) x, uval, y_fixed, snapped = u_box.gridline(start, direction=X) if snapped: print 'Line at %s adjusted (snapped) to y=%g' % (start, y_fixed)
interpolate(u, FunctionSpace(mesh, 'Lagrange', 1)) # alternatively: interpolate onto a finer mesh for higher degree elements u_box = scitools.BoxField.dolfin_function2BoxField( u2, mesh, (nx,ny), uniform_mesh=True) # Write out u at mesh point (i,j) i = nx; j = ny print('u(%g,%g)=%g' % (u_box.grid.coor[X][i], u_box.grid.coor[Y][j], u_box.values[i,j])) ev.contour(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, 14, savefig='tmp0.eps', title='Contour plot of u', clabels='on') ev.figure() ev.surf(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, shading='interp', colorbar='on', title='surf plot of u', savefig='tmp3.eps') ev.figure() ev.mesh(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, title='mesh plot of u', savefig='tmp4.eps') # Extract and plot u along the line y=0.5 start = (0,0.5) x, uval, y_fixed, snapped = u_box.gridline(start, direction=X) if snapped: print('Line at %s adjusted (snapped) to y=%g' % (start, y_fixed)) ev.figure() ev.plot(x, uval, 'r-', title='Solution', legend='finite element solution') # Plot the numerical (projected) and exact flux along this line
mesh, (nx, ny), uniform_mesh=True) ev.contour(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, 20, savefig='Image/Contour of u1_P%g(mesh:%g-%g).png' % (nz, nx, ny), title='Contour plot of u1', colorbar='on') ev.figure() ev.surf(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values, shading='interp', colorbar='on', title='surf plot of u1', savefig='Image/Surf of u1_P%g(mesh:%g-%g).png' % (nz, nx, ny)) #ev.figure() #ev.mesh(u_box.grid.coorv[X], u_box.grid.coorv[Y], u_box.values,colorbar='on',shading='interp', title='mesh plot of u1', savefig='Image/Mesh of u1_P%g(mesh:%g-%g).png'% (nz,nx,ny)) # Plot exact solution u1_ex, u2_ex = u_ex.split(deepcopy=True) u1_ex = u1_ex if u1_ex.ufl_element().degree() == 1 else \ interpolate(u1_ex, FunctionSpace(mesh, 'Lagrange', 1)) u_box = scitools.BoxField.dolfin_function2BoxField(u1_ex, mesh, (nx, ny), uniform_mesh=True)
x = y = np.linspace(-10., 10., 41) xv, yv = plt.ndgrid(x, y) hv = h0/(1+(xv**2+yv**2)/(R**2)) s = np.linspace(0, 2*np.pi, 100) curve_x = 10*(1 - s/(2*np.pi))*np.cos(s) curve_y = 10*(1 - s/(2*np.pi))*np.sin(s) curve_z = h0/(1 + 100*(1 - s/(2*np.pi))**2/(R**2)) # Simple plot of mountain plt.figure(1) plt.mesh(xv, yv, hv) # Simple plot of mountain and parametric curve plt.figure(2) plt.surf(xv, yv, hv) plt.hold('on') # add the parametric curve. Last parameter controls color of the curve plt.plot3(curve_x, curve_y, curve_z, 'b-') # endsimpleplots # Default two-dimensional contour plot plt.figure(3) plt.contour(xv, yv, hv) # Default three-dimensional contour plot plt.figure(4) plt.contour3(xv, yv, hv, 10) # 10 contour lines (equally spaced contour levels)
x = y = np.linspace(-10., 10., 41) xv, yv = plt.ndgrid(x, y) hv = h0 / (1 + (xv**2 + yv**2) / (R**2)) s = np.linspace(0, 2 * np.pi, 100) curve_x = 10 * (1 - s / (2 * np.pi)) * np.cos(s) curve_y = 10 * (1 - s / (2 * np.pi)) * np.sin(s) curve_z = h0 / (1 + 100 * (1 - s / (2 * np.pi))**2 / (R**2)) # Simple plot of mountain plt.figure(1) plt.mesh(xv, yv, hv) # Simple plot of mountain and parametric curve plt.figure(2) plt.surf(xv, yv, hv) plt.hold('on') # add the parametric curve. Last parameter controls color of the curve plt.plot3(curve_x, curve_y, curve_z, 'b-') # endsimpleplots # Default two-dimensional contour plot plt.figure(3) plt.contour(xv, yv, hv) # Default three-dimensional contour plot plt.figure(4) plt.contour3(xv, yv, hv, 10) # 10 contour lines (equally spaced contour levels)