By Michael Su 04/16/2009
Introduction Fluid characteristics Navier-Stokes equation Eulerian vs. Lagrangian approach Dive into the glory detail (A case study of the 2d fluid simulation) Advection Diffusion Pressure solve Fluid object couple One-way and two-way coupling Real-time fluids
Broad view of the fluid simulation in graphics community and its potential applications Basic knowledge about the grid-based fluid simulation Understanding the challenges of the existing methods Foundation for the following two fluids- related lectures (smoke & granular material).
Applications Games (Half Life, Crysis) Scientific visualization (Water sewage system, dam construction) Movie special effects (Finding Nemo, Pirates of Caribbean) Medical simulation (Blood flow) What can we achieve so far? Smoke Granular flow (Sand) Newtonian fluid (Water, ocean) Non-Newtonian fluid (Blood, honey, goop (viscoelaticity flow)) Microscopic phenomena [Zhu, Bridson] Animating Sand as a Fluid, SIGGRAPH 05 [Fedkiw, Stam, Jensen] Visual Simulation of Smoke, SIGGRAPH 01 [Tessendorf] Simulating Ocean Water, SIGGRAPH 01 [Goktekin, Bargteil, O'Brien] A Method for Animating Viscoelastic Fluids, SIGGRAPH 04 [Wang, Mucha, Turk] Water Drops on Surfaces, SIGGRAPH 05
Basic properties Pressure Density Viscosity (subject to shear stress) Surface tension Different types of fluids: Incompressible (divergence-free) fluids: Fluids doesn’t change volume (very much). Compressible fluids: Fluids change their volume significantly. Viscous fluids: Fluids tend to resist a certain degrees of deformation
Inviscid (Ideal) fluids: Fluids don’t have resistance to the shear stress Turbulent flow: Flow that appears to have chaotic and random changes Laminar (streamline) flow: Flow that has smooth behavior Newtonian fluids: Fluids continue to flow, regardless of the force acting on it
Non-Newtonian fluids: Fluids that have non- constant viscosity Phase Transition: Fluids may change physical behavior under different environmental conditions.
Modeling continuum fluids on discrete systems – It’s all about approximations Topological variations and different kinds of behaviors with interacting subjects Numerical stabilities, accuracy and convergence issues Performance User control
By Michael Su 04/20/2009
Calculus Review (1) Gradient ( ): A vector pointing in the direction of the greatest rate of increment Divergence ( ): Measure how the vectors are converging or diverging at a given location (volume density of the outward flux) u can be a scalar or a vector u can only be a vector Source, Div(u) > 0 Sink, Div(u) < 0
Calculus Review (2) Laplacian (∆ or ): Divergence of the gradient Finite Difference: Derivative approximation u can be a scalar or a vector
Momentum equation Incompressibility Claude-Louis Navier (1785~1836) George Gabriel Stokes (1819~1903) u t = k 2 u –(u )u – p + f u=0 Change in velocity Diffusion/Vi scosity AdvectionPressureBody Forces u: the velocity field k: kinematic viscosity
[Mueller, Charypar, Gross] Particle-Based Fluid Simulation for Interactive Applications, SCA03 Borrowed from CFD (Computational Fluid Dynamics) Common techniques for solving Navier Stoke’s equation: Eulerian approach (grid-based) Lagrangian approach (particle-based) Spectral method Lattice Boltzmann method [Stam] Stable Fluids, SIGGRAPH 99
Discretize the domain using finite differences Define scalar & vector fields on the grid Use the operator splitting technique to solve each term separately Evaluation: Derivative approximation Adaptive time step/solver Memory usage & speed Grid artifact/resolution limitation
Treat the fluid as discrete particles Apply interaction forces (i.e. pressure/viscosity) according to certain pre-defined smoothing kernels Evaluations: Mass / Momentum conservation More intuitive Fast, no linear system solving Connectivity information/Surface reconstruction
Case Study: A 2D Fluid Simulator We focus exclusively on incompressible, viscous fluid Assuming the gravity is the only external force No inflow or outflow Constant viscosity, constant density everywhere in the fluid
Scalar/Vector fields defined on the grid AdvectionBody Force Diffusion Pressure Solve u t = k 2 u –(u )u – p + f u=0
The Power of Operator Splitting U n + A + B + D + P U*U* U ** U *** U n+1 One complicated Multi- dimensional operator => A series of simple, lower dimensional operators Each operator can have its own integration scheme and different time step sizes High modularity and easy to debug
Sometimes called “Convection” or “Transport” Define how a quantity moves with the underlying velocity field This term ensures the conservation of momentum Advection equation: Approaches: Forward Euler (unstable) Semi-Lagragian advection (stable for large time steps, but suffers from the dissipation issue)
Forward Euler AdvectionSemi-Lagragian Advection
Define how a quantity in a cell inter-changes with its neighbors Diffusion = Blurring The viscous fluid can be achieved by applying diffusion to the velocity field Low ViscosityHigh Viscosity Figures from [Carlson, Mucha, Turk] Melting and Flowing, SCA 02
Diffusion equation: Approaches: Explicit formulation Implicit formulation (for high viscosity) Unknowns
Before the diffusionAfter the diffusion (k = 0.5, time step size =1)
It’s sometimes called “Pressure Projection” What does the pressure do? Keep the fluid at constant volume (incompressible, conservation of mass). Make sure the velocity field stays divergence-free CompressibleIncompressible
Equation to solve: How to solve for pressure: Taking divergence of both sides of (1), we will have Build a system of equations and solve Ap = d using an iterative method such as Conjugate Gradient Update the velocity field from the pressure gradient s.t. (1) Unknowns (Poisson Equation)
What about the pressure on boundary nodes? Free surface: The fluid can evolve freely (p = 0) Solid wall: The fluid can’t penetrate the wall but can flow freely in tangential directions (Neumann BC) Free surface Solid wall
Possible reasons why your simulation doesn’t look right: CFL condition violation => Smaller time steps / Implicit solver Flux conservation => BCs may not be set correctly Grid resolution/ Memory => Adaptive grids Numerical dissipation => Back and Forth Error Compensation and Correction [4] / Vorticity confinement [5] Handle the interface and complex topological changes => Level set method [6] Volume loss => Particle level set [7]
One-way coupling: Solid-Fluid interaction: The fluid has no influence on the solid Fluid-Solid interaction: The solid has no influence on the fluid Two-way coupling: Manipulate the boundary conditions Finite Element techniques: ALE & DLM Rigid Fluid: Treat the solid as fluids and enforce the rigidity constraint [8]
Principles: Cheap to compute Low memory consumption Stability Plausibility Interactivity Common techniques: Procedural water: Superimpose sine waves of a variety of amplitudes and directions. [9]
Real-time Fluids (2) Heightfield approximations: If the surface is the only interest, it can be represented using a 2d heightfield and animated by 2d wave equations with interaction forces. Particle systems: This approach is good at simulating a small amount of water such as a puddle, a bubble, or splashing fluids H(x, y)
[1] R. Bridson and M. Müller-Fischer. Fluid Simulation. SIGGRAPH 07 Course Notes [2] R. Bridson. Fluid Simulation for Computer Graphics. A K Peters, 2008 [3] J. Stam. Real-Time Fluid Dynamics for Games. GDC 2003 [4] B. Kim, Y. Liu, I. Llamas, and J. Rossignac. FlowFixer: Using BFECC for Fluid Simulation. EGWNP 05 [5] R. Fedkiw, J. Stam, and H.W. Jenson. Visual Simulation of Smoke. SIGGRAPH 01 [6] N. Foster, R. Fedkiw, Practical Animation of Liquids. SIGGRAPH 01 [7] D. Enright, S. Marschner, R. Fedkiw. Animation and Rendering of Complex Water Surfaces. SIGGRAPH 02 [8] M. Carlson, P. J. Mucha, G. Turk. Rigid Fluid: Animating the Interplay Between Rigid Bodies and Fluid. SIGGRAPH 04
References (2) [9] D. Hinsinger, F. Neyret, M. Cani. Interactive Animation of Ocean Waves. SCA 02