Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Computational Fluid Dynamics

Computational Fluid Dynamics



http://www.nd.edu/~gtryggva/CFD-Course/! Objectives:!

A Code for the Navier- Develop a method to solve the Navier-Stokes


equations using “primitive” variables (pressure
Stokes Equations in! and velocities), using a control volume approach
on a staggered grid.!

Velocity/Pressure Form! • Equations!


• Discrete Form!
• Solution Strategy!
• Boundary Conditions!
Grétar Tryggvason! • Code and Results!
Spring 2013!

Computational Fluid Dynamics


Computational Fluid Dynamics

“Two-dimensional” flow! “Two-dimensional” flow!


u = (u,v )
u = ( u, v )
n = (nx ,ny )
(
n = nx , ny )
Conservation
of Momentum!
∂ Conservation of Mass!
∂t ∫V ∫ uu ⋅ ndS −
u dV = − 
S
1
ρ ∫ S ∫ ∇u ⋅ ndS
pnx dS + ν 
S

∂ ∫ u ⋅ n ds = 0
∫ ∫ vu ⋅ ndS − ∫ ∫ ∇v ⋅ ndS
pny dS + ν 
S
v dV = −  1
ρ
∂t V S S S

Computational Fluid Dynamics


Computational Fluid Dynamics

Control volume!

“Two-dimensional” flow! n3 = (0,1)


Select a square
control volume,
aligned with the n4 = (−1,0) h! n2 = (1,0)
coordinate
directions! h!
Conservation of mass!
y
n1 = (0, −1)
v-velocity

u-velocity

x

Computational Fluid Dynamics
Computational Fluid Dynamics

Conservation of mass! vi!,j+1/2! Notice that when we apply the vi!,j+1/2!

∫ u ⋅ n ds = 0 mass conservation equation to a


S
h! ui!-1/2,j! Pi!,j! ui!+1/2,j!
control volume centered at i,j, we h! ui!-1/2,j! Pi!,j! ui!+1/2,j!
The velocity at the end of naturally pick up the velocities at
each time step must satisfy the edges of the control volume.
vi!,j-1/2! Nothing has been said so far vi!,j-1/2!
this constraint!
h!
about how the velocities at the h!
Integrate over the boundary! edges are found. They could be
interpolated from values at the
hu n+1 − hun+1 + hv n+1 − hv n+1 =0 cell center, or found directly using
i +1/ 2, j i −1/ 2 , j i , j +1/ 2 i , j −1/ 2
control volumes centered around
the velocity at the edges. The
Divide by h:
u n+1
i+1 / 2 , j
− uni−1+1/ 2 , j + v n+1
i, j +1/ 2
− v n+1
i, j −1 / 2
=0 second approach leads to
STAGGERED GRIDS!

Computational Fluid Dynamics


Computational Fluid Dynamics

Momentum equation!

For the momentum, select a control


volume around each velocity component!

Conservation of Momentum! vi,j+1/2! vi+1,j+1/2! ui-1/2j+1! Pi,j+1! ui+1/2,j+1!

The Advection Terms! h! Pi,j! ui+1/2,j! Pi+1,j! h! vi,j+1/2!

vi,j-1/2! vi+1,j-1/2! ui-1/2,j! Pi,j! ui+1/2,j!

h! h!

Computational Fluid Dynamics


Computational Fluid Dynamics

The Staggered (MAC) Grid!

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

vi,j-1/2! vi+1,j-1/2! ui-1/2,j! Pi,j! ui+1/2,j!

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

Computational Fluid Dynamics


Computational Fluid Dynamics

Advection terms! Advection terms!

In/out flow of x-momentum! Find the fluxes!


vi,j+1/2! vi+1,j+1/2! vi,j+1/2! vi+1,j+1/2!
Interpolate the velocities as needed!
∫S
uu ⋅ ndS
2
⎛1
(u2 ) ni+1, j = ⎝ (uin+3 / 2 . j + uin+1/ 2. j )⎞⎠
h! Pi,j! ui+1/2,j! Pi+1,j! ui-1/2,j Pi,j
! ui+1/2,j
! Pi+1,j ui+3/2,j
! ! !

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

Computational Fluid Dynamics


Computational Fluid Dynamics

Advection terms! Advection terms!

In/out flow of y-momentum! Find the fluxes!


ui-1/2j+1! Pi,j+1! ui+1/2,j+1! ui-1/2j+1! Pi,j+1! ui+1/2,j+1!
Interpolate the velocities as needed!
∫ vu ⋅ ndS
S
⎛1 n
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!

The pressure term! h!


Integrate over the boundary!

1
ρ ∫
S
pnx dS ≈
1
ρ
(
pi +1, j − pi, j h )

Computational Fluid Dynamics


Computational Fluid Dynamics

Pressure term!

ui-1/2j+1! Pi,j+1! ui+1/2,j+1!


Pressure force in the y-direction!

∫
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 )

Computational Fluid Dynamics


Computational Fluid Dynamics

Viscous terms—x-momentum! Viscous terms—x-momentum!

Viscous diffusion of x-momentum!


n2 = (0,1) Viscous diffusion of x-momentum!
vi,j+1/2! vi+1,j+1/2!

Approximate n3 = (−1,0) h! n1 = (1,0) h! Pi,j! ui+1/2,j! Pi+1,j!


the integral:!
h!
ν ∫ ∇u ⋅ ndS
S vi,j-1/2! vi+1,j-1/2!
n4 = (0,−1)
⎛ ∂u ∂u ⎞ ⎛ ∂u ⎞ ∂u ⎞ ∂u ⎞ ∂u ⎞ ⎞ h!
ν ∫ ∇u ⋅ ndS = ν ∫ ⎜ nx + ny dS ≈ ν ⎜ ⎟ h + ⎟ h − ⎟ h − ⎟ h⎟
S S⎝ ∂x ∂ y ⎟⎠ ⎝ ∂ x ⎠ 1 ∂ y ⎠ 2
∂ x ⎠ 3 ∂y⎠ 4 ⎠

⎛ ∂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 ⎠

Computational Fluid Dynamics


Computational Fluid Dynamics

Viscous terms—x-momentum! Viscous terms—y-momentum!

x-diffusion of momentum! vi,j+1/2! vi+1,j+1/2! Similarly:! ui-1/2j+1! Pi,j+1! ui+1/2,j+1!


y-diffusion of momentum!

h! Pi,j! ui+1/2,j! Pi+1,j! h! vi,j+1/2!

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 )

Computational Fluid Dynamics


Computational Fluid Dynamics

Gathering the terms!


∂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

= (u )i +1, j − (u 2 )ni, j + (uv)ni +1/ 2 , j +1 / 2 − (uv)ni +1/ 2 , j −1 / 2


Δt h
ν
+ 2 un (
h 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 )
− (Pi +1, j − Pi , j )
1
Where!
p h
P=
ρ
Computational Fluid Dynamics
Computational Fluid Dynamics

Gathering the terms! Summary!

( )
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

= (uv) n − (uv) n + (v 2 ) ni, j +1 − (v 2 ) ni, j


Δt
( )
n +1 i+1/ 2, j +1/ 2 i−1/ 2, j +1/ 2
v i, j +1/ 2 −v n
i, j +1/ 2 −1 h
= − (uv) n + (v 2 ) ni, j +1 − (v 2 ) ni, j
( )
(uv) n ν
Δt h i+1/ 2, j +1/ 2 i−1/ 2, j +1/ 2
+ 2 vn + vn + vn + vn − 4v n
( )
i+1, j +1/ 2 i−1, j +1/ 2 i, j +3 / 2 i, j +1/ 2
ν h i+1/ 2, j−1/ 2
+ 2 vn + vn + vn + vn − 4v n
− ( Pi, j +1 − Pi, j )
h i+1, j +1/ 2 i−1, j +1/ 2 i, j +3 / 2 i+1/ 2, j−1/ 2 i, j +1/ 2 1
h
− ( Pi, j +1 − Pi, j )
1
Where!
P=
p h u n+1
i+1 / 2 , j
− uni−1+1/ 2 , j + v n+1
i, j +1/ 2
− v n+1
i, j −1 / 2
=0
ρ

Computational Fluid Dynamics


Computational Fluid Dynamics

Momentum equations!

( )
n +1
ui +1/ 2 , j − ui+1/ 2, j −1 2 n
n

= (u )i +1, j − (u )i, j + (uv) i +1/ 2 , j +1/ 2 − (uv) i +1/ 2 , j −1/ 2


2 n 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

= −A ni, j − ∇ h Pi, j + Dni, j


Δt

Computational Fluid Dynamics


Computational Fluid Dynamics

Discretization in time!
Mass conservation equation! Summary of discrete vector equations !
u n +1 − u n +1 + v n +1 − v n +1 =0
i+1/ 2, j i−1/ 2, j i, j +1/ 2 i, j−1/ 2

uni, +1
j − u i, j
n

= −A ni, j − ∇ h Pi, j + Dni, j Evolution of the velocity!


Write as one vector equation! Δt

∇ 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

by introducing the temporary velocity ut! 1


∇ 2h Pi, j = ∇ ⋅ ut
Projection Method! Δt h i, j

Computational Fluid Dynamics


Computational Fluid Dynamics

Discretization in time! Algorithm!

1. Find a temporary velocity using the advection and the


diffusion terms only:! Initial field given!
uti , j = uni, j + Δt (−A ni , j + Dni, j )
Determine u, v boundary conditions!
2. Find the pressure needed to make the velocity
Advect!u i , j = u i , j + Δt (− A i , j + Di , j )
field incompressible! t n n n

1
∇ P = ∇ h ⋅ uti, j
2

Δt
h i, j
Poisson equation for Pi , j (SOR)!

3. Correct the velocity by adding the pressure n +1


Projection! ui , j = ui , j − Δt ∇ h Pi, j
t

gradient:!
n +1
ui , j = ui , j − Δt ∇ h Pi, j
t
t=t+Δt!

Computational Fluid Dynamics


Computational Fluid Dynamics

Computational Grid! Computational Grid!
U1,ny+1!

unx,ny+1!
ui,ny+1!

ui+1,ny+1!
u2,ny+1!

ui-1,ny+1!

p2,ny+1! pi-1,ny+1! pi,ny+1! pi+1,ny+1! pnx,ny+1! pnx+1,ny+1!


Array Dimension:! p1,ny+1!
Since a fractional number is not allowed in computer program,! v1,ny! v2,ny! vi-1,ny! vi,ny! vi+1,ny! vnx,ny! vnx+1,ny!

redefine velocity node indices:! P(1: nx + 1,1: ny + 1)


unx,ny!
U1,ny!

ui+1,ny!
ui-1,ny!

ui,ny!
u2,ny!

p1,ny! p2,ny! pi-1,ny! pi,ny! pi+1,ny! pnx,ny! pnx+1,ny!

u(1: nx,1: ny + 1) v1,j+1! v2,j+1! vi-1,j+1! vi,j+1! vi+1,j+1! vnx,j+1! vnx+1,j+1!

u(i, j) = ui +1/2, j
unx,j+1!
u1,j+1!

ui-1,j+1!

ui+1,j+1!

v(1: nx + 1,1: ny)


ui,j+1!
u2,j+1!

v(i,j)! p1,j+1! p2,j+1! pi-1,j+1! pi,j+1! pi+1,j+1! pnx,j+1! pnx+1,j+1!

v(i, j) = vi, j +1/2


v1,j! v2,j! vi-1,j! vi,j! vi+1,j! vnx,j! vnx+1,j!
unx,j!
u1,j!

ui+1,j!
ui-1,j!
u2,j!

ui,j!

p1,j! p2,j! pi-1,j! pi,j! pi+1,j! pnx,j! pnx+1,j!


h! u(i-1,j)! P(i,j)! u(i,j)!
v1,j-1! v2,j-1! vi-1,j-1! vi,j-1! vi+1,j-1! vnx,j-1! vnx+1,j-1!
unx,j-1!
u1,j-1!

ui-1,j,-1!

ui+1,-1j!
ui,j-1!
u2,j-1!

Write also! p1,j-1! p2,j-1! pi-1,j-1! pi,j-1! pi+1,j-1! pnx,j-1! pnx+1,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!

p1,2! p2,2! pi-1,2! pi,2! pi+1,2! pnx,2! pnx+1,2!


h!
v(i, j) = vi, j v1,1! v2,1! vi-1,1! vi,1! vi+1,1! vnx,1! vnx+1,1!
unx,1!
u1,1!

p2,1! pi-1,1! pi,1! pi+1,1! Pnx,1! pnx+1.1!


ui-1,1!

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

Computational Fluid Dynamics


Computational Fluid Dynamics

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

Computational Fluid Dynamics


Computational Fluid Dynamics

Velocity Boundary Conditions!

Velocity of wall is given, Uwall (no-slip) ! vi,3


vi+1,3

Interpolate linearly! pi,3


pi+1,3

ui,3

ui,2 + ui,1
= U wall
2 vi,2
vi+1,2
The Pressure Equation!
Solve for the “ghost” velocity!
pi,2
ui,2
pi_1,2

ui,1 = 2U wall − ui,2
Uwall! vi,1
vi+1,1

If Uwall =0 !

ui,1 = −ui,2 ui,1


(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 into:! i,2 i−1,2 i,2


v i, j−1/ 2 = v i, j−1/ 2 − ( Pi, j − Pi, j−1 )
n +1 t
ui-1,2
pi,2
ui,2

h
Substitute for the velocities!
u n +1 − u n +1 + v n +1 v n +1 =0 Δt vi,1

i+1/ 2, j i−1/ 2, j i, j +1/ 2

i, j−1/ 2
n +1
v i,2 = v i,2
t

h
(Pi,3 − Pi,2 )
Giving:!
Δt
( )
pi,1

− ( Pi+1,2 − Pi,2 )
n +1 ui-1,1
ui,1

Pi+1, j + Pi −1, j + Pi, j+1 + Pi, j −1 − 4Pi, j =
h t
u − ut + vt − vt ui,2 = ui,2
t

Δt i+1/ 2, j i −1/ 2, j i, j+1/ 2 i, j −1/ 2 h


Δt
ui−1,2 = ui−1,2 − ( Pi,2 − Pi−1,2 )
n +1 t

Computational Fluid Dynamics


Computational Fluid Dynamics

Boundary Conditions - Pressure! Solving the pressure equation!

Δt Solving for the pressure! P(i, j) i = 2,nx; j = 2,ny


n +1
v i,2 = v i,2
t

h
(Pi,3 − Pi,2 ) Substitute into:!
Interior nodes:! i = 3,,nx −1; j = 3,,ny −1
Δt 1 ⎛
n +1
ui,2 = ui,2
t
− ( Pi+1,2 − Pi,2 )
h
u n +1 − u n +1 + v n +1 = 0
i,2 i−1,2 i,2
Pi, j = β (P + Pi−1, j + Pi, j +1 + Pi, j−1) −
4 ⎝ i +1, j
h t
Δt i, j
( ⎠ )
u − u ti −1, j + v ti , j − v ti , j −1 ⎞ + (1− β )Pi, j

Δ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!

Computational Fluid Dynamics


Computational Fluid Dynamics

Algorithm!

Initial field given! Initialize parameters and arrays, set


time step!
!
Determine u, v for is=1:nstep!
boundary conditions! set boundary conditions for !
tangential velocity (ghost!
(
uti, j = ui,n j + Δt −A i,n j + Di,n j ) points)!
The Structure of the !
Find predicted velocity!
!
Poisson equation!
Code! for Pi , j (SOR)! !
Solve for pressure using SOR!

Find the projected velocity !


n +1
ui , j = ui , j − Δt ∇ h Pi, j
t
by adding the pressure gradient!
!
PLOT!
t=t+Δt! end!
Computational Fluid Dynamics
Computational Fluid Dynamics

Solving the pressure equation!
Discrete predicted velocities!
1 ⎛
ut(i,j)=u(i,j)+dt*(-(0.25/h)*((u(i+1,j)+u(i,j))^2-(u(i,j)+...!
u(i-1,j))^2+(u(i,j+1)+u(i,j))*(v(i+1,j)+...!
Pi, j = β (P + Pi−1, j + Pi, j +1 + Pi, j−1) −
4 ⎝ i +1, j
h t
Δt i, j
( )
u − u ti −1, j + v ti , j − v ti , j −1 ⎞ + (1− β )Pi, j

v(i,j))-(u(i,j)+u(i,j-1))*(v(i+1,j-1)+v(i,j-1)))+...!
1 ⎛
!
(mu/h^2)*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1)-4*u(i,j)));! 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

vt(i,j)=v(i,j)+dt*(-(0.25/h)*((u(i,j+1)+u(i,j))*(v(i+1,j)+...! 1 ⎛
v(i,j))-(u(i-1,j+1)+u(i-1,j))*(v(i,j)+v(i-1,j))+...! 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

(v(i,j+1)+v(i,j))^2-(v(i,j)+v(i,j-1))^2)+...!
(mu/h^2)*(v(i+1,j)+v(i-1,j)+v(i,j+1)+v(i,j-1)-4*v(i,j))); Pressure!
p(i,j)=beta*c(i,j)*(p(i+1,j)+p(i-1,j)+p(i,j+1)+p(i,j-1)-...!
(h/dt)*(ut(i,j)-ut(i-1,j)+vt(i,j)-vt(i,j-1)))+(1-beta)*p(i,j);!
Discrete corrected velocities!
where!
u(2:nx,2:ny+1)=...!
c(i,j)=1/4 for interior nodes; c(i,j)=1/3 for boundary nodes; !
! ut(2:nx,2:ny+1)-(dt/h)*(p(3:nx+1,2:ny+1)-p(2:nx,2:ny+1));!
c(i,j)=1/2 for corner nodes; !
v(2:nx+1,2:ny)=...!
Set p(i,j)=0 for ghost points. !
! vt(2:nx+1,2:ny)-(dt/h)*(p(2:nx+1,3:ny+1)-p(2:nx+1,2:ny));!
Set the intermediate normal velocities at the wall to zero!

Computational Fluid Dynamics


Computational Fluid Dynamics

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);!

Computational Fluid Dynamics


Computational Fluid Dynamics

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 ν

Computational Fluid Dynamics


Computational Fluid Dynamics

Velocity and pressure! Velocity and vorticity!


Pressure! Mo
vi ng
top
wa
8
ll!
6

-2

-4

-6

-8
30
25
30
20 25
15 20
10 15
10
5 5

You might also like