Custom CFD Solver
Summer 2020
Summer 2020
During Spring 2020 I took MAE 6230, an introductory CFD class that allowed me to write my first CFD solver in MATLAB. For my final class project, I implemented a solver to solve the Navier-Stokes equations around a blunt body suspended in a flow. The initial solver could only solve low Reynolds number flows, but I found the project quite interesting as a baseline for more complicated flow phenomena, which I took on as a personal project over Summer 2020.
For spatial discretization, I used a second order finite volume method on a staggered variable mesh to eliminate the checkerboarding effect. For temporal discretization I used the fractional step method (Kim & Moin 1985). This is an explicit second order Adams-Bashform discretization of convection combined with a second order Crank-Nicolson discretization of viscosity. I also implemented a third order QUICK scheme to solve the scalar transport equations necessary for the various flows (whether dyes or flames). To solve the linear pressure system, I implemented a Krylov-based solver, using the conjugate gradient method.
The first flow shows Kármán vortex streets being shed in a square cylinder’s wake at Re = 400.
Following on from the initial solver, I implemented some other types of flows. One is a Large Eddy Simulation (LES) solver. The LES models turbulence so the simulation can be run above Re = 10000. Vortex shedding is rougher and more shaky as Reynolds number is increased. The Smagorinsky constant coefficient model is used, and variables are implicitly filtered by the mesh.
The next solver uses the same model, but implements a particle in a jet. These particles are inserted randomly at the inlet and follow the fluid. I integrated their trajectories using a 4th order Runge-Kutta method.
Finally, there I modeled premixed combustion over the same blunt body, igniting the region behind the body to analyze the development of the flame with a chosen holder. This design could be changed to evaluate the effectiveness at various Reynolds numbers. Similar discretization methods are involved for solving flame scalar equations, such as combustion and temperature. Below is the result for Re = 1000.
For spatial discretization, I used a second order finite volume method on a staggered variable mesh to eliminate the checkerboarding effect. For temporal discretization I used the fractional step method (Kim & Moin 1985). This is an explicit second order Adams-Bashform discretization of convection combined with a second order Crank-Nicolson discretization of viscosity. I also implemented a third order QUICK scheme to solve the scalar transport equations necessary for the various flows (whether dyes or flames). To solve the linear pressure system, I implemented a Krylov-based solver, using the conjugate gradient method.
The first flow shows Kármán vortex streets being shed in a square cylinder’s wake at Re = 400.
Following on from the initial solver, I implemented some other types of flows. One is a Large Eddy Simulation (LES) solver. The LES models turbulence so the simulation can be run above Re = 10000. Vortex shedding is rougher and more shaky as Reynolds number is increased. The Smagorinsky constant coefficient model is used, and variables are implicitly filtered by the mesh.
The next solver uses the same model, but implements a particle in a jet. These particles are inserted randomly at the inlet and follow the fluid. I integrated their trajectories using a 4th order Runge-Kutta method.
To comply with ITAR regulations and NDAs, all Astranis, Blue Origin, Northrop Grumman and SpaceX pictures shown are available publicly online