Computational Fluid Dynamics
I'm an Aerodynamicist. That's been my main focus since I began college. I like to work on projects that directly involve aerodynamics or rely on my knowledge of the subject. Computational Fluid Dynamics (CFD) is one of the tools in my quiver. I've been doing CFD for about 13 years, deriving and writing my own models from scratch. Most of the systems I've created have been targeted to model specific flows. Each was developed from first principles, building from either the Navier-Stokes or Euler equations. I've made systems modeling internal and external flows operating in the subsonic, transonic and supersonic regimes. I've employed finite-difference and finite-volume approaches to descretize the physical domains. Most of my work has modeled unsteady flows, using time-accurate, time-marching schemes, but I have also written a few systems that advance the solution in time using implicit schemes. I've also thrown in one or two space-marching solutions for good measure. I've modeled frozen, equilibrium and nonequilibrium flows. For some of my work, I've developed systems with non-reflective boundaries. And for some problems, I've written systems using "upwind" schemes to calculate the gradients or fluxes.
One of the systems I've written computes the 2-dimensional, viscous flow of air over a flat plate. The figure to the right shows a contour plot of Mach number from a run using the simulation to model the flow over a 5-degree wedge. The flow enters from the left at Mach 4. The strong shock wave that forms at the leading edge of the wedge is clearly visible. It turns the flow 5 degrees so that it is parallel with the upper surface of the wedge. There is an analytical solution to this problem--oblique shock wave theory--which assumes that the flow is inviscid. It predicts that the flow downstream of the shock should be at Mach 3.64. The results here are very close to that. Note how the viscous simulation captures the buildup of the boundary layer and also the shock structures that form around the leading edge of the wedge. (Click on any image on this page to see a larger version.) The center figure in the masthead of this page is the contour plot of pressure from the same simulation run. The pressure rises sharply as the air flows through the shock wave. The colors map just as they do in this figure, with yellow indicating high pressure and blue low. Note the shock structures around the leading edge of the wedge and the high pressures that form.
A very interesting application of the same simulation computes the supersonic, viscous flow of air over a flat plate. This sounds like a very simple flow scenario, but isn't. In fact, there is no "closed-form" or analytical solution to the problem. The only way to see what happens is to solve the problem numerically or experimentally. The figure to the left is a contour plot of Mach number. Air enters from the left at Mach 4, and the flat plate forms the bottom edge of the figure. The buildup of the boundary layer is clearly visible above the flat plate. It causes a slight displacement of the main flow. A weak shock wave forms to turn the flow slightly away from the plate. What makes this problem interesting is that the boundary layer is the reason the shock wave forms. If the flow were inviscid, there would be no boundary layer and hence no shock wave at all. The whole flowfield would be at Mach 4, a pretty uninteresting solution. The CFD simulation is accurate enough to resolve a collection of very weak shock waves, commonly called "Mach waves", downstream of the first shock wave. Each of these forms to turn the flow slightly more, accounting for the ever-increasing growth of the boundary layer.
One of the greatest challenges that I've found in CFD is high temperature gas flows. These are found in hypersonic flows, reentry flows, combusting flows or other types of flows where the gas is raised to high temperatures. The theory behind these flows combines fluid mechanics with quantum mechanics. Now, that's a challenge! These flows almost always involve multiple species of gas in vibrational, chemical and electronic nonequilibrium. I needed to incorporate high-temperature flow models into my engine simulation. Temperatures within the cylinder of a pistion engine reach 4,000° F (2,200 C). And exhaust flow temperatures can exceed 1,400° (760 C). Before incorporating these calculations into the engine simulation, I needed to see if I understood all of the high-temperature concepts and if I could apply them to a CFD solution. While at the Naval Ordinance Laboratory, John Anderson wrote a paper titled, "A Time-Dependent Analysis for Vibrational and Chemical Nonequilibrium Nozzle Flows". In it, he generates and presents data for a flow in vibrational nonequilibrium. I constructed my own CFD simulation incorporating vibrational nonequilibrium so that I could compare results. They are presented at the right. The figure represents the "vibrational temperature", a measure of the vibrational energy stored in diatomic nitrogen gas as it flows through a supersonic nozzle. The gas is stored at high temperature and pressure in a reservoir at the left side of the figure and then expands isentropically through the nozzle, to the exit at the right. As you can see from the plots, my system's predictions match the data from Anderson's paper very well.
No CFD simulation can work without a grid or mesh generator. I've written a number of them. The figure to the left shows a rectangular mesh wrapped around an NACA 65-212 airfoil. The spatial location of the cell vertices at the airfoil surface and at the outer boundary is specified. The interior vertices are then distributed in space elliptically using the Laplace equation as a numerical artifice. The Laplace equation is solved across the physical domain using a finite difference approach. The system is mathematically elliptic in space and so I use a relaxation technique to drive the system to the steady state, as you see it here.
My engine simulation required a very special mesh generator. The engine simulation allows the user to connect intake and exhaust pipes together using a volume called a "collector". One requirement for the development of the simulation was that it not require the use of a CAD system when describing the layout of an intake or exhaust system. When a user wants to connect pipes together, he only needs to state which pipes, and which ends of those pipes, to connect together, and at what angles those pipes must meet. The simulation automatically generates a collector volume that will validly connect the pipes together. Then it automatically lays out a rectangular computational mesh inside of the volume. At the right, you see a collector that connects three pipes together. One pipe connects horizontally, from the right and two others connect at 45° and -45° angles from the left. The numbers indicate the pipe that each collector boundary cell connects to. The cells at the upper-left connect to pipe number 3. The primes on the numbers indicate that the cells connect to the "nth" end of the pipe; un-primed numbers indicate that the cells connect to the "0th" end. The shape of the collector wall between pipes is generated using a cubic spline. The location of cell vertices at the wall is laid-out uniformly. The spatial location of the interior vertices is then generated elliptically, using the Laplace equation as a numerical artifice. The "x" in each cell indicates the area centroid of the cell.
The figure at the left shows a collector in action, connecting three pipes together. An exhaust header pipe, connected to a cylinder at its far end, joins vertically. Another header pipe connects horizontally from the left. A third exhaust pipe joins at the right, its far end open to the atmosphere. The exhaust valve at the far end of the left pipe is closed. The exhaust valve connecting the top pipe to its cylinder is open, and the piston is forcing the combustion charge out. The charge is flowing down that pipe and through the collector. The flow enters the collector and exits through the third pipe, toward the atmosphere. The collector's computational mesh and the velocity vectors at each cell are displayed. Because of the extreme computational constraints facing an engine simulation, the flow through the collector is modeled inviscidly. But note how the simulation is still able to resolve an area of recirculating flow near the connection to the left pipe. Also, note the stagnation point on the bottom wall. The flows within an engine are entirely unsteady. What you see here is just a snapshot in time.