Computational Fluid Dynamics (CFD) - A Gentle Introduction
No really, I promise it's gentle.. no shocks, no turbulence, except in the fluid
I’ll be honest—during most of my undergrad, whenever I heard the term CFD, I just thought of it as "Colorful Fluid Drawings." That’s about all it meant to me. Of course, the proper term is Computational Fluid Dynamics, but even among aerospace engineers, CFD often just seems like a fancy way of generating cool-looking visuals of fluid flow. While the aesthetic appeal is undeniable, CFD is far more than just pretty pictures—it’s a powerful tool that predicts how fluids behave around objects, playing a crucial role in nearly every aspect of aerospace engineering. Despite its importance, many people find CFD intimidating due to the mathematics under the hood and the confusing derivation of the Navier-Stokes equations they saw once upon a time.
However, CFD is actually not as difficult of a concept to grasp as some make it out to be. Sure, it can be intimidating when you get into the details and the work going on behind the scenes. Sure, it can take years or even decades to really master the art of CFD. Sure, your fluid mechanics class may have left you scarred and determined to stay as far away from fluids as you can for the rest of your career. But, the basics of CFD needed to understand the subject at a general level are not that bad.
In this article, I aim to share the basics of CFD that I wish I had known when I started my graduate career in a CFD-heavy area. I did not do any CFD in my undergraduate degree, so starting some graduate-level courses in CFD was a bit of a rude awakening. If I had known some of these low-level basics, I would have been much better prepared to tackle CFD at a high level.
I aim to quickly and simply teach just three things here:
Why we need CFD
The basics of how CFD works under the hood
When CFD is not so great and what we’re doing about it
There are many great CFD engineers out there and a plethora of good resources, so I make sure to point to resources and borrow ideas from those who know much more than I currently do. Additionally, I focus on aerospace applications, but most of the concepts are applicable in any industry that uses CFD.
Why we need CFD
Computational Fluid Dynamics (CFD) is a simulation tool that engineers use to predict the fluid flow and its effects on objects. You take your object, say an aircraft wing, put a model of it into your CFD software, prescribe fluid flow properties such as Mach number and angle of attack, and then your CFD tool simulates the resulting fluid flow around your wing and the resulting lift and drag. But when exactly would you use CFD instead of just testing the wing or using other easier methods to estimate these quantities?

Here are three scenarios that demonstrate the need for CFD in aerospace:
Scenario 1 (a cheaper way to test): you’re an engineer tasked with improving the efficiency of an aircraft your company is designing. You come up with a great idea on how you’re going to change the wing design to increase the lift-to-drag ratio, now all you need to do is test it out and your boss will see that your brilliant design will save the company millions. (For a great article on aircraft design, see Aurelien’s post on Commercial Aircraft Design)
The problem is, how are you going to test it? Are you going to build an entire aircraft just to check if your hypothesis is right? Or are you going to do some hand calculations and trust that your theory is 100% accurate?
Enter CFD: a chance to run a realistic simulation on a computer that will give insight into your design changes and save you the millions of dollars and months/years needed to construct a new aircraft anytime you tweak your design.
Scenario 2 (supplementing test data): you’re now a test engineer and you’ve gathered some wind tunnel testing data for your new aircraft. However, you noticed some unexpected behavior at a couple of test points. The wind tunnel was also not able to produce every single condition that you want to investigate before flying your aircraft for the first time. How do you know if your observed behavior in the wind tunnel is accurate or just a mistake in the wind tunnel experiment? How can you get data on the flight conditions the wind tunnel was not able to produce?
Enter CFD: a great tool for supplementing test data. You can use your wind tunnel data to benchmark your CFD simulation results, ensuring that they are accurate, and you can double-check your unexpected results to gain insight into the behavior. Additionally, CFD tools can cover any flight condition and vehicle shape, although some conditions and vehicles are much easier to simulate accurately than others.
Scenario 3 (testing the impossible): you’ve switched jobs and you are now working on a vehicle that is impossible and/or extremely expensive to test in the real world. For this example, we’ll use my PhD research topic: Mars parachute deployments. To test your parachute’s performance during deployment at supersonic speeds in the Martian atmosphere, your options are slim.

Each rover we send to Mars costs multiple billions of dollars and takes years of planning and preparation, so testing your parachute by sending it to Mars is not possible. The next best option is testing your parachute in Earth’s upper atmosphere where the state of the air is closer to that in the Martian atmosphere. However, even this testing is extremely expensive and can take months or years to plan and execute. So how do you test and improve your parachute design?
Enter CFD: a research tool that can be used to investigate problems that are impossible or too expensive to test repeatedly in the real world. This example I’ve used here on Mars parachutes is still an active research topic in CFD, but the point is CFD can be used to investigate phenomena that we may have a hard time reproducing in the real world.
The basics of CFD under the hood
Ok great! So we’re sold on the when and why of CFD, but now how do we go about it?
Here are the three main parts of a CFD simulation.
Part 1: The mesh.
The mesh in CFD is essentially a grid where every point represents the fluid state (pressure, temperature, velocity, etc.) at that location. There are many different types of meshes (see the figure below), but generally, a mesh will be fitted around a surface such as an aircraft. No fluid goes inside the aircraft, but it does exert forces and moments on the surface. When you run your CFD solver, the incoming fluid from the fluid mesh will be diverted around the mesh of your solid surface, and the resulting quantities of interest (lift, drag, skin friction, heat transfer, etc.) will be tracked.

Part 2: Solving the Navier Stokes equations on the mesh
Now the scary part: math! A CFD solver needs to solve the Navier-Stokes equations on the fluid mesh. But don’t be scared! We’re just going over the basics here, and I promise I keep it simple. In fact, I will write the compressible Navier-Stokes equations in a terrifyingly simple form:
Here, W is a vector of the “conserved” variables (the fluid’s mass, momentum, and energy). Next, the blue term with R is just a fancy way of writing the divergence of viscous flux in each direction (x,y, and z), and the green term with F is the same but for the inviscid flux. Here are some definitions to help:
Viscous: how much a fluid resists motion due to internal friction, or “how easy it flows.” Honey is much more viscous than water. So, viscous flux is the flux due to viscous forces (internal forces that resist flow), and inviscid flux is the flux due to things like the bulk motion of the air flowing left to right. Many times we ignore viscous effects as we start learning CFD, which makes things easier to keep track of.
Flux: the rate at which a quantity passes through a surface. If I give you ten dollars per minute, there is a flux of money from me to you.
Divergence: Divergence measures the net rate at which a quantity flows out of a control volume. In the context of the Navier-Stokes equations, it quantifies the spatial variation of fluxes, representing how momentum and energy are transported within the fluid. Its mathematical definition is:
So it is the change in x-direction flux with respect to x, plus the change in y-direction flux with respect to y, plus the change in z-direction flux with respect to z.
👉 Thus, you can think of the Navier-Stokes equations in English as:
How your fluid’s mass, momentum, and energy change with time is equal to the outward flow of viscous flux minus the outward flow of inviscid flux.
Now we just have to solve these equations on the mesh. What does that mean? It’s simple (if you ignore the details)!
You start at time t=0. For every fluid cell, you calculate the flux of mass, momentum, and energy given the state of the cell and all the cells around it. The new state of the fluid in this cell at the next time step, say t=0.1, is calculated from the original state of the fluid and the fluxes into and out of the cell.
For example, if one cell has a super high pressure, and all the cells around it have a super low pressure, then after a step in time the pressure in the high-pressure cell will likely go down while the pressures in the surrounding cells will go up. The change in the state of this cell is influenced by the flux with all the surrounding cells!
Of course, there are a lot of mathematical details that go into solving these partial differential equations in time and space that I’ve skipped over, but that’s what a CFD class is for. This article is just to give you a general idea of what’s happening so that you’re ready to crush that CFD class when the time comes. For a nice article on CFD basics diving more into the math, check out this. For some fun YouTube videos covering the incompressible Navier-Stokes equations, check out this and this.
Part 3: Converging to an answer
Now that the solver is set, all the CFD solver has to do is keep stepping forward in time and solving the Navier Stokes equations to determine the fluid state at each cell at each time step. Usually, you’ll just start by initializing every fluid cell to have the same state, often called “uniform flow.” You’ll then set some boundary conditions (e.g., tell it that the incoming flow is at Mach 0.6 and your plane is a hard wall that the fluid has to flow around), start your solver, and have it take small steps forward in time, solving for the new fluid state at each time step.

In many cases, such as when you’re calculating the lift on a wing, you wait for the solver to converge to a steady state. This means that at each new time step, the fluid state is not changing. Your solver started with an unrealistic, uniform flow, and it updated it step by step until it reached a realistic flow over your wing (for example). Once you reach the steady state and your answer is no longer changing at each time step, you stop the solver and analyze your results.
In other cases, however, you’re not looking for a steady state. You’re looking for how the fluid behaves as a function of time, sometimes called an “unsteady” simulation. For example, with my Mars parachute, the flow will continually change as the parachute opens up, inflates, moves around, etc. as it descends through the atmosphere. I’m not looking for just one steady-state answer, I’m looking to investigate the behavior of the fluid during this dynamic process.
When CFD is not so great and what we’re doing about it
So yes, CFD is awesome and the general process under the hood of the solvers can be understood with some effort. Great! Let’s just use it to solve all of our aerospace problems!
Well, not so fast. There are some limitations to CFD. As my advisor is fond of saying, “There’s no free lunch.”
The main two limitations of CFD are accuracy and time, as I describe below. Most research topics today can be categorized as fixing one of these two general issues (as is the case for pretty much any computational tool, because of course we want them to be perfectly accurate and super fast).
Accuracy
It’s hard to get a correct CFD answer and hard to know if it’s correct. However, we have made amazing strides in CFD in the past few decades and we are able to simulate some pretty complex problems with good accuracy if we have enough compute power and time (and a smart engineer running the simulations). A few areas of CFD where we are still working on learning how to model them accurately include:
Hypersonics, or very high-speed flows where the fluid gets so hot that some crazy things start to happen
Turbulence modeling helps make CFD practical by taming the chaos of high-speed, “swirly” flows since actually simulating every tiny whirl and eddy would take forever (and way too much computing power)
Multiphase flows, like when we start to have bubbles appearing in boiling water or cavitation from something like an explosion
Fluid-structure interaction problems, where we not only have the fluid moving over an object, but the object is also moving due to forces from the fluid
Aeroacoustics, where we are trying to understand and predict the sound created by things like jets, rotor blades, or shock waves
These are just a few of some very complicated (and very interesting) applications of CFD where accuracy is extra difficult to come by.

Time
A large chunk of current research is also dedicated to speeding up CFD because many CFD problems of interest (like my Mars parachute) take hours or days to simulate. Even when we use a supercomputing cluster with parallel simulation (splitting the problem into pieces and solving it with a bunch of computers at once), some problems remain so expensive to simulate they are not worth the time.
Here are a couple of research topics and new ideas that are helping CFD run faster:
GPUs. Originally developed for gaming systems, GPUs are great for problems that can be run in parallel (like training Artificial Intelligence and running CFD). This new technology can greatly speed up CFD simulations once the CFD code is properly adapted to work with GPUs.
Reduced-order models (ROMs). ROMs can speed up CFD problems 100x while maintaining 99.99% accuracy. What’s the catch? ROMs require training data, so you have to run a bunch of full-dimensional CFD problems first. Additionally, some problems have too many parameters (variables) and this makes training ROMs extremely expensive.
Machine Learning (ML) an AI. Everything these days is starting to use/benefit from ML and AI, but it’s not as easy to predict fluid flow as it is to generate a paragraph about the Renaissance. AI requires huge amounts of training data, which is hard with CFD. Eventually, we may be able to train an AI to predict the CFD solution to any given problem, but that day is not today.
Conclusion
You made it! Hopefully that didn’t scare you away from CFD but rather got you PSYCHED to become an aerospace engineer with the knowledge and tools needed to become a fluids master.
This was a brief overview of the general field of CFD, but there is so much out there to help you on your way. Check out the links in this article, take a class on fluids and CFD, and most importantly, go find a way to get some experience using these tools on real problems. Learning by doing always beats learning by reading an article by some guy named “Tagg” online. So, go find a lab/club/internship/class to practice CFD and receive mentorship!
Other resources to go learn and practice:
✈ Anderson has a great set of textbooks (commonly used in undergraduate and graduate classes) on aerodynamics, compressible flow, and CFD.
💻 For a free, open-source CFD code, check out OpenFOAM.
🧑🎓 Follow some CFD gurus/influencers on LinkedIn: Rajat Walia, Justin Hodges, or connect with me (less of a guru but willing to connect and chat).
May your convergence be fast and your residuals be low.
– Tagg