def example(): mesh = MeshLine() mesh.refine(2) print(mesh.boundary_nodes()) print(mesh.interior_nodes()) # u = np.array([1, 5, 3, 2, 4]) # 在网格节点上的函数值,有顺序 # mesh.plot(u) # plt.show() mapping = mesh.mapping() # 对一维没什么内容,重点看二维,三维 tri = MeshTri(initmesh="reftri") tri.refine(1) tri.draw() mapping = tri.mapping() # CONTINUE pass
def TriP2Test(): """Test triangular h-refinement. Also test facet assembly.""" def U(x): return 1+x[0]-x[0]**2*x[1]**2 def dUdx(x): return 1-2*x[0]*x[1]**2 def dUdy(x): return -2*x[0]**2*x[1] def dudv(du,dv): return du[0]*dv[0]+du[1]*dv[1] def uv(u,v): return u*v def F(x,y): return 2*x**2+2*y**2 def fv(v,x): return F(x[0],x[1])*v def G(x,y): return (x==1)*(3-3*y**2)+\ (x==0)*(0)+\ (y==1)*(1+x-3*x**2)+\ (y==0)*(1+x) def gv(v,x): return G(x[0],x[1])*v dexact={} dexact[0]=dUdx dexact[1]=dUdy mesh=MeshTri() mesh.draw() mesh.refine(1) mesh.draw() hs=np.array([]) H1errs=np.array([]) L2errs=np.array([]) for itr in range(2): mesh.refine() a=AssemblerElement(mesh,ElementTriP2()) A=a.iasm(dudv) f=a.iasm(fv) B=a.fasm(uv) g=a.fasm(gv) u=np.zeros(a.dofnum_u.N) u=spsolve(A+B,f+g) hs=np.append(hs,mesh.param()) L2errs=np.append(L2errs,a.L2error(u,U)) H1errs=np.append(H1errs,a.H1error(u,dexact)) # https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.polyfit.html pfit=np.polyfit(np.log10(hs),np.log10(H1errs),1) assert (pfit[0] >= 0.95*2)