Stable Circulation Preserving Simplicial Fluids Sharif Elcott Yiying
Stable, Circulation. Preserving, Simplicial Fluids Sharif Elcott, Yiying Tong, Eva Kanso, Peter Schröder, and Mathieu Desbrun
“Simplicial” § A k-simplex is a convex combination of k+1 points § 0 -simplex -> vertex § 1 -simplex -> edge § 2 -simplex -> triangle § A simplicial complex is just a space constructed from a combination of k-simplices § A k-form is an object that is integrated over a k-simplex § 0 -forms live on vertices § 1 -forms lives on edges § etc…
“Circulation-Preserving” § Circulation is just the flow around the boundary of some loop § The line integral around a closed curve of a velocity field § Kelvin’s Theorem § The circulation around a loop is conserved as the loop gets advected through the fluid.
“Stable” § Want numerical stability even for large timesteps § “Stable Fluids” algorithm by Stam 1999 § Set up a grid and velocity field § Update velocity field by backtracking – “where did this particle come from? ” § Unconditionally stable, since the maximum velocity value never larger than the maximum of the previous field. § Problem: Using a velocity field disregards divergence free constraint § Incompressible Fluids: “What goes in must come out” § Result: significant energy loss and excessive diffusion of vorticity
Stable, Circulation-Preserving, Simplicial Fluids § This method will conserve defining physical properties § No previous efforts to conserve fundamental invariants of fluid motion § Exactly preserves circulation along discrete loops § Avoid visually disturbing diffusion of vorticity § Intrinsic representation yields easier implementation for arbitrary topologies and boundary conditions § Similar computational cost to Stable Fluids
Euler Fluids § Vorticity § Physical intuition: Local spinning motion of a parcel of fluid § Euler’s Equation for fluid motion: § u = velocity § p = pressure § (Assuming unit density)
Euler Fluids § Vorticity is the curl of velocity § Taking the curl, we obtain: § Where Lu is the Lie derivative § Implies that vorticity is simply advected along the flow § ie, local spin moves with the fluid flow
Euler Fluids § Stokes’ Theorem: § Integrated vorticity on a bounded surface = circulation along the boundary of that surface § If vorticity remains constant as it moves with the flow, then the circulation of the loop remains constant § Agrees with Kelvin’s Theorem!
Discrete Setup § Let M be a 2 D triangle mesh of the space of the flow § We will also need a dual mesh § For 2 D case: § Primal vertex (0 -form) -> dual face (2 -form) § Primal edge (1 -form) -> dual edge (1 -form) § Primal face (2 -form) -> dual vertex (0 -form) § We will store physical quantities (velocity, vorticity) intrinsically on the mesh at any simplex
Φ What goes where? § Velocity as discrete flux (on edges) § Let fij be the flux across the edge from vertex i to vertex j § Divergence as net flux (on triangles) § What goes in, must come out -> divergence-free § Due to incompressibility of the fluid § Sum of fluxes of a triangle must be 0 § Vorticity as flux spin (on primal vertices/dual faces) § If we know the circulation around the loop, we know how much it will spin
Operators § d – discrete exterior derivative § Implemented via incidence matrices § Key: Stokes’ Theorem § For any k-form a, and k+1 dimensional domain § Note: then the boundary of the domain is of dimension k § We can define d if we know how to evaluate the integral along the boundary! § Ex. Let f be a function with values at vertices (a 0 -form) § Then, df is a 1 -form that can be integrated along the edge
Operators § d goes from a k-form to a k+1 form § d 0: maps 0 -forms to 1 -forms, corresponding to Gradient § d 1: maps 1 -forms to 2 -forms, corresponding to Curl § We will also need to consider the codifferential operator: § Adjoint of the exterior derivative § Define the Laplacian:
Operators § * – Hodge Star § Takes us from the primal -> dual mesh (and vice versa) § Primal vertex (0 -form) <--> dual face (2 -form) § Primal edge (1 -form) <--> dual edge (1 -form) § Primal face (2 -form) <--> dual vertex (0 -form) § diagonal Hodge Star § Matrix with only entries along the diagonal § is the volume of a dual cell (1 for vertices, length for edges, area for faces) § is the volume of a primal cell (1 for vertices, length for edges, area for faces)
Geometric Integration of Fluid Motion § Goal: ensure discrete version of Kelvin’s Circulation Theorem § Circulation (and therefore vorticity by Stokes’ Theorem!) is preserved along every loop § Backtrack loop of dual vertices in the current interpolated velocity field § We know where each dual face came from, so we can calculate the circulation. § Assign this value as circulation around original loop at current time. Preserve circulation by construction!
The Algorithm
The Algorithm § But now what? § The goal is to update the velocity field. We’ve calculated circulation/vorticity for the backtracked loop, and assigned it to the current loop. § We know how to convert from velocity to vorticity: § But how do we convert back our updated vorticites to a new velocity field (ie new fluxes across edges)?
Helmholtz-Hodge Decomposition § Any vector field can be decomposed into 3 components: a scalar potential, a vector potential, and a harmonic part. § In terms of the exterior derivative and codifferential: § Drop h, since the harmonic part only matters when boundary is nontrivial § Taking derivative: § Laplacian:
Helmholtz. Hodge Decomposition § If the Laplacian is 0: § Now, the decomposition is just: § Recall that vorticity is: § Given vorticity, we have a classic Poisson problem: § Result? We can recover flux from vorticity and thus update the velocity field after each timestep!
Results § New method that exactly preserves discrete vorticity § High degree of visual realism § Works on arbitrary simplicial meshes § Everything is stored intrinsically!
- Slides: 19