Commit f24f6b8e authored by Amanda Ghassaei's avatar Amanda Ghassaei Committed by GitHub


parent c9a34ff7
# VortexShedding
A realtime fluid flow simulation on the GPU
Live demo at <a href="" target="_blank"></a>
<img style="width:100%" src="img1.png"/>
This simulation solves the <a href="" target="_blank">Navier-Stokes equations</a> for incompressible fluid flow past an obstacle in a GPU fragment shader.
It exhibits a phenomenon called <a href="" target="_blank">vortex shedding</a>,
where vortices of alternating spin spontaneously emerge behind the obstacle.
To increase performance, I solved for the velocity vector field of the fluid at a lower resolution than I used to compute the distribution of material moving through the fluid (shown in black and white).
I used bilinear interpolation to smooth out most artifacts caused by this speedup - though you can still see some artifacts around the boundary of the obstacle.
I ignored the viscous diffusion term from the Navier-Stokes formula to encourage better vortex formation (the implicit advection solving I'm using creates enough diffusion on its own for this system).
Click and drag to apply a force to the fluid:
<img style="width:100%" src="img2.png"/>
To learn more about the math involved, check out the following sources:<br/>
<a href="" target="_blank">Fast Fluid Dynamics Simulation on the GPU</a> - a very well written tutorial about programming the Navier-Stokes equations on a GPU.
Though not WebGL specific, it was still very useful.<br/>
<a href="" target="_blank">Fluid Simulation (with WebGL demo)</a> - this article has some nice, interactive graphics that helped me debug my code.<br/>
<a href="" target="_blank">Stable Fluids</a> - a paper about stable numerical methods for evaluating Navier-Stokes on a discrete grid.<br/>
Written by <a href="" target="_blank">Amanda Ghassaei</a> as a homework assingment for <a href="" target="_blank">The Nature of Mathematical Modeling</a>, code on <a href="" target="_blank">Github</a>.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment