190 likes | 336 Views
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
E N D
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 gridand 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 2D triangle mesh of the space of the flow • We will also need a dual mesh • For 2D 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 fijbe 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 dimensionaldomain • 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 • d0: maps 0-forms to 1-forms, corresponding to Gradient • d1: 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 • 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 toconvert from velocity to vorticity: • But how do we convert back our updated vorticites to a new velocity field (ienew 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 vorticityand 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!