Beispiel #1
0
def dopoisson():
    k = 1
    N = 2
    d = numpy.array([1,2,3])
    g = lambda p: numpy.sin(numpy.dot(p, d))[:,numpy.newaxis, numpy.newaxis]
    f = lambda p: -sum(d**2) * g(p)
    points = uniformcubepoints(8)
    Up = poissondirichlet(k,N,g,f, points)[:,numpy.newaxis]
    up = g(points)
    print math.sqrt(numpy.sum((Up - up)**2)/(len(points)))
Beispiel #2
0
def dopoissonmixed():
    k = 3
    N = 3
    d = numpy.array([1,2,3])
    u = lambda p: numpy.sin(numpy.dot(p, d))[:,numpy.newaxis, numpy.newaxis]
    f = lambda p: -(sum(d**2) * u(p))
    points = uniformcubepoints(8)
    Up = mixedpoissondual(k,N, u, f, points).flatten()
    up = u(points).flatten()
    print Up.shape, up.shape
    l2 = math.sqrt(numpy.sum((Up - up)**2)/(len(points)))
    print l2
Beispiel #3
0
def dopoissonneumann():
    k = 4
    N = 3
    d = numpy.array([1,2,3])
    u = lambda p: numpy.sin(numpy.dot(p, d))[:,numpy.newaxis]
    gn = lambda p, n: (numpy.cos(numpy.dot(p,d))*numpy.dot(n,d))[:,numpy.newaxis]  
    f = lambda p: -sum(d**2) * u(p)
    points = uniformcubepoints(8)
    Up = poissonneumann(k,N,gn, f, points) [:,numpy.newaxis]
    up = u(points)
    l2 = math.sqrt(numpy.sum((Up - up)**2)/(len(points)))
    print l2
Beispiel #4
0
def tabulate():    
    kmax = 5
    nmax = 5
    points = uniformcubepoints(4)
    up = logxminus111(points)
    l2s = numpy.zeros((nmax,kmax))
    for k in range(1,kmax+1):
        for N in range(1,nmax+1):
            if k==1 and N==1: break
            print k,N
            Up = laplacedirichlet(k,N, logxminus111, points)[:,numpy.newaxis]
            l2s[k-1,N-1] = math.sqrt(numpy.sum((Up - up)**2)/(len(points)))
        print l2s
Beispiel #5
0
    c = mpl.contourf(pp[0], pp[1], ur.reshape(NP,NP) - u[:,0].reshape(NP,NP), fontsize=14, colors = None, cmap=mpl.get_cmap('Greys'))
    mpl.colorbar(c, shrink=0.8)
#    mpl.clabel(c, inline=1, fontsize = 14)
    mpl.figure(facecolor='white')
    c = mpl.contourf(pp[0], pp[1], p.reshape(NP,NP), fontsize=14, colors = None, cmap=mpl.get_cmap('Greys'))
    mpl.colorbar(c, shrink=0.8)
#    mpl.clabel(c, inline=1, fontsize = 14)
#    mpl.show()
    

        
if __name__ == "__main__":
    k = 4
    N = 2
    NP = 12
    points = pu.uniformcubepoints(NP)
    v = [[1,1,1]]
#    v = [[0,0,0]]
    meshevents = lambda m: pps.stokescubemesh(N, m)
#    OT = 'obstructiontag'
#    meshevents = lambda m: pps.cubeobstruction(m, OT)
    mp = MeshPlotter()
    meshevents(mp)
    emm.figure(bgcolor=(1,1,1))

    u, p = pps.stokespressure(k,meshevents,{pps.inputbdytag:pps.pfn(0), pps.outputbdytag:pps.pfn(1.0)}, points, False, N==1)
    pt = points.reshape(NP,NP,NP,3).transpose((3,0,1,2))
    ut = u.reshape(NP,NP,NP,3).transpose((3,0,1,2))        

    emm.quiver3d(pt[0],pt[1],pt[2], ut[0],ut[1],ut[2], opacity = 0.4)