An Introduction to Computational Fluid Dynamics (CFD)
 Description
 Curriculum
 FAQ
 Reviews
This course will cover the basics of the finite volume method for incompressible flows on twodimensional Cartesian grids. Topics include the discretization procedure, interpolation techniques, boundary conditions, flow visualization using ParaView, and CFD errors and uncertainty. Students will write three codes; the first code solves a pure diffusion problem, the second solves a pure convection problem, and the third solves the NavierStokes equations using the SIMPLE pressurevelocity coupling procedure. The NavierStokes solver will be used to solve the “driven cavity” problem, and a problem involving the developing flow in a channel. These three codes are also available for download to, for instance, study the solution procedure, or help in debugging a student written code. Upon completion of the course students will be familiar with the basics of the finite volume method, enabling a more effective use of a commercial CFD solver, and possess the background necessary to study more advanced CFD techniques.

1A Brief Introduction to CFD and what we will cover in this course.
Students should gain a basic understanding of CFD applications and the overall steps involved in a CFD analysis. Sites to download Fortran compilers included at the end of the downloadable notes.

2Assignment 1: Download/Install a Programming Language and Visualization Software

3Some representative, lowcost CFD results.
A preview of some flows computed using computational (hardware) resources that would generally be available to most students. Software used includes the open source solver OpenFoam.

4Derivation of FInite Difference Approximations
Shows students how to derive finite difference approximations using Taylor series expansions. Students should be able derive approximations for various derivatives after viewing this lecture. You can download the notes under "resources" below.

5Derive a Finite Difference Approximation

6Basic Iterative Solvers
Students will understand the basics of Jacobi, GaussSeidel, and SOR iterative techniques for solving systems of equations. SOR will represent the primary solution technique applied throughout the course.

7Discretization of Diffusion Terms: Part 1
This lecture introduces the diffusion equation, its integration over control volumes, and conversion of a volume integral to a surface integral using the divergence theorem. You can download the complete set of notes for this section under "resources" below.

8Discretization of Diffusion Terms: Part 2
This lecture describes the process for discretizing the surface and volume integrals, and arranging the resulting equations into a form suitable for an iterative solution procedure.

9Discretization of Diffusion Terms: Boundary Conditions
This lecture shows you how to modify the discretized equations around the domain perimeter where boundary conditions must be implemented.

10An Example Problem
This lecture introduces the diffusion problem we will be solving with our own codes.

11Write a Program to Solve the Example DIffusion Problem

12Fortran Code for Example Diffusion Problem
Have a better understanding of how the code may be written. You can also download the Fortran code.

13Section of Fortran Code to Write .csv FIle for ParaView
Describes a short section of the Fortran code to output a .csv file for input into ParaView.

14Visualization Using ParaView
In this lecture we will use ParaView to construct contours of the numerical solution to our example problem.

15Discretization of Convection Terms
This lecture discusses integration of convection terms over a control volume and conversion to surface integral. Reveals the necessity for interpolation schemes. You can download the all the notes for this section under "resources" below.

16Interpolation Methods: Central "Differencing"
In this lecture we discuss a "central differencing" interpolation option to obtain values of the unknown function on cell faces based on values at adjacent cell centers.

17Interpolation Methods: 1st Order Upwinding
An alternative interpolation technique known as 1st order upwinding, or the "donorcell" method is discussed.

18Deferred Correction to "Blend" Interpolation Schemes
Discuss a method to blend the upwinding and central difference approximations to achieve most of the benefits of each method.

19An Example Problem: Description
Introduction of the example problem for pure convection.

20Upwinding Component Boundary Conditions for Example Problem
Coefficients for first order upwinding around perimeter (boundary) cells.

21Central Differencing Component Boundary Conditions for Example Problem

22Corner Cell Coefficients
Coefficients for corner cells are shown (both first and second order interpolations).

23Write a Program to Solve the Example Convection Problem of Lecture 16

24Fortran Code for Example Convection Problem
The lecture provides an explanation of the Fortran code statements and procedure. You can also download the Fortran code.

25Results
Contour and line plots for the convection example comparing the results obtained using 1st order upwinding, 2nd order central, and a blending of the two.

26Other Interpolation Schemes
Linear Upwind and QUICK interpolation schemes.

27Interpolation Scheme Truncation Errors
Formal derivation of interpolation scheme truncation errors using Taylor series expansions.

28Generalization of Interpolation Schemes
Generalization of interpolations schemes and the total variation diminishing (TVD) property.

29Desirable Properties of Discretization Schemes
In this lecture we look at some desirable properties of discretization schemes, particularly the interpolation options.

30Stability of Combined Convection/Diffusion Problems
We look at the likesign coefficient requirement for a onedimensional combined convection/diffusion problem for both 1st order upwinding and linear interpolation (2nd order central) for the convection terms.

31The NavierStokes Equations
In this lecture we look at the form of the NavierStokes equations that we will utilize when applying the finitevolume method.
You may download all the notes for this section under "downloadable materials" below.

32Staggered Grid Arrangement of Variables

33The SIMPLE Procedure for PressureVelocity Coupling

34Discretization of the XMomentum Equation: Part 1

35Underrelaxation of the Momentum Equations

36The Velocity Correction Equations

37The Discretized Continuity Equation

38Index Notation for NavierStokes Solver (Code) on Staggered Grid
A description of the index notation used in the Fortran code to follow.

39Write a Program to Solve the NavierStokes Equations

40Fortran Code for NavierStokes Solver
In this lecture we will go over the main components of the Navier Stokes solver code. Although it is written in Fortran, conversion to a language of your choice should not be difficult. You can also download the NavierStokes solver below. (Note a new version was uploaded on 4/11/2020 to fix an indexing bug in the xmomentum solver.)

41Description of Driven Cavity and Developing Flow in a Channel Problems
This lecture introduces the driven cavity and developing flow in a channel problems which we will solve using our NavierStokes code.

42Driven Cavity Results Using ParaView
Demonstration of how to plot velocity vectors for driven cavity problem using ParaView. Downloadable vector plot of results.

43Channel Flow Results Using ParaView
Results for channel flow at Re=100 using ParaView. Included are a contour plot and a line plot along the centerline of velocity magnitude.

44Other Boundary Conditions
Pressure boundary conditions; Symmetry boundary conditions; Procedure to obtain a fullydeveloped flow; Blocking out regions to simulate more complex geometries
Social Network