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 fluidsrelated 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? [Goktekin, Bargteil, [Fedkiw, [Wang, Mucha, Stam, Turk] [Tessendorf] [Zhu, Bridson] O'Brien] A Method for Jensen] Water Drops Visual on Simulating Ocean Sand as a Animating Simulation Surfaces, of Smoke, Water, SIGGRAPH Fluid, SIGGRAPH 05 Viscoelastic Fluids, SIGGRAPH 01 05 01 SIGGRAPH 04 Smoke Granular flow (Sand) Newtonian fluid (Water, ocean) Non-Newtonian fluid (Blood, honey, goop (viscoelaticity flow)) Microscopic phenomena 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 u u u u can be a scalar or a u , , x y z vector u u u u , , x y z Divergence ( ): Measure how the vectors are converging or diverging at a given location (volume density of the outward flux) u u u u u can only be a vector x y z Source, Div(u) > 0 Sink, Div(u) < 0 Calculus Review (2) Laplacian (∆ or 2 ): Divergence of the gradient 2 2 2 u u u 2u 2 2 2 x y z u can be a scalar or a vector Finite Difference: Derivative approximation u ui 1 ui x xi 1 xi Momentum equation ut = k2u –(u)u – p + f Change in Diffusion/Vi Advection Pressure Body velocity scosity Forces Incompressibility Claude-Louis Navier George Gabriel Stokes (1785~1836) (1819~1903) u=0 u: the velocity field k: kinematic viscosity 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, [Mueller, Charypar, SIGGRAPH 99 Gross] Particle-Based Fluid Simulation for Interactive Applications, SCA03 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 Advection Body Force Scalar/Vector fields defined on the grid Diffusion Pressure Solve ut = k2u –(u)u – p + f u=0 The Power of Operator Splitting One complicated Multidimensional 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 n U +A+B+D+P * U ** U *** U n+1 U 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: ut (u u) Forward Euler (unstable) Semi-Lagragian advection (stable for large time steps, but suffers from the dissipation issue) Forward Euler Advection Semi-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 Viscosity High Viscosity Figures from [Carlson, Mucha, Turk] Melting and Flowing, SCA 02 Diffusion equation: Approaches: ut k u 2 1 Explicit formulation ut k t (ui 1, j ui 1, j ui , j 1 ui , j 1 4 ui , j ) Implicit formulation 1 -4 1 1 (for high viscosity) u n i , j u n1i , j k t (u n1i 1, j u n1i 1, j u n1i , j 1 u n1i , j 1 4 u n1i , j ) Unknowns 0 0 0 0 0 5 0 0 0 0 0 0 0 2.5 0 2.5 -10 2.5 0 0 2.5 0 Before the diffusion After 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 flux 0 all _ faces Incompressible Compressible Equation to solve: u n 1 u n 1 p s.t. u n 1 0 • • • (1) Unknowns How to solve for pressure: Taking divergence of both sides of (1), we will have 1 p u (Poisson Equation) 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 2 n What about the pressure on boundary nodes? Free surface: The fluid can Free surface evolve freely (p = 0) Solid wall: The fluid can’t penetrate the wall but can flow freely in tangential directions (Neumann BC) uboundary n usolid n Solid wall Possible reasons why your simulation doesn’t look right: CFL condition violation t u C x => 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. k k 1 2 x i x j f (x i , x j ) x x m x x n x i x j j i j i 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