Parallel plate flow also working
This commit is contained in:
parent
5b2ff6cc21
commit
51637605b7
@ -35,8 +35,7 @@ def u_np1(un,tn,dt):
|
|||||||
Kn=K(tn)
|
Kn=K(tn)
|
||||||
unp1=un
|
unp1=un
|
||||||
unp1[0]=0 #Velocity zero ver here
|
unp1[0]=0 #Velocity zero ver here
|
||||||
for i in range(1,un.size-1):
|
unp1[1:-1]=un[1:-1]+dt*Kn+l*(un[0:-2]-2*un[1:-1]+un[2:])
|
||||||
unp1[i]=dt*Kn+un[i]+l*(un[i-1]-2*un[i]+un[i+1])
|
|
||||||
unp1[-1]=unp1[-2] #Approximate 'infinity' bc
|
unp1[-1]=unp1[-2] #Approximate 'infinity' bc
|
||||||
return unp1
|
return unp1
|
||||||
|
|
||||||
@ -61,7 +60,7 @@ while(True):
|
|||||||
t+=dt
|
t+=dt
|
||||||
uold=un
|
uold=un
|
||||||
un=u_np1(uold,t,dt)
|
un=u_np1(uold,t,dt)
|
||||||
if(i%20==0):
|
if(i%100==0):
|
||||||
linefd.set_xdata(un)
|
linefd.set_xdata(un)
|
||||||
linee.set_xdata(u_ex(t))
|
linee.set_xdata(u_ex(t))
|
||||||
p.draw()
|
p.draw()
|
||||||
|
74
parplateflow.py
Executable file
74
parplateflow.py
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
# Boundary layer flow
|
||||||
|
from numpy import *
|
||||||
|
import time
|
||||||
|
import matplotlib
|
||||||
|
matplotlib.use('TkAgg')
|
||||||
|
# from matplotlib.pylab import *
|
||||||
|
import pylab as p
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# import matplotlib.animation as animation
|
||||||
|
def K(t): #Forcing function
|
||||||
|
return (1-exp(-0.1*t))*cos(t)
|
||||||
|
|
||||||
|
|
||||||
|
s=10
|
||||||
|
#Define domain
|
||||||
|
n=50 #Number of gridpoints
|
||||||
|
y=linspace(-1,1,n)
|
||||||
|
|
||||||
|
dy=y[1]-y[0]
|
||||||
|
dt=0.0005
|
||||||
|
|
||||||
|
l=(dt/(s**2*dy**2))
|
||||||
|
|
||||||
|
hnu=cosh(sqrt(1j)*s*y)/cosh(sqrt(1j)*s)
|
||||||
|
fnu=tanh(sqrt(1j)*s)/(sqrt(1j)*s)
|
||||||
|
|
||||||
|
|
||||||
|
def u_ex(tn):
|
||||||
|
return (((1-hnu)/(1-fnu))*exp(1j*(tn))/1j).real
|
||||||
|
|
||||||
|
|
||||||
|
def u_np1(un,tn,dt):
|
||||||
|
Kn=K(tn)
|
||||||
|
unp1=un
|
||||||
|
unp1[0]=0 #Velocity zero ver here
|
||||||
|
unp1[1:-1]=un[1:-1]+dt*Kn+l*(un[0:-2]-2*un[1:-1]+un[2:])
|
||||||
|
unp1[-1]=0 #Boundary other side
|
||||||
|
return unp1
|
||||||
|
|
||||||
|
un0=zeros(n,float)
|
||||||
|
t=0
|
||||||
|
un=un0
|
||||||
|
# un.append(un0)
|
||||||
|
|
||||||
|
# Make the plot
|
||||||
|
p.ion()
|
||||||
|
linefd, = p.plot(un0,y)
|
||||||
|
linee, = p.plot(un0,y)
|
||||||
|
p.legend(('Finite difference','Periodic exact'))
|
||||||
|
p.ylim(-1,1)
|
||||||
|
p.xlim(-1.5,1.5)
|
||||||
|
p.ylabel('y')
|
||||||
|
p.xlabel('u')
|
||||||
|
p.grid('on')
|
||||||
|
i=0
|
||||||
|
uold=un
|
||||||
|
while(True):
|
||||||
|
t+=dt
|
||||||
|
uold=un
|
||||||
|
un=u_np1(uold,t,dt)
|
||||||
|
if(i%100==0):
|
||||||
|
linefd.set_xdata(un)
|
||||||
|
linee.set_xdata(u_ex(t))
|
||||||
|
p.draw()
|
||||||
|
# print("Time:",t)
|
||||||
|
i+=1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user