Пример #1
0
def main(args):
    fig = plt.figure()
    axU = fig.add_subplot(211)
    axR = fig.add_subplot(212)

    wall = createobstacle(args.diameter[0],111)
    lat = lb_D2Q9.lattice(wall.shape,[0.,0.],args.tau[0])
    lat.ux[:,0]=anSolution(5e-8,111,lat.nu) #set intel macroscopic eq vel
    lat.fd = lat.eqdistributions()#New equilibrium
    lat.setWalls(wall)
    finlet = np.copy( lat.fd[:,:,:1]) #get inlet macroscopic vel
    lat.updateMacroVariables()

    for i in range(400000):
        if i%50 == 0:
            axU.cla()
            axU.imshow(np.sqrt(lat.ux**2+lat.uy**2),vmin=0,vmax=0.2)
            fname = '%08d.png'%i
            dyUy,dxUy=np.gradient(lat.uy)
            dyUx,dxUx=np.gradient(lat.ux)
            vort=np.abs(dxUy-dyUx)
            axR.cla()
            axR.imshow(vort,vmin=0,vmax=0.1)
            fig.savefig('tot'+fname)
        
        lat.collision()
        lat.streamming()
        lat.onWallBBNS_BC(wall)
        lat.fd[:,:,-1]=np.copy(lat.fd[:,:,-2]) #gradient to cero on outlet
        lat.fd[:,:,:1]=np.copy(finlet)
        lat.updateMacroVariables()
    np.savez('out.npz',lat.ux,lat.uy,lat.rho,wall)
Пример #2
0
def main(args):
    size = args.size
    U = args.velocity
    lat = lb.lattice(args.size,args.velocity,args.tau[0])
    F=np.array(args.force)
    wall=np.zeros(args.size)
    wall[[0,-1]]=1
    lat.setWalls(wall)
    lat.updateMacroVariables(F)

    uxold=1
    step = 1
    while ( np.abs(uxold - lat.ux) > 1e-12 )[wall==0].all():
        lat.collision()
        lat.force(F)
        lat.streamming()
        lat.onWallBBNS_BC(wall)
        uxold=lat.ux
        lat.updateMacroVariables(F)
        step +=1
    print step, 'iter'
    domain = np.arange(len(lat.ux))- size[0]/2
    print lat.ux
    an= anSolution(args.force[0],size[0],lat.nu)
    print an
    print 'diff num - analytic: ', np.abs(lat.ux.reshape(size[0])-an)
    plot(domain,lat.ux,'x-')
    plot(domain,an)
    show()

    return lat.ux
Пример #3
0
def test_consPBCforced():
    """Test if on periodic boundary conditions density and fluid velocity are conserved, when sistem is forced"""
    lat = lb_D2Q9.lattice(size,[0.1,0.1],tau)
    for step in range(300):
       lat.updateMacroVariables(F)
       lat.collision()
       lat.force(F)
       lat.streamming()

    assert ( np.abs(lat.rho - r) < 1e-12 ).all()
Пример #4
0
def test_consArbiWalls():
    """ Test if on top & bottom walls density is conserved"""
    lat = lb_D2Q9.lattice(size,[0.,0.1],tau)
    wall=np.zeros(size)
    wall[:,[0,-1]]=1
    lat.setWalls(wall)
    for step in range(2000):
       lat.updateMacroVariables()
       lat.collision()
       lat.streamming()
       lat.onWallBBNS_BC(wall)
    assert ( np.abs(lat.rho - r) < 1e-12 ).all()
Пример #5
0
def test_consPBC():
    """Test if on periodic boundary conditions density and fluid velocity are conserved"""
    
    lat = lb_D2Q9.lattice(size,[0.1,0.],tau)
    for step in range(300):
       lat.updateMacroVariables()
       lat.collision()
       lat.streamming()

    magnitudes = lat.ux, lat.uy, lat.rho
    U=[0.1, 0., 1]
    for i in range(len(magnitudes)):
        assert ( np.abs(magnitudes[i] - U[i]) < 1e-15 ).all()
Пример #6
0
def test_poiseuille():
    """Test poiseuille Flow"""
    lat = lb_D2Q9.lattice(size,[0.,0.],tau)
    wall=np.zeros(size)
    wall[[0,-1]]=1
    lat.setWalls(wall)
    for i in range(18980):
       lat.collision()
       lat.force(F)
       lat.streamming()
       lat.onWallBBNS_BC(wall)
       lat.updateMacroVariables(F)
    an= anSolution(F[0],size[0],lat.nu)
    print lat.ux[:,1]
    print an
    print 'diff num - analytic: ', np.abs(lat.ux[:,1]-an)
    
    assert ( np.abs(lat.ux[:,1]-an) < 2.25e-6 )[1:-1].all()