Overview
We will implement a two-dimensional interactive simulator with a top down view of fluid colliding with obstacles,
similar to running water in a stream. We plan to achieve this using 2D grid of attributes (velocity, density/pressure, vorticity)
that we can change in order to view different properties of the fluid. This grid of fluid attributes will also inform our visualization of
the fluid and its simulated behavior.
Problem Description
We want to utilize the Navier Stokes equations to visualize the flow of a consistent velocity fluid and
how that flow is disrupted by collision with obstacles. We will solve this by representing fluid as a 2D grid of
attributes.
Goals and Deliverables
Baseline Plan
Our primary deliverable is an interactive demo/simulation allowing a user to drag and create obstacles while observing how those obstacles affect the
flow of fluid. Our main implementation goals are listed below:
- A 2D grid of fluid with the ability to switch between visualizations of fluid attributes, which shows how fluid moves around/is affected by obstacles.
- The ability for the user to interactively create/move/delete obstacles.
We want our final product to be able to accurately model fluid behaviors and their interactions with objects in a realistic manner. We aim to be able to
replicate existing real life phenomena that affect fluid behaviors using our simulation.
Aspirational Plan
In addition to our baseline plan we would like to focus on these elements of the interactive demo if time allows:
- A clean and elegant UI.
- The ability to change the direction of the stream or add multiple streams.
Performance/Quality Measurments
As of now, we do not have any precise target metrics and will judge our program according to these general criteria:
- Performance - ability to visualize flow in large/high res windows, with low latency. Interactive mode should be fast enough that a user doesn't
feel a lag when moving obstacles around.
- Quality - how good does it look visually, are particles moving as expected?
Schedule
Week 1:
- Set up frameworks.
- Do research, lots of reading, begin doing detailed design of data structures and algorithms needed.
Week 2:
- Implementing fluid behavior with the Navier Stokes equations, including support for obstacles.
Week 3:
- Work on the visualization of the simulation.
- Debug fluid behavior with the help of this visualization.
Week 4:
- Implement interactivity (adding/modifying obstacles, adjusting simulation area) and debug this implementation.
- Finish up the final presentation and record and edit necessary video and audio.
Resources
Jos Stam: Stable Fluids
Weber State University Fluid Dynamics Simulation
Boundary Data Immersion Method for Cartesian-Grid
Simulations of Fluid-Body Interaction Problems
LilyPad
Currently we are planning on using a combination of JavaScript and WebGL to implement our interactive simulator.