You are on page 1of 11

Computational Fluid Dynamics! http://www.nd.edu/~gtryggva/CFD-Course/!

Computational Fluid Dynamics! Objectives:!

A Code for the NavierStokes Equations in ! Velocity/Pressure Form !


Grtar Tryggvason! Spring 2013!

Develop a method to solve the Navier-Stokes equations using primitive variables (pressure and velocities), using a control volume approach on a staggered grid.! "Equations! "Discrete Form! "Solution Strategy! "Boundary Conditions! "Code and Results!

Computational Fluid Dynamics! Two-dimensional ow!

Computational Fluid Dynamics! Two-dimensional ow!

u = (u, v )

n = (nx , ny )
Conservation of Momentum!

u = (u , v ) n = nx , ny

! !t ! !t

" "

u dV = # ! " uu $ ndS #
S

1 % 1 %

! " ! "

pnx dS + & ! " 'u $ ndS


S

Conservation of Mass!

v dV = # ! " vu $ ndS #
S

pny dS + & ! " 'v $ ndS


S

! " u ! n ds = 0
S

Computational Fluid Dynamics! Control volume! Two-dimensional ow! Select a square control volume, aligned with the coordinate directions! y!

Computational Fluid Dynamics!

n3 = (0,1)

n4 = (!1,0)

h! h!

n2 = (1,0) n1 = (0, !1)

Conservation of mass!

v-velocity!

u-velocity! x!

Computational Fluid Dynamics!

Computational Fluid Dynamics!

Conservation of mass!

vi!,j+1/2!

! "

u ! n ds = 0
h!
ui!-1/2,j! Pi!,j! ui!+1/2,j!

The velocity at the end of each time step must satisfy this constraint! Integrate over the boundary!

vi!,j-1/2!

h!

hu n + 1

i + 1/ 2, j

! hun + 1

i ! 1/ 2 , j

+ hv n + 1

i , j + 1/ 2

! hv n + 1

i , j ! 1/ 2

=0

Divide by h:!

+1 +1 +1 +1 un ! un + vn ! vn =0 i+ 1 / 2 , j i! 1 / 2 , j i, j + 1/ 2 i, j ! 1 / 2

Notice that when we apply the mass conservation equation to a control volume centered at i,j, we naturally pick up the velocities at the edges of the control volume. Nothing has been said so far about how the velocities at the edges are found. They could be interpolated from values at the cell center, or found directly using control volumes centered around the velocity at the edges. The second approach leads to STAGGERED GRIDS!

vi!,j+1/2!

h!

ui!-1/2,j!

Pi!,j!

ui!+1/2,j!

vi!,j-1/2!

h!

Computational Fluid Dynamics!

Computational Fluid Dynamics! Momentum equation! For the momentum, select a control volume around each velocity component!

Conservation of Momentum! The Advection Terms!

vi,j+1/2!

vi+1,j+1/2!

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!

vi,j-1/2!

vi+1,j-1/2!

ui-1/2,j!

Pi,j!

ui+1/2,j!

h!

h!

Computational Fluid Dynamics! The Staggered (MAC) Grid!


vi-1,j+3/2! ui+1/2,j+1! pi-1,j+1! vi-1,j+1/2! ui+1/2,j! pi-1,j! vi-1,j-1/2! ui+1/2,j-1! pi-1,j-1! vi-1,j-3/2! ui-1/2,j-1! ui-1/2,j! vi,j+3/2! vi-1,j+3/2! ui+1/2,j+1!

Computational Fluid Dynamics!

Dene CellAverages:! v - cell!

ui-1/2,j+1! pi,j+1! ui+1/2,j+1! pi+1,j+1! vi,j+1/2! pi,j! vi,j-1/2! pi,j-1! vi,j-3/2! ui+1/2,j-1! ui+1/2,j! vi-1,j+1/2! pi+1,j! vi-1,j-1/2! pi+1,j-1! vi-1,j-3/2!

u=
ui+1/2,j!

ui+1/2,j-1!

1 u dV V !Vu 1 v = ! v dV V Vv 1 P = ! p dV V Vp

v!i,j+1/2!

h!

ui!-1/2,j!

Pi!,j!

ui!+1/2,j!

u - cell!

v!i,j-1/2!

h!

Computational Fluid Dynamics! Unsteady term!

Computational Fluid Dynamics! 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!

! !t

"

u dV

h!

Pi,j!

ui+1/2,j!

Pi+1,j!

! !t

"

v dV

h!

vi,j+1/2!

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!

! !t

"

u dV #

1 n uin++1/2, j $ ui + 1/2, j

%t

h2

! !t

"

v dV #

1 n vin, + j + 1/2 $ vi , j + 1/2

%t

h2

Computational Fluid Dynamics! Advection terms! In/out ow of x-momentum!

Computational Fluid Dynamics! Advection terms! Find the uxes!

! "

vi,j+1/2!

vi+1,j+1/2!

uu ! ndS
h!
Pi,j! ui+1/2,j! Pi+1,j!

Interpolate the velocities as needed!


!

vi,j+1/2!

vi+1,j+1/2!

Integrate over the boundary!

vi,j-1/2!

vi+1,j-1/2!

((u )

! " uu ! ndS #
S 2 n i + 1, j

h!

$ (u 2 )in, j + (uv)n

i + 1/2, j + 1/2

$ (uv)n

i + 1/2, j $ 1/2

)h

2 ui-1/2,j Pi,j ui+1/2,j Pi+1,j ui+3/2,j !1 n n # (u 2 ) n i+ 1, j = " ( ui + 3 / 2 . j + ui + 1/ 2. j )$ 2 2 vi,j-1/2 vi+1,j-1/2 "1 n n $ (u 2 ) n i, j = # (ui+ 1 / 2. j + ui ! 1/ 2 . j )% 2 !1 n n n #! 1 n # (uv )n i + 1/ 2 , j + 1/ 2 = " (ui+ 1 / 2 . j + ui + 1/ 2. j + 1 )$ " (vi , j + 1/ 2 + vi + 1, j + 1/ 2 )$ 2 2
! ! ! ! !

"1 n n n $" 1 n $ (uv )n i + 1/ 2 , j ! 1/ 2 = # (ui+ 1 / 2 . j + ui + 1/ 2. j ! 1 )% # (vi, j ! 1/ 2 + vi+ 1, j ! 1/ 2 )% 2 2

Computational Fluid Dynamics! Advection terms! In/out ow of y-momentum!

Computational Fluid Dynamics! Advection terms! Find the uxes!

! " vu ! ndS
S

ui-1/2j+1!

Pi,j+1!

ui+1/2,j+1!

Interpolate the velocities as needed!

ui-1/2j+1!

Pi,j+1!

ui+1/2,j+1!

h!

vi,j+1/2!

(v 2 )n i, j +1 =
ui+1/2,j!

!1 n (v + vn )# " 2 i, j +3 / 2 i, j +1/ 2 $

vi,j+1/2!

Integrate over the boundary!

ui-1/2,j!

Pi,j!

((uv)

! " vu ! ndS #
S n i + 1/2, j + 1/2

h!

$ (uv)in$1/2, j +1/2 + (v 2 )n

i , j +1

$ ( v 2 )n

i, j

)h

Pi,j ui-1/2,j ui+1/2,j "1 n (v + vn )$ # 2 i, j +1/ 2 i, j!1/ 2 % !1 n n n #! 1 n # (uv )n i + 1/ 2 , j + 1/ 2 = " (ui+ 1 / 2 . j + ui + 1/ 2. j + 1 )$ " (vi , j + 1/ 2 + vi + 1, j + 1/ 2 )$ 2 2

(v 2 )n i, j =

(uv ) n i!1/ 2 , j + 1/ 2 =

"1 n $" 1 (v n $ (u + uin + vn !1/ 2 . j + 1 ) i!1, j +1/ 2 ) # 2 i!1/ 2 . j %# 2 i, j +1/ 2 %

Computational Fluid Dynamics!

Computational Fluid Dynamics! Pressure term!

Pressure force in the x-direction!


1 !

vi,j+1/2!

vi+1,j+1/2!

Conservation of Momentum! The pressure term!

! "

pnx dS

h!

Pi,j!

ui+1/2,j!

Pi+1,j!

vi,j-1/2!

vi+1,j-1/2!

h!

Integrate over the boundary!


1 !

! "

pnx dS #

1 pi +1, j $ pi , j h !

Computational Fluid Dynamics! Pressure term!

Computational Fluid Dynamics!

Pressure force in the y-direction!


1 !

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

ui+1/2,j+1!

! "

pny dS

h!

vi,j+1/2!

ui-1/2,j!

Pi,j!

ui+1/2,j!

h!

Integrate over the boundary!


1 !

Conservation of Momentum! The viscous terms!

! "

pny dS #

1 pi , j +1 $ pi , j h !

Computational Fluid Dynamics! Viscous termsx-momentum! Viscous diffusion of x-momentum!

Computational Fluid Dynamics! Viscous termsx-momentum! Viscous diffusion of x-momentum!

n2 = (0,1) n1 = (1,0)
h!

vi,j+1/2!

vi+1,j+1/2!

Approximate the integral:!

n3 = (!1,0)

h!

h!

Pi,j!

ui+1/2,j!

Pi+1,j!

& %u %u ) !! nx + ny dS $ S "u # ndS = ! ! $S ( ' %x * %y +

n4 = (0, !1)

!! $ "u # ndS
S

vi,j-1/2!

vi+1,j-1/2!

+ &u ' &u ' &u ' &u ' ' % ! - ) h + ) h * ) h * ) h) ( ( ( & x & y & x &y( 4 ( , 1 3 2

h!

( #u $ #u $ #u $ #u $ $ ! " * & h + & h ' & h ' & h& #y%2 #x% 3 #y% 4 % ) #x %1

n n n n + ' + &u ' + &u ' + &u ' + &u ' )h = -- ) *- ) +- ) *- ) , & x ( i +1, j , & x ( i , j , & y ( , &y( ) , i + 1/2, j + 1/2 i + 1/2, j * 1/2 (

Computational Fluid Dynamics! Viscous termsx-momentum! Computing the derivatives at the boundary:!
n uin+1/ 2 , j ' uin'1/ 2, j " !u $ & # !x % i, j h
ui+1/2,j! ui+1/2,j! vi,j+1/2! vi+1,j+1/2!

Computational Fluid Dynamics! Viscous termsx-momentum! Computing the derivatives at the boundary:!
ui+1/2,j! vi,j+1/2! vi+1,j+1/2!

Pi,j!

ui+1/2,j!

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

" !u % n un ) un ( i +1/ 2, j +1 i)1/ 2, j $ ' h # !y & i +1/ 2, j +1/ 2


Substitute:!

ui+1/2,j!

Pi,j!

ui+1/2,j!

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

vi,j-1/2!

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

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

vi+1,j-1/2!

Substitute:!

" " !u $ u " !u $ $ " ' (h ) ' & # % # % !x i, j % # # !x i +1, j


n n

n i+ 3/ 2 , j

+u

n i & 1/ 2 , j

& 2u

n i +1 / 2 , j

$ (h %

"" !u % n % " un " !u % n + uin+1/ 2, j (1 ( 2 uin+1/ 2, j % $$ ' ' h ) $ i +1/ 2, j +1 ( 'h $ ' $# !y & ' h # !y & i +1/ 2, j (1/ 2 & # & i +1/ 2, j +1/ 2 #

Computational Fluid Dynamics! Viscous termsx-momentum! x-diffusion of momentum!


h!

Computational Fluid Dynamics! Viscous termsy-momentum! Similarly:! y-diffusion of momentum!


h!

vi,j+1/2!

vi+1,j+1/2!

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

ui+1/2,j+1!

Pi,j!

ui+1/2,j!

Pi+1,j!

vi,j+1/2!

The nal result is:!

vi,j-1/2!

vi+1,j-1/2!

The nal result is:!

ui-1/2,j!

Pi,j!

ui+1/2,j!

h!

h!

!! $ "u # ndS % ! 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

!! $ "v # ndS % ! vn

i , j + 3/2

+ vn

i , j & 1/2

+ vn

i + 1, j + 1/2

+ vn

i & 1, j + 1/2

& 4 vn

i , j + 1/2

Computational Fluid Dynamics!

Computational Fluid Dynamics! Gathering the terms!

! !t

"

u dV = # ! " uu $ ndS + % ! " &u $ ndS #


S S

1 '

! "

pnx dS

Putting it together!
ui+1 / 2 , j ! ui+1 / 2 , j !1 2 n n n = (u )i +1, j ! (u 2 )n i, j + (uv ) i + 1/ 2 , j + 1 / 2 ! (uv ) i + 1/ 2 , j ! 1 / 2 "t h # + 2 un + un + un + un ! 4u n i ! 1/ 2, j i + 1/ 2, j+ 1 i + 1/ 2 , j ! 1 i + 1/ 2 , j h i + 3/ 2, j 1 ! (Pi +1, j ! Pi , j ) Where! h p P=
n n+1

Computational Fluid Dynamics! Gathering the terms!

Computational Fluid Dynamics! Summary!


1 n uin++ !1 2 n 1/ 2, j ! ui +1/ 2, j n n = ( u ) i +1, j ! ( u 2 ) n i, j + ( uv ) i +1/ 2, j +1/ 2 ! ( uv ) i +1/ 2, j !1/ 2 "t h # + 2 un + un + un + un ! 4 un i + 3 / 2, j i!1/ 2, j i +1/ 2, j +1 i +1/ 2, j !1 i +1/ 2, j h 1 ! ( Pi +1, j ! Pi, j ) h

! !t

"

v dV = # ! " vu $ ndS + % ! " &v $ ndS #


S S

1 '

! "

pny dS

( (

n +1 i, j +1/ 2

!v "t

n i, j +1/ 2

Where!

P=

p !

!1 2 n ( uv ) n ! ( uv ) n + (v 2 ) n i, j +1 ! (v ) i, j i +1/ 2, j +1/ 2 i!1/ 2, j +1/ 2 h # + 2 vn + vn + vn + vn ! 4v n i +1, j +1/ 2 i!1, j +1/ 2 i, j + 3 / 2 i +1/ 2, j !1/ 2 i, j +1/ 2 h 1 ! ( Pi, j +1 ! Pi, j ) h

1 n v in, + !1 j +1/ 2 ! v i, j +1/ 2 2 n = ( uv ) n ! ( uv ) n + (v 2 ) n i, j +1 ! (v ) i, j i +1/ 2, j +1/ 2 i!1/ 2, j +1/ 2 "t h # + 2 vn + vn + vn + vn ! 4v n i +1, j +1/ 2 i!1, j +1/ 2 i, j + 3 / 2 i +1/ 2, j !1/ 2 i, j +1/ 2 h 1 ! ( Pi, j +1 ! Pi, j ) h

( (

+1 +1 +1 +1 un ! un + vn ! vn =0 i+ 1 / 2 , j i! 1 / 2 , j i, j + 1/ 2 i, j ! 1 / 2

Computational Fluid Dynamics!

Computational Fluid Dynamics! Momentum equations!


n +1 n

ui +1/ 2 , j ! ui+1/ 2, j !1 2 n 2 n n n = ( u )i +1, j ! ( u )i, j + ( uv ) i +1/ 2 , j +1/ 2 ! (uv ) i +1/ 2 , j !1/ 2 "t h 1 # ! (Pi+1, j ! Pi, j ) + 2 u n + un + un + un ! 4un i + 3 / 2, j i! 1/ 2, j i+ 1/ 2, j +1 i+ 1/ 2, j !1 i +1/ 2 , j h h

( (

) )

Solution Strategy!

1 n v in, + j + 1/ 2 ! v i, j + 1/ 2

"t

!1 2 n ( uv )n ! ( uv )n + (v 2 )n i, j +1 ! (v ) i, j i +1/ 2, j +1/ 2 i! 1/ 2, j +1/ 2 h 1 # n n n n 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 h h =

Write as one vector equation!


+1 n un i, j ! u i, j n = !A n i, j ! # h Pi, j + D i, j "t

Computational Fluid Dynamics! Mass conservation equation!

Computational Fluid Dynamics! Discretization in time! Summary of discrete vector equations !

u n +1

i +1/ 2, j

! u n +1

i!1/ 2, j

+ v n +1

i, j +1/ 2

v n +1

i, j !1/ 2

=0
+1 n un i, j ! u i, j n = !A n i, j ! # h Pi, j + D i, j "t

Write as one vector equation!


+1 ! h " un i, j = 0

Evolution of the velocity!

+1 ! h " un i,j = 0

Constraint on velocity!

Where we have used!

! " u = lim# V $ 0

1 #V

! % u " n ds
S

No explicit equation for the pressure! !

to dene the numerical divergence!

Computational Fluid Dynamics! Discretization in time! Split !


+1 n un i, j ! u i, j n = !A n i, j ! # h Pi, j + D i, j "t into!

Computational Fluid Dynamics! Discretization in time! To derive an equation for the pressure we take the divergence of!

ui, j = ui, j ! "t # h Pi, j


t

n +1

uti , j ! un i, j "t
and!
+1 t un i , j ! ui , j

= ! A i, j + D i, j
n n

u i , j = u i , j + " t (! A i , j + D i , j )
t n n n

and use the mass conservation equation!

! h " ui , j = 0
The result is! 0!
n +1

n +1

"t

= !#h Pi , j

n +1 i,j

= u ! " t # h Pi, j
t i, j

! h " ui , j = ! h " ui, j # $ t ! h "! h Pi, j


t

by introducing the temporary velocity ut! Projection Method!

!2 hP i, j =

1 ! # ut " t h i, j

Computational Fluid Dynamics! Discretization in time! 1. Find a temporary velocity using the advection and the diffusion terms only:!
n n uti , j = un i, j + !t (" A i , j + D i, j )

Computational Fluid Dynamics! Algorithm!

Initial eld given! Determine u, v boundary conditions!


t n ! A in, j + Din, j ) Advect!u i , j = u i , j + "t (

2. Find the pressure needed to make the velocity eld incompressible!

1 ! P = ! h # uti, j "t
2 h i, j

Poisson equation for Pi , j (SOR)!


n +1 t Projection! ui , j = ui , j ! "t # h Pi, j

3. Correct the velocity by adding the pressure gradient:!

ui , j = ui , j ! "t # h Pi, j
t

n +1

t=t+#t!

Computational Fluid Dynamics! Computational Grid!

Computational Fluid Dynamics! Computational Grid!


U1,ny+1!

p1,ny!
v1,j+1!

p2,ny!
v2,j+1!

pi-1,ny!
vi-1,j+1!

pi,ny!
vi,j+1!

pi+1,ny!
vi+1,j+1!

ui+1,ny!

ui-1,ny!

u2,ny!

ui,ny!

pnx,ny!
vnx,j+1!

unx,ny! unx,j+1! unx,j! unx,j-1! unx,2! unx,1!

U1,ny!

Since a fractional number is not allowed in computer program,! redene velocity node indices:!

Array Dimension:!

p1,ny+1!
v1,ny!

p2,ny+1!
v2,ny!

pi-1,ny+1!
vi-1,ny!

pi,ny+1!
vi,ny!

pi+1,ny+1!
vi+1,ny!

ui+1,ny+1!

u2,ny+1!

ui-1,ny+1!

pnx,ny+1!
vnx,ny!

unx,ny+1!

ui,ny+1!

pnx+1,ny+1!
vnx+1,ny!

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


Write also!
h!
u(i-1,j)!

v(i,j)!

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

pnx+1,ny!
vnx+1,j+1!

u1,j+1!

ui-1,j+1!

p1,j+1!
v1,j!

p2,j+1!
v2,j!

pi-1,j+1!
vi-1,j!

pi,j+1!
vi,j!

pi+1,j+1!
vi+1,j!

ui+1,j+1!

u2,j+1!

ui,j+1!

pnx,j+1!
vnx,j!

pnx+1,j+1!
vnx+1,j!

u1,j!

P(i,j)!

u(i,j)!

p1,j!
v1,j-1!

p2,j!
v2,j-1!

pi-1,j!
vi-1,j-1!

pi,j!
vi,j-1!

pi+1,j!
vi+1,j-1!

ui+1,j!

ui-1,j!

u2,j!

ui,j !

pnx,j!
vnx,j-1!

pnx+1,j!
vnx+1,j-1!

u1,j-1!

ui-1,j,-1!

p1,j-1!

p2,j-1!
v2,2!

pi-1,j-1!
vi-1,2!

pi,j-1!
vi,2!

pi+1,j-1!
vi+1,2!

ui+1,-1j!

u2,j-1!

ui,j-1!

pnx,j-1!
vnx,2!

pnx+1,j-1!
vnx+1,2!

ui-1,2!

u1,1!

ui-1,1!

u2,1!

ui,1!

p1,1!

ui+1,1!

v(i, j ) = vi , j

h!

p1,2!
v1,1!

p2,2!
v2,1!

pi-1,2!
vi-1,1!

pi,2!
vi,1!

pi+1,2!
vi+1,1!

ui+12!

u2,2!

ui,2!

u (i, j ) = ui , j

v(i,j-1)!

v1,2!
u1,2!

pnx,2!
vnx,1!

pnx+1,2!
vnx+1,1!

p2,1!

pi-1,1!

pi,1!

pi+1,1!

Pnx,1!

pnx+1.1!

Computational Fluid Dynamics! Boundary Grid Structure!


v1,3! p1,3! =0! v1,2! p1,2! =0! v1,1! u1,2! u1,3! v2,3! p2,3! v2,2! p2,2! v2,1! u2,2! u2,3! v3,3! p3,3! v3,2! p3,2! v3,1! u3,3! vnx-1,ny-1! u3,3!

Computational Fluid Dynamics! Boundary Grid Structure!

Array Dimension:!

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

=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! vnx-1,ny! unx-2,ny! vnx,ny! unx,ny!

Array Dimension:!

vnx+1,ny! pnx+1,ny! =0! vnx+1,ny-1!

pnx-1,ny! unx-1,ny! pnx,ny! vnx,ny-1!

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

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! =0! u1,1! p2,1! =0! u2,1! p3,1! =0! u3,1! vnx-1,ny-2! vnx,ny-2! vnx+1,ny-2!

Computational Fluid Dynamics!

Computational Fluid Dynamics!

v1,3! p1,3! =0! v1,2! p1,2! =0! v1,1! u1,2! u1,3!

v2,3! p2,3! v2,2! p2,2! v2,1! u2,2! u2,3!

v3,3! p3,3! v3,2! p3,2! v3,1! u2,1! p3,1! =0! u3,1! u3,3! u3,3!

The edges of the pressure control volumes coincide with the boundaries of the computational domain. The normal velocities are therefore specied directly on the walls!

Boundary conditions for the tangential velocity !

p1,1! =0!

u1,1!

p2,1! =0!

Computational Fluid Dynamics! Velocity Boundary Conditions! Velocity of wall is given, Uwall (no-slip) ! Interpolate linearly!
vi,3! pi,3! vi,2! pi,2! ui,2! ui,3! vi+1,3! pi+1,3! vi+1,2! pi_1,2! vi+1,1! ui,1!

Computational Fluid Dynamics!

ui,2 + ui,1 = U wall 2


Solve for the ghost velocity!

The Pressure Equation!

ui,1 = 2U wall ! ui,2


If Uwall =0 ! Uwall!

vi,1!

ui,1 = ! ui,2
(reection technique)!

Computational Fluid Dynamics!


"t (Pi+1, j ! Pi, j ) h "t n +1 t ui!1/ 2, j = ui!1/ 2, j ! ( Pi, j ! Pi!1, j ) h "t 1 t v in, + (Pi, j +1 ! Pi, j ) j +1/ 2 = v i, j +1/ 2 ! h "t n +1 t v i, j !1/ 2 = v i, j !1/ 2 ! ( Pi, j ! Pi, j !1 ) h
1 t uin++ 1/ 2, j = ui +1/ 2, j !

Computational Fluid Dynamics! Boundary Conditions - Pressure! Apply continuity at the boundary:!

u n +1 ! u n +1 + v n +1 ! v n +1 = 0
i,2 i!1,2 i,2 i,1

0!

ui-1,3!

pi,3! vi,2!

ui,3!

Substitute into:!

u n +1 ! u n +1 + v n +1 = 0
i,2 i!1,2 i,2

ui-1,2!

pi,2! vi,1!

ui,2!

Substitute for the velocities!

u n +1
Giving:!

i +1/ 2, j

! u n +1

i!1/ 2, j

+ v n +1

i, j +1/ 2

v n +1

i, j !1/ 2

=0

v in,2+1 = v it,2 !

Pi+1, j + Pi !1, j + Pi, j+1 + Pi, j !1 ! 4 Pi, j =

h t u ! ut + vt ! vt i !1/ 2, j i, j+ 1/ 2 i, j !1/ 2 "t i+1/ 2, j

"t (Pi,3 ! Pi,2 ) h "t uin,2+1 = uit,2 ! ( Pi +1,2 ! Pi,2 ) h "t n +1 t ui!1,2 = ui!1,2 ! ( Pi,2 ! Pi!1,2 ) h

ui-1,1!

pi,1!

ui,1!

Computational Fluid Dynamics! Boundary Conditions - Pressure!

Computational Fluid Dynamics! Solving the pressure equation! Solving for the pressure!
Pi, j =

v in,2+1 = v it,2 !

"t (Pi,3 ! Pi,2 ) h "t uin,2+1 = uit,2 ! ( Pi +1,2 ! Pi,2 ) h "t 1 t uin!+ = u ! ( Pi,2 ! Pi!1,2 ) 1,2 i!1,2 h

Substitute into:!

P (i, j ) i = 2, nx; j = 2, ny

Interior nodes:! i = 3,!, nx ! 1; j = 3,!, ny ! 1

u n +1 ! u n +1 + v n +1 = 0
i,2 i!1,2 i,2

1 $ h t ! (P + Pi"1, j + Pi, j +1 + Pi, j"1) " u " u ti "1, j + v ti , j " v ti , j " 1 & + (1 " ! )Pi, j ' 4 % i +1, j #t i, j

Boundary nodes except corner:!

Giving:! "t "t "t uit,2 ! ( Pi +1,2 ! Pi,2 ) ! uit!1,2 + ( Pi,2 ! Pi!1,2 ) + v it,2 ! ( Pi,3 ! Pi,2 ) = 0 h h h Rearrange!

1 $ h t Pi, j = ! (Pi +1, j + Pi"1, j + Pi, j +1 + Pi, j"1) " u " u ti "1, j + v ti , j " v ti , j " 1 & + (1 " ! )Pi, j ' 3 % #t i, j

i = 2; i = nx; j = 2; j = ny

One is zero! Corner nodes:! (i, j ) = (2,2); ( nx,2); (2, ny );( nx, ny )
1 $ h t Pi, j = ! (Pi +1, j + Pi"1, j + Pi, j +1 + Pi, j"1) " u " u ti "1, j + v ti , j " v ti , j " 1 & + (1 " ! )Pi, j ' 2 % #t i, j

Pi +1,2 + Pi!1,2 + Pi,3 ! 3Pi,2 =

h t (ui,2 ! uit!1,2 + v it,2 ) "t

Two are zero!

Computational Fluid Dynamics!

Computational Fluid Dynamics! Algorithm! Initial eld given! Determine u, v boundary conditions!
Initialize parameters and arrays, set time step! ! for is=1:nstep! set boundary conditions for ! tangential velocity (ghost! points)! ! Find predicted velocity! ! Solve for pressure using SOR! ! Find the projected velocity ! by adding the pressure gradient! ! PLOT! end!

The Structure of the Code !

uti , j = uin, j + !t " A in, j + Din, j

Poisson equation! for Pi , j (SOR)!


ui , j = ui , j ! "t # h Pi, j
t n +1

t=t+#t!

Computational Fluid Dynamics! Discrete predicted velocities!


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

Computational Fluid Dynamics! Solving the pressure equation!


Pi, j = 1 $ h t ! (P + Pi"1, j + Pi, j +1 + Pi, j"1) " u " u ti "1, j + v ti , j " v ti , j " 1 & + (1 " ! )Pi, j ' 4 % i +1, j #t i, j

1 $ h t Pi, j = ! (Pi +1, j + Pi"1, j + Pi, j +1 + Pi, j"1) " u " u ti "1, j + v ti , j " v ti , j " 1 & + (1 " ! )Pi, j ' 3 % #t i, j

1 $ h t Pi, j = ! (Pi +1, j + Pi"1, j + Pi, j +1 + Pi, j"1) " u " u ti "1, j + v ti , j " v ti , j " 1 & + (1 " ! )Pi, j ' 2 % #t 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!


u(2:nx,2:ny+1)=...! ! ut(2:nx,2:ny+1)-(dt/h)*(p(3:nx+1,2:ny+1)-p(2:nx,2:ny+1));! v(2:nx+1,2:ny)=...! ! vt(2:nx+1,2:ny)-(dt/h)*(p(2:nx+1,3:ny+1)-p(2:nx+1,2:ny));!

where!
c(i,j)=1/4 for interior nodes; c(i,j)=1/3 for boundary nodes; ! c(i,j)=1/2 for corner nodes; ! Set p(i,j)=0 for ghost points. ! Set the intermediate normal velocities at the wall to zero!

Computational Fluid Dynamics!

Computational Fluid Dynamics!

THE CODE! Matlab Implementation!

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);! 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;! ! 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! 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)+...! v(i,j))-(u(i,j)+u(i,j-1))*(v(i+1,j-1)+v(i,j-1)))+...! (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! for i=2:nx+1, for j=2:ny % temporary v-velocity! vt(i,j)=v(i,j)+dt*(-(0.25/h)*((u(i,j+1)+u(i,j))*(v(i+1,j)+...! v(i,j))-(u(i-1,j+1)+u(i-1,j))*(v(i,j)+v(i-1,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)));! end, end!

for it=1:maxit % solve for pressure! for i=2:nx+1, for j=2:ny+1! 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);! end, end! end! % correct the velocity! u(2:nx,2:ny+1)=...! ! ut(2:nx,2:ny+1)-(dt/h)*(p(3:nx+1,2:ny+1)-p(2:nx,2:ny+1));! v(2:nx+1,2:ny)=...! ! vt(2:nx+1,2:ny)-(dt/h)*(p(2:nx+1,3:ny+1)-p(2:nx+1,2:ny));! time=time+dt!

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(ipud(rot90(uu)),ipud(rot90(vv)),'r');hold on;! contour(ipud(rot90(w)),100),axis equal,axis([1 34 1 34]);! pause(0.01)! end!

Computational Fluid Dynamics!

Results for the driven cavity !

Limitations on the time step!

! "t 1 2 # h 4

(| u | + | v |)!t #2 "

Computational Fluid Dynamics!

Computational Fluid Dynamics!

Velocity and pressure!

Velocity and vorticity!

Pressure!
8 6 4 2 0 -2 -4 -6 -8 30 25 20 15 10 5 5

Mo vi

ng

top

wa

ll!

30 25 20 15 10

You might also like