Notes
These are my notes taken for the Fall 2024 semester in CFD.

Introduction
These notes cover the introductory material for the course, including a review of essential mathematical concepts such as vectors and vector operations, differentiation in higher dimensions, matrices and matrix operations, eigenvectors and eigenvalues, tensors and tensor operations, and the divergence theorem. Additionally, they address key governing equations, including the Reynolds Transport Theorem, Conservation of Mass, Momentum equations, and the Navier-Stokes equations.
Numerical Techniques for Solving PDEs
We explored finite difference methods (FDM) and finite volume methods (FVM) as techniques for solving partial differential equations.
My notes on FDM include the Taylor series approximation for first and second derivatives, as well as discussions on forward difference, backward difference, and central difference methods. We also covered orders of accuracy, techniques for improving accuracy, nonuniform grids, expansion factors, truncation errors, polynomial fitting for finite differences, and the types of boundary conditions along with strategies for handling them. Additionally, we examined key properties of numerical methods.
For FVM, my notes encompass the cell vertex method and the cell-centered method, emphasizing the mass conservation property of FDM. We covered the integral form of generic conservation equations, volume and surface integrals, and various schemes including central difference interpolation, upwind differencing, the QUICK scheme, the SOU scheme, TVD/blended schemes, as well as briefly covering the MUSCL scheme, Superbee, and minmod techniques. Lastly, we addressed numerical diffusion and the computation of gradients on structured and unstructured grids, utilizing the Green-Gauss method and least squares minimization.
Systems of Linear Equations
I have comprehensive notes on solving systems of linear equations, where we explored two primary classes of methods: direct and iterative. In the realm of direct methods, we examined Gaussian elimination, LU decomposition, and algorithms for tridiagonal matrices. For iterative methods, our discussions included the Jacobi method and Gauss-Seidel method, along with general characteristics of iterative approaches and the use of preconditioners. Additionally, we delved into gradient-based methods, covering steepest descent, conjugate gradients, bi-conjugate gradient, BiCGSTAB, and GMRES, providing a thorough understanding of these essential techniques in numerical analysis.
Unsteady Flows
Regarding unsteady flows, I have taken detailed notes on the differences between transient and steady-state solutions, when each type is appropriate, and two-level methods (including Forward Euler, Midpoint Rule, and Backward Euler). I have also studied conditional stability, Midpoint Adams methods (such as Adams-Bashforth and Adams-Moulton), and Runge-Kutta methods, focusing on how they address the disadvantages of Adams methods. Additionally, I explored the application of unsteady flows to the generic transport equation, stability analysis for second-order upwind schemes, Courant numbers and the Courant-Friedrichs-Lewy (CFL) condition, the Crank-Nicholson method, and two approaches for solving steady-state problems.
Navier Stokes Equations
We delved deeply into the Navier-Stokes equations, covering a range of topics, including discretizing the momentum and continuity equations, understanding grid arrangements (collocated and staggered), and applying Rhie and Chow interpolation to address the characteristic checkerboard patterns in collocated grids. We also explored solving the momentum and continuity equations for compressible flows, utilizing divergence-free velocity fields and the Poisson equation for incompressible flows. Additionally, I studied explicit and implicit time-marching schemes, the coupled (simultaneous) approach, segregated solver methods such as SIMPLE, SIMPLEC, and PISO, and techniques for handling boundary conditions.
Turbulence
We learned about turbulence, covering a range of topics, including Einstein Notation to simplify complex equations, methods for solving turbulent flows such as Direct Numerical Simulation (DNS) and turbulence models like RANS and LES. We explored types of averaging, including time-averaging and ensemble averages, and examined the use of averaging identities. Additionally, we studied the instantaneous Navier-Stokes equations, the Boussinesq hypothesis, and how these concepts tie into the design process, helping to predict and model turbulent fluid behavior in engineering applications.