Professional Documents
Culture Documents
A Code For The Navier-Stokes Equations In! Velocity/Pressure Form!
A Code For The Navier-Stokes Equations In! Velocity/Pressure Form!
∂ ∫ u ⋅ n ds = 0
∫ ∫ vu ⋅ ndS − ∫ ∫ ∇v ⋅ ndS
pny dS + ν
S
v dV = − 1
ρ
∂t V S S S
u-velocity
x
Computational Fluid Dynamics
Computational Fluid Dynamics
h! h!
vi-1,j+3/2
vi,j+3/2
vi-1,j+3/2
Define Cell-
Averages:!
ui+1/2,j+1
pi-1,j+1
ui-1/2,j+1
pi,j+1
ui+1/2,j+1
pi+1,j+1
ui+1/2,j+1
v - cell!
v!i,j+1/2!
1
V ∫Vu
vi-1,j+1/2
vi,j+1/2
vi-1,j+1/2
u= u dV
h! ui!-1/2,j! Pi!,j! ui!+1/2,j! u - cell!
1
v = ∫ v dV
ui+1/2,j
pi-1,j
ui-1/2,j
pi,j
ui+1/2,j
pi+1,j
ui+1/2,j
V Vv v!i,j-1/2!
vi-1,j-1/2
vi,j-1/2
vi-1,j-1/2
1
P = ∫ p dV h!
ui+1/2,j-1
pi-1,j-1
ui-1/2,j-1
pi,j-1
ui+1/2,j-1
pi+1,j-1
ui+1/2,j-1
V Vp
vi-1,j-3/2
vi,j-3/2
vi-1,j-3/2
Computational Fluid Dynamics
Computational Fluid Dynamics
Unsteady term! Unsteady term!
Rate of change of x-momentum! vi,j+1/2! vi+1,j+1/2! Rate of change of y-momentum! ui-1/2j+1! Pi,j+1! ui+1/2,j+1!
∂ ∂
∫ ∫
h! Pi,j! ui+1/2,j! Pi+1,j! h! vi,j+1/2!
u dV v dV
∂t V ∂t V
Integrate over the control volume! h! Integrate over the control volume! h!
+1
∂ uin+1/2, j − ui +1/2, j
n
∂ vi,n +1
j +1/2 − vi, j +1/2
n
∂t ∫V
u dV ≈
Δt
h2
∂t ∫ V
v dV ≈
Δt
h2
2
2
vi,j-1/2!
⎛1 vi,j-1/2
(u2 ) ni, j = ⎝ (uni+1 / 2. j + uin−1/ 2 . j )⎞⎠
Integrate over the boundary! vi+1,j-1/2! ! vi+1,j-1/2 !
∫ uu ⋅ ndS ≈
S
h! 2
⎛1 n ⎞⎛ 1 n ⎞
((u ) )h (uv)ni +1/ 2 , j +1/ 2 = ⎝ (ui+1 / 2 . j + ui +1/ 2. j +1 )⎠ ⎝ (vi , j +1/ 2 + vi +1, j +1/ 2 )⎠
n n
2 n
i +1, j − (u 2 )i,n j + (uv)n − (uv)n 2 2
i +1/2, j +1/2 i +1/2, j −1/2
⎛1 n ⎞⎛ 1 n ⎞
(uv)ni +1/ 2 , j −1/ 2 = ⎝ (ui+1 / 2 . j + ui +1/ 2. j −1 )⎠ ⎝ (vi, j −1/ 2 + vi+1, j −1/ 2 )⎠
n n
2 2
)⎞
h! vi,j+1/2! vi,j+1/2!
(v 2 )ni, j +1 = (v + vn
⎝ 2 i, j +3 / 2 i, j +1/ 2 ⎠
2
⎛1 n
)⎞
Integrate over the boundary! ui-1/2,j! Pi,j! ui+1/2,j! ui-1/2,j Pi,j ! ui+1/2,j
! !
(v 2 )ni, j = (v + vn
⎝ 2 i, j +1/ 2 i, j−1/ 2 ⎠
∫ vu ⋅ ndS ≈
S
h!
⎛1 n ⎞⎛ 1 n ⎞
((uv) )h (uv)ni +1/ 2 , j +1/ 2 = ⎝ (ui+1 / 2 . j + ui +1/ 2. j +1 )⎠ ⎝ (vi , j +1/ 2 + vi +1, j +1/ 2 )⎠
n n
n
i +1/2, j +1/2 − (uv)in−1/2, j +1/2 + (v 2 )n − (v 2 )n 2 2
i, j +1 i, j
⎛1 n ⎞⎛ 1 (v n
(uv) ni−1/ 2 , j +1/ 2 = + ui−1/ + v ni−1, j +1/ 2 )⎞
n
(u 2 . j +1 )
⎝ 2 i−1/ 2 . j ⎠⎝ 2 i, j +1/ 2 ⎠
Computational Fluid Dynamics
Computational Fluid Dynamics
Pressure term!
vi,j+1/2! vi+1,j+1/2!
Pressure force in the x-direction!
∫
1 h! Pi,j! ui+1/2,j! Pi+1,j!
ρ pnx dS
S
Conservation of Momentum! vi,j-1/2! vi+1,j-1/2!
1
ρ ∫
S
pnx dS ≈
1
ρ
(
pi +1, j − pi, j h )
∫
1 h! vi,j+1/2!
ρ pny dS
S
ui-1/2,j! Pi,j! ui+1/2,j!
Conservation of Momentum!
h! The viscous terms!
Integrate over the boundary!
1
ρ ∫
S
pny dS ≈
1
ρ
(
pi, j +1 − pi, j h )
⎛ ∂u ⎞ ⎛ ⎞
∂u ⎞ ⎞
n n
∂u ⎞ ∂u ⎞ ⎛ ∂u ⎞ ⎛ ∂u ⎞ ⎛ ∂u ⎞ ⎛ ∂u ⎞
n n
≈ ν ⎜ ⎟ h + ⎟ h − ⎟ h − ⎟ h⎟ = ⎜⎜ ⎟ −⎜ ⎟ +⎜ ⎟ −⎜ ⎟ ⎟h
⎝ ∂x ⎠1 ∂y⎠2 ∂x⎠ 3 ∂y⎠ 4 ⎠ ⎜⎝ ⎝ ∂ x ⎠ i +1, j ⎝ ∂ x ⎠ i, j ⎝ ∂ y ⎠ ⎝ ∂y⎠ ⎟
i +1/2, j +1/2 i +1/2, j −1/2 ⎠
Computational Fluid Dynamics
Computational Fluid Dynamics
Viscous terms—x-momentum! Viscous terms—x-momentum!
ui+1/2,j! ui+1/2,j!
Computing the derivatives vi+1,j+1/2!
Computing the derivatives vi+1,j+1/2!
vi,j+1/2! vi,j+1/2!
at the boundary:! at the boundary:!
⎛ ∂u ⎞
n
uin+1/ 2 , j − uin−1/ 2, j ui+1/2,j! Pi,j! ui+1/2,j! Pi+1,j! ui+1/2,j! ⎛ ∂u ⎞ n un − un ui+1/2,j! Pi,j! ui+1/2,j! Pi+1,j! ui+1/2,j!
≈ ⎜ ⎟ ≈ i+1/ 2, j +1 i−1/ 2, j
⎝ ∂x ⎠ i, j h ⎝ ∂y ⎠ i+1/ 2, j +1/ 2 h
vi,j-1/2! vi+1,j-1/2! vi,j-1/2! vi+1,j-1/2!
ui+1/2,j! ui+1/2,j!
Substitute:! Substitute:!
⎛ ⎛ ∂u ⎞ ⎛ ∂u ⎞ ⎞ ⎛⎜ u
n n n
+u
n
− 2u
n
⎞ ⎛⎛ ∂u ⎞ n ⎛ ∂u ⎞ n ⎞ ⎛ un + ui+1/ ⎞
2, j−1 − 2ui+1/ 2, j
n n
⎜ − ⎟h ≈ i+ 3/ 2 , j i −1/ 2 , j i +1 / 2 , j
⎟h ⎜⎜ ⎟ − ⎜ ⎟ ⎟ h ≈ ⎜ i+1/ 2, j +1 ⎟h
⎝ ∂x i +1, j ⎝ ∂x ⎠ i, j ⎠ ⎝
⎝ ⎠ h ⎠ ⎜⎝ ∂y ⎠
⎝ i+1/ 2, j +1/ 2
⎟
⎝ ∂y ⎠ i+1/ 2, j−1/ 2 ⎠ ⎝ h ⎠
The final result is:! vi,j-1/2! vi+1,j-1/2! The final result is:! ui-1/2,j! Pi,j! ui+1/2,j!
h! h!
ν ∫ ∇u ⋅ ndS ≈ ν ∫ ∇v ⋅ ndS ≈
S
( )
S
ν u n
i + 3/2, j
+u n
i −1/2, j
+u n
i +1/2, j +1
+u n
i +1/2, j −1
− 4u n
i +1/2, j ν vn( i, j + 3/2
+ vn
i, j −1/2
+ vn
i +1, j +1/2
+ vn
i −1, j +1/2
− 4v n
i, j +1/2 )
∂
∂t ∫
V ∫ uu ⋅ ndS + ν ∫ ∇u ⋅ ndS −
u dV = −
S S
1
ρ ∫ S
pnx dS
Putting it together!
ui+1 / 2 , j − ui+1 / 2 , j −1 2 n
( )
n+1 n
( )
n +1
2, j − ui+1/ 2, j −1 2 n
n
ui+1/
= (u ) i+1, j − (u 2 ) ni, j + (uv) n − (uv) n
Δt h i+1/ 2, j +1/ 2 i+1/ 2, j−1/ 2
∂
∂t ∫ V ∫ vu ⋅ ndS + ν ∫ ∇v ⋅ ndS −
v dV = −
S S
1
ρ ∫ S
pny dS ν n
+ 2 u
h (
i+3 / 2, j
+u n
i−1/ 2, j
+u n
i+1/ 2, j +1
+u n
i+1/ 2, j−1
− 4u n
i+1/ 2, j )
− ( Pi+1, j − Pi, j )
1
h
v i,n +1
j +1/ 2 − v i, j +1/ 2 −1
( )
n
Momentum equations!
( )
n +1
ui +1/ 2 , j − ui+1/ 2, j −1 2 n
n
Δt h
1
h h
ν
− (Pi+1, j − Pi, j ) + 2 u n (
i +3 / 2, j
+ un
i−1/ 2, j
+ un
i+1/ 2, j +1
+ un
i+1/ 2, j −1
− 4u n
i +1/ 2 , j )
Solution Strategy! j +1/ 2 − v i, j +1/ 2
v i,n+1 −1
( )
n
=
(uv)n − (uv)n + (v 2 )ni, j +1 − (v 2 ) ni, j
Δt h i +1/ 2, j +1/ 2 i−1/ 2, j +1/ 2
h h
ν n
(
− (Pi, j +1 − Pi, j ) + 2 v i+1, j +1/ 2 + v i−1, j +1/ 2 + v i, j + 3/ 2 + v i+1/ 2, j −1/ 2 − 4v i, j +1/ 2
1 n n n n
)
Write as one vector equation!
uni, +1
j − u i, j
n
uni, +1
j − u i, j
n
∇ h ⋅ uni, +1
j =0
∇ h ⋅uni ,+1
j =0 Constraint on velocity!
Where we have used!
1
∇ ⋅ u = limδ V →0
δV ∫ u ⋅ n ds
S
No explicit equation for the pressure! !
to define the numerical divergence!
Computational Fluid Dynamics
Computational Fluid Dynamics
Discretization in time! Discretization in time!
Split !
To derive an equation for the pressure we take the
uni, +1
j − u i, j
n
divergence of!
= −A ni, j − ∇ h Pi, j + Dni, j
Δt n +1
ui, j = ui, j − Δt ∇ h Pi, j
t
into!
uti , j − uni, j and use the mass conservation equation!
= − Ai, j + Di, j ⇒ ui, j = ui, j + Δt (−A i, j + Di, j )
n n t n n n
n +1
Δt ∇ h ⋅ui , j = 0
and!
The result is!
uni ,+1
j − ui , j
t
n +1 0!
= −∇h Pi , j ⇒ = u − Δt ∇ h Pi, j
t
u n +1
∇ h ⋅ui , j = ∇ h ⋅ ui, j − Δt ∇ h ⋅∇ h Pi, j
t
Δt i,j i, j
1
∇ P = ∇ h ⋅ uti, j
2
Δt
h i, j
Poisson equation for Pi , j (SOR)!
gradient:!
n +1
ui , j = ui , j − Δt ∇ h Pi, j
t
t=t+Δt!
unx,ny+1!
ui,ny+1!
ui+1,ny+1!
u2,ny+1!
ui-1,ny+1!
ui+1,ny!
ui-1,ny!
ui,ny!
u2,ny!
u(i, j) = ui +1/2, j
unx,j+1!
u1,j+1!
ui-1,j+1!
ui+1,j+1!
ui+1,j!
ui-1,j!
u2,j!
ui,j!
ui-1,j,-1!
ui+1,-1j!
ui,j-1!
u2,j-1!
v(i,j-1)!
u(i, j) = ui, j
v1,2! v2,2! vi-1,2! vi,2! vi+1,2! vnx,2! vnx+1,2!
unx,2!
u1,2!
ui-1,2!
ui+12!
ui,2!
u2,2!
ui+1,1!
p1,1!
ui,1!
u2,1!
Computational Fluid Dynamics
Computational Fluid Dynamics
Boundary Grid Structure! Boundary Grid Structure!
v1,3
v2,3
v3,3
Array Dimension:! =0
=0
=0
unx-2,ny+1
pnx-1,ny+1
unx-1,ny+1
pnx,ny+1
unx,ny+1
pnx+1,ny+1
Array Dimension:!
p1,3
u1,3
p2,3
u2,3
p3,3
u3,3
P(1: nx + 1,1: ny + 1)
=0
u(1: nx,1: ny + 1) vnx-1,ny
vnx,ny
P(1: nx + 1,1: ny + 1)
vnx+1,ny
v1,2
v2,2
v3,2
v(1: nx + 1,1: ny) u(1: nx,1: ny + 1)
unx-2,ny
pnx-1,ny
unx-1,ny
pnx,ny
unx,ny
pnx+1,ny
=0
v(1: nx + 1,1: ny)
p1,2
u1,2
p2,2
u2,2
p3,2
u3,3
=0
vnx-1,ny-1
vnx,ny-1
vnx+1,ny-1
v1,1
v2,1
v3,1
unx-2,ny-1
pnx-1,ny-1
unx-1,ny-1
pnx,ny-1
unx,ny-1
pnx+1,ny-1
=0
p1,1
u1,1
p2,1
u2,1
p3,1
u3,1
=0
=0
=0
vnx-1,ny-2
vnx,ny-2
vnx+1,ny-2
v1,3
v2,3
v3,3
The edges of the
pressure control
p1,3
u1,3
p2,3
u2,3
p3,3
u3,3
volumes coincide
=0
with the
v1,2
v2,2
v3,2
boundaries of the Boundary conditions
computational
p1,2
u1,2
p2,2
u2,2
p3,2
u3,3
domain. The for the tangential
normal velocities
=0
v1,1
are therefore velocity!
v2,1
v3,1
specified directly
on the walls!
p1,1
u1,1
p2,1
u2,1
p3,1
u3,1
=0
=0
=0
(reflection technique)!
Computational Fluid Dynamics
Computational Fluid Dynamics
Boundary Conditions - Pressure!
Δt
n +1
ui+1/ 2, j = ui+1/ 2, j −
t
h
(Pi+1, j − Pi, j ) Apply continuity at the boundary:!
0!
Δt
ui−1/ 2, j = ui−1/ 2, j − ( Pi, j − Pi−1, j ) u n +1 − u n +1 + v n +1 − v n +1 = 0
n +1 t ui-1,3
pi,3
ui,3
h i,2 i−1,2 i,2 i,1
Δt
v i,n +1
j +1/ 2 = v i, j +1/ 2 −
t
h
(Pi, j +1 − Pi, j ) Substitute u n +1 − u n +1 + v n +1 = 0
vi,2
Δt
n +1
ui−1,2 = ui−1,2
t
− ( Pi,2 − Pi−1,2 ) Boundary nodes except corner:! i = 2; i = nx; j = 2; j = ny
h 1 ⎛
Giving:!
Pi, j = β (Pi +1, j + Pi−1, j + Pi, j +1 + Pi, j−1) −
3 ⎝
h t
Δt i, j
( ⎠ )
u − u ti −1, j + v ti , j − v ti , j −1 ⎞ + (1− β )Pi, j
Δt Δt Δt
t
ui,2 − ( Pi+1,2 − Pi,2 ) − ui−1,2
t
+ ( Pi,2 − Pi−1,2 ) + v i,2
t
− ( Pi,3 − Pi,2 ) = 0 One is zero!
h h h
Corner nodes:! (i, j) = (2,2); (nx,2); (2,ny);(nx,ny)
Rearrange!
1 ⎛
Pi+1,2 + Pi−1,2 + Pi,3 − 3Pi,2 =
h t
(ui,2 − ui−1,2
t
+ v i,2
t
)
Pi, j = β (Pi +1, j + Pi−1, j + Pi, j +1 + Pi, j−1) −
2 ⎝
h t
Δt i, j
( ⎠ )
u − u ti −1, j + v ti , j − v ti , j −1 ⎞ + (1− β )Pi, j
Δt
Two are zero!
nx=9;ny=9;dt=0.02;nstep=200;mu=0.1;maxit=100;beta=1.2;h=1/nx;!
u=zeros(nx+1,ny+2);v=zeros(nx+2,ny+1);p=zeros(nx+2,ny+2);!
ut=zeros(nx+1,ny+2);vt=zeros(nx+2,ny+1);c=zeros(nx+2,ny+2)+0.25;!
uu=zeros(nx+1,ny+1);vv=zeros(nx+1,ny+1);w=zeros(nx+1,ny+1);!
THE CODE! c(2,3:ny)=1/3;c(nx+1,3:ny)=1/3;c(3:nx,2)=1/3;c(3:nx,ny+1)=1/3;!
c(2,2)=1/2;c(2,ny+1)=1/2;c(nx+1,2)=1/2;c(nx+1,ny+1)=1/2;!
un=1;us=0;ve=0;vw=0;time=0.0;!
Matlab Implementation! !
for is=1:nstep!
u(1:nx+1,1)=2*us-u(1:nx+1,2);u(1:nx+1,ny+2)=2*un-u(1:nx+1,ny+1);!
v(1,1:ny+1)=2*vw-v(2,1:ny+1);v(nx+2,1:ny+1)=2*ve-v(nx+1,1:ny+1);!
for i=2:nx, for j=2:ny+1 % temporary u-velocity! for it=1:maxit % solve for pressure!
ut(i,j)=u(i,j)+dt*(-(0.25/h)*((u(i+1,j)+u(i,j))^2-(u(i,j)+...! for i=2:nx+1, for j=2:ny+1!
u(i-1,j))^2+(u(i,j+1)+u(i,j))*(v(i+1,j)+...! p(i,j)=beta*c(i,j)*(p(i+1,j)+p(i-1,j)+p(i,j+1)+p(i,j-1)-...!
v(i,j))-(u(i,j)+u(i,j-1))*(v(i+1,j-1)+v(i,j-1)))+...! (h/dt)*(ut(i,j)-ut(i-1,j)+vt(i,j)-vt(i,j-1)))+(1-beta)*p(i,j);!
(mu/h^2)*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1)-4*u(i,j)));! end, end!
end, end! end!
! % correct the velocity!
for i=2:nx+1, for j=2:ny % temporary v-velocity! u(2:nx,2:ny+1)=...!
vt(i,j)=v(i,j)+dt*(-(0.25/h)*((u(i,j+1)+u(i,j))*(v(i+1,j)+...! ! ut(2:nx,2:ny+1)-(dt/h)*(p(3:nx+1,2:ny+1)-p(2:nx,2:ny+1));!
v(i,j))-(u(i-1,j+1)+u(i-1,j))*(v(i,j)+v(i-1,j))+...! v(2:nx+1,2:ny)=...!
(v(i,j+1)+v(i,j))^2-(v(i,j)+v(i,j-1))^2)+...! ! vt(2:nx+1,2:ny)-(dt/h)*(p(2:nx+1,3:ny+1)-p(2:nx+1,2:ny));!
(mu/h^2)*(v(i+1,j)+v(i-1,j)+v(i,j+1)+v(i,j-1)-4*v(i,j)));! !
end, end! time=time+dt!
!
Computational Fluid Dynamics
Computational Fluid Dynamics
% plot results!
uu(1:nx+1,1:ny+1)=0.5*(u(1:nx+1,2:ny+2)+u(1:nx+1,1:ny+1));!
vv(1:nx+1,1:ny+1)=0.5*(v(2:nx+2,1:ny+1)+v(1:nx+1,1:ny+1));!
w(1:nx+1,1:ny+1)=(u(1:nx+1,2:ny+2)-u(1:nx+1,1:ny+1)-...!
v(2:nx+2,1:ny+1)+v(1:nx+1,1:ny+1))/(2*h); !
hold off,quiver(flipud(rot90(uu)),flipud(rot90(vv)),'r');hold on;!
contour(flipud(rot90(w)),100),axis equal,axis([1 34 1 34]);!
pause(0.01)!
Results for the
end!
driven cavity!
Limitations on
the time step!
ν Δt 1 (|u | + | v |)Δt
2 ≤ ≤2
h 4 ν
-2
-4
-6
-8
30
25
30
20 25
15 20
10 15
10
5 5