Fluid Animation from Simulation on Tetrahedral...

118
Fluid Animation from Simulation on Tetrahedral Meshes Bryan Eric Feldman Electrical Engineering and Computer Sciences University of California at Berkeley Technical Report No. UCB/EECS-2007-153 http://www.eecs.berkeley.edu/Pubs/TechRpts/2007/EECS-2007-153.html December 17, 2007

Transcript of Fluid Animation from Simulation on Tetrahedral...

Page 1: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

Fluid Animation from Simulation on TetrahedralMeshes

Bryan Eric Feldman

Electrical Engineering and Computer SciencesUniversity of California at Berkeley

Technical Report No. UCB/EECS-2007-153

http://www.eecs.berkeley.edu/Pubs/TechRpts/2007/EECS-2007-153.html

December 17, 2007

Page 2: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

Copyright © 2007, by the author(s).All rights reserved.

Permission to make digital or hard copies of all or part of this work forpersonal or classroom use is granted without fee provided that copies arenot made or distributed for profit or commercial advantage and that copiesbear this notice and the full citation on the first page. To copy otherwise, torepublish, to post on servers or to redistribute to lists, requires prior specificpermission.

Page 3: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

Fluid Animation from Simulation on Tetrahedral Meshes

by

Bryan Eric Feldman

B.S. (University of California, Davis) 2000M.S. (University of California, Berkeley) 2002

A dissertation submitted in partial satisfaction of the

requirements for the degree of

Doctor of Philosophy

in

Computer Science

in the

GRADUATE DIVISION

of the

UNIVERSITY OF CALIFORNIA, BERKELEY

Committee in charge:Professor James F. O’Brien, Chair

Professor Jonathan ShewchukProfessor Panayiotis Papadopoulos

Fall 2007

Page 4: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

Fluid Animation from Simulation on Tetrahedral Meshes

Copyright 2007

by

Bryan Eric Feldman

Page 5: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

1

Abstract

Fluid Animation from Simulation on Tetrahedral Meshes

by

Bryan Eric Feldman

Doctor of Philosophy in Computer Science

University of California, Berkeley

Professor James F. O’Brien, Chair

This thesis presents a simulation method for creating animations of gases and liq-

uids that enhances the adaptability over current simulators within the computer graphics

community. The method achieves adaptability in element size and shape by discretizing

the domain with tetrahedra rather than regular hexahedra, the standard element shape in

computer graphics. I also describe a method which allows the discretization to adapt arbi-

trarily from time step to time step without computational or numerical smoothing penalty.

Additionally, I demonstrate a method to augment the fluid simulator with a rigid body

simulator such that the fluid and rigid body simultaneously effect one another. Together

these capabilities allow for complex scenarios to be simulated with a high level of detail

while maintaining practical computation time, memory use, and ease of implementation.

Page 6: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

2

Professor James F. O’BrienDissertation Committee Chair

Page 7: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

i

Contents

List of Figures iii

1 Introduction 11.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.1 Accuracy and Adaptivity . . . . . . . . . . . . . . . . . . . . . . . . 41.1.2 Reference Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.1.3 Prior Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.2 Contributions of This Dissertation . . . . . . . . . . . . . . . . . . . . . . . 8

2 Previous Work 142.1 Two-Dimensional Approximations . . . . . . . . . . . . . . . . . . . . . . . 142.2 Basic Three-Dimensional Simulator . . . . . . . . . . . . . . . . . . . . . . . 152.3 Alternative Discretizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.4 Maintaining and Enhancing Detail . . . . . . . . . . . . . . . . . . . . . . . 182.5 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.6 Fluid Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.7 Fluid-Solid Coupling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.8 Moving Meshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.9 Particle Based Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.10 Surface Tracking and Rendering . . . . . . . . . . . . . . . . . . . . . . . . . 25

3 Meshing 273.1 Gas Meshing —Variational Tetrahedral Meshing . . . . . . . . . . . . . . . 28

3.1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.1.2 Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.1.3 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2 Liquid Meshing —Isosurface Stuffing . . . . . . . . . . . . . . . . . . . . . . 333.2.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.2 Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2.3 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Page 8: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

ii

4 Simulation 384.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384.2 Equations of Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.3 Where to Store Things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.4 Capabilities Required for Simulation . . . . . . . . . . . . . . . . . . . . . . 43

4.4.1 Velocity Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . 444.4.2 Derivative Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.5 Semi-Lagrangian Velocity Advection . . . . . . . . . . . . . . . . . . . . . . 544.5.1 Generalized Semi-Lagrangian Advection . . . . . . . . . . . . . . . . 56

4.6 External Forces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.7 Mass Conservation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.7.1 An Alternative Perspective . . . . . . . . . . . . . . . . . . . . . . . 634.7.2 Boundary Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . 654.7.3 Coupling Between Fluids and Rigid Bodies . . . . . . . . . . . . . . 68

5 Multigrid 745.1 Multigrid Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.2 Algebraic Multigrid Background . . . . . . . . . . . . . . . . . . . . . . . . 775.3 Details of our Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . 785.4 Multigrid Discussion and Results . . . . . . . . . . . . . . . . . . . . . . . . 81

6 Results and Discussion 836.1 Gas and Non Free Surface Liquid Animations . . . . . . . . . . . . . . . . . 83

6.1.1 Two-Way Coupling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.2 Free Surface Liquid Animations . . . . . . . . . . . . . . . . . . . . . . . . . 886.3 Overall Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Bibliography 97

Page 9: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

iii

List of Figures

1.1 A one dimensional representation of discretization and simulation. On the lefta continuous function (dashed line) is represented by discrete values (dots)and an interpolation function (solid line). The spatial derivative, ∂s

∂x is es-timated. On the right are the discrete values at a later time. The valuesare changed by the partial differential equations of motion and the estimatedspatial derivative. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 Figure showing the advantage of spatial adaptivity. The representation onthe right uses just as many data point but better approximates the continuousfunction.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3 A comparison of a regular grid (left) and tetrahedral (right) discretizationof the same shape. Despite the fact that the tetrahedral mesh uses fewerelements, it better represents the input boundary. . . . . . . . . . . . . . . 10

1.4 Two frames from different animations that took equivalent times to simu-late. On the left, a single fixed grid was used throughout the simulation.On the right, the mesh is dynamically updated to place small elements nearthe smoke and regions of high vorticity. The right animation features sub-stantially less numerical smoothing despite taking the same time to simulate(including mesh generation) as the left animation. . . . . . . . . . . . . . . 13

3.1 Left: a visualization of the sizing field for a rectangular domain with anirregular obstacle at the top and a plume of smoke at the bottom. Right:the resulting simulation mesh. Obstacle faces are colored green. . . . . . . 32

3.2 This figure illustrates the two-dimensional version of isosurface stuffing. Yel-low points are the vertices of the octree lattice. The green line is the fluid’ssurface. Blue points represent the warped locations of lattice vertices thatwere near the surface. Red points are vertices created where the surface cutsthe lattice with no nearby vertices. . . . . . . . . . . . . . . . . . . . . . . 35

4.1 Two-dimensional representation of velocity interpolation. A velocity vectoris computed for each tetrahedron from the face normal velocities. These ve-locities are at the vertices of the Voronoi cell. The velocity at some arbitrarylocation x can be computed by interpolating the Voronoi cell. . . . . . . . 45

Page 10: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

iv

4.2 Divergence (left) is estimated by summing the outward-facing face normalvelocities. In the figure s2 is negative because n2 points inward; all others’s are positive. The gradient (right) is estimated by taking the differencebetween the pressures in the tetrahedra adjoining the face. . . . . . . . . . 50

4.3 Top left: If pressures are stored at circumcenters, the line connecting twoadjacent pressures passes through the face circumcenter (the edge midpointin 2D) and is parallel to the face’s normal. Top right: Circumcenters may lieoutside of an element such that the line segment between adjacent circum-centers does not intersect the face. Bottom left: In 3D the face circumcenter(dark triangle) is not necessarily in the face, making it a dubious place to lo-cate the face normal velocity for divergence calculation. Bottom right: Stor-ing quantities at barycenters. The line segment connecting adjacent tetrahe-dra barycenters does not necessarily pass through the face barycenter and isnot generally parallel to the face normal. . . . . . . . . . . . . . . . . . . . 53

4.4 A 2D representation of our generalized semi-Lagrangian method. We traceback from the position where a velocity is stored in the new mesh xi = (x, y),interpolate the velocity using the old mesh and update the velocity in thenew mesh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.5 A comparison of simulation with the same initial conditions on a static (top)and deforming (bottom) mesh. The deforming mesh is being stretched andsquashed in the vertical direction. As shown the simulations are qualita-tively very similar, demonstrating that mesh deformation does not effect thesimulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.6 Left) Pressure forces on rigid object create a force/torque couple. Right)The acceleration on the boundary (and hence the fluid simulation mesh facesat this boundary) of the rigid body can be computed from the linear andangular acceleration of the body. . . . . . . . . . . . . . . . . . . . . . . . . 73

5.1 An example of variable classification where c indicates that a triangle islabeled as coarse and f indicates a fine label. We have shown a geometry sothat neighbor information is clear. In practice, the non-zero entries in thesystem matrix are used to determine neighborhood information. Subscriptsindicate the order in which the variables are classified. For example, c0 isadded first (selected at random), then its neighbors are added as f1’s. Next c2is added and its neighbors are labeled as f3. Note that due to the classificationalgorithm each fine variable has at least one coarse neighbor and that thereare relatively few coarse variable (8 of a possible 21). . . . . . . . . . . . . 79

6.1 A paddle translates and rotates with scripted motion, stirring up the smokein a box shape. On the right, the mesh is shown for three frames for thisexample. The domain is remeshed every time step so that it’s boundaryconforms to the paddle. The sizing function changes from time step to timestep so that smaller tetrahedra are created near the paddle, as this is wherethe most interesting motion occurs. . . . . . . . . . . . . . . . . . . . . . . 85

Page 11: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

v

6.2 The leftmost image shows smoke inside the Stanford Buddha. The remainingimages show the progression of green smoke as it is exhaled out. Smokemotion is induced by the motion of Buddha’s belly, which determines theboundary conditions of the simulation domain. . . . . . . . . . . . . . . . . 86

6.3 This image shows smoke in a tube spinning and rising around a rotatingblade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6.4 A series of frames from a high resolution example with a jet shooting smokeup towards several obstacle rods . . . . . . . . . . . . . . . . . . . . . . . . 87

6.5 Two animations where jets of air are shot towards a rigid bunny. The topsequence features a light bunny; the bottom features a heavier bunny. Asexpected, the light bunny is more affected by the cannon than the heavierone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.6 The central bulb expands and contracts with causes the red particles to movefrom the left tank to the right tank. The blue valves are coupled to the fluidsimulation and prevent backflow. . . . . . . . . . . . . . . . . . . . . . . . 90

6.7 Liquid initially in the shape of an angel falls under gravity, creating a splash. 916.8 Two nozzles spray liquid onto a dish with a hump shape in the middle. . . 926.9 Water, initially in the shape of a block, falls under the force of gravity. A

half-hemisphere obstacle on the floor interacts with the moving liquid, as dothe boundaries of the domain. . . . . . . . . . . . . . . . . . . . . . . . . . 93

6.10 The meshes used to generate the animation in Figure 6.9. In the upper cornerof the second, third, and forth panels a zoom in view is shown. Note thatthe elements become larger as the distance to the surface increases and thatthe mesh conforms well to that surface yet is highly structured. . . . . . . 94

6.11 Liquid is sprayed inside a transparent box. A thin sheet folds over after thespray hits the back wall. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

6.12 Red Liquid erupts from a mountain (left). On the right a close up of thepool at the bottom where the liquid accumulates. . . . . . . . . . . . . . . 96

Page 12: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

vi

Acknowledgments

I’d first like to thank my parents for supporting me through the many years of my education.

I know they’ve had to put up with countless questions of “So ...Bryan is STILL in school?”.

Hopefully, the rewards I have gained from this experience have been worth the annoyances

I have created for you.

Of course without my advisor James O’Brien finishing the Ph.D wouldn’t be pos-

sible. I mean that not only because without his signature, the university won’t let me finish

but of course because of the countless hours working with me on the details of projects and

more importantly for the big picture things that I think are the most important part of

what I’ve learned, for guiding me in how to think about solving problems. I also will always

appreciate him taking the risk to work with a Mechanical Engineering student that didn’t

(doesn’t?) know that much about computers. I am indebted for his guidance in my trans-

formation from an ignorant young grad student to a slightly less ignorant and substantially

older graduate.

All of those in Berkeley Computer Graphics and Vision group have been an abso-

lute joy to work with and to know. Without them the grad school experience wouldn’t be

the great one that it has been. I especially want to thank all those who have a co-authored

papers or worked on projects with me, I apologize if working on those deadlines with me

shaved years off your life, hopefully those were the bad years anyways.

Page 13: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

1

Chapter 1

Introduction

Animating fluids is an important capability to those in the computer graphics

industry. Examples of fluid motions that might be animated include common, everyday,

phenomena such as pouring a glass of water or exhaling of cigarette smoke, and (thank-

fully) extraordinary occurrences such as large scale explosions or tidal waves crashing into

metropolises.

Animating the motion of fluids by hand would often require much time and labor by

a skilled artist and ad-hoc procedural methods for generating the motion do not generalize

well. The main reason for these methods inadequacies is that fluid motion is extraordinarily

complex. The complexity of a fluids motion contrasts with the simplicity of the equations

that describe the fluid behavior (see Equations (4.1) and (4.2)). As a result, simulation,

which is driven by these equations, has proven to be an extremely effective method to

generate animations. This being the case, simulation methods have been widely investigated

in academia and are commonly used in production.

Page 14: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

2

Simulations that provide realistic and detailed motion are extremely resource in-

tensive. Even as computers increase in speed and memory, fluid simulations continue to

push the limits of the available computational power. Accordingly, those who use the sim-

ulators are in need of simulation methods that can increase the level of realism and detail

for a given computational budget.

In this work I present techniques that increase the efficiency of simulating fluids

for the application of generating realistic animations. The method achieves this goal while

maintaining the stability and ease of use and ease of implementation that is desired by

practitioners of computer graphics.

To accomplish these goals I investigate the use of tetrahedra as the discretizing

element. Tetrahedral discretizations offer important advantages over regular grids, the

commonly used discretization within computer graphics. First, because the size of the

tetrahedra can vary over the domain, computational resources can be allocated efficiently

by placing many small tetrahedra in regions where they are needed to resolve features of

the flow, and few larger tetrahedra can be placed in the less important regions. Second, the

shape of a tetrahedron is more adaptable than a cube. This shape adaptability means that

for a fixed amount of computation resources, the discretization mesh can more accurately

match a simulation domain. and therefore can create a more realistic animation. For these

advantages to persist as the simulation progresses the discretization needs to adapt to the

changing shape of the domain and adapt the regions where high resolution elements are

located. To accomplish this adaptation, I present a method that allows the discretization

to change over time without performance degradation.

Page 15: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

3

Creating a realistic-appearing animation of gas or water is the primary goal of a

simulator designed for use in computer graphics. This is a different goal than simulation in

an engineering context, where the goal of simulation is predictive accuracy of real world fluid

properties. The goals within computer graphics and those in engineering are not disjoint,

and it is no coincidence that many of the methods used in computer graphics were first

developed for use in the engineering field. That said, ultimately the purpose of a computer

graphics fluid simulator is to generate an animation that is visually plausible, this goal

and others such as speed, stability, and ease of implementation take precedence over strict

guarantees of numerical accuracy.

1.1 Background

To give perspective on the differences between previous methods and the methods

presented in this thesis, I briefly review fluid simulation from a high level. Much of this

review spells out the desirable properties of a simulation method and motivates the novel

methods presented in this thesis.

In a computer simulation the fluid state s (velocity, pressure, temperature, etc.)

is discretized, meaning that the continuous properties of a real fluid are approximated by

a discrete set of state values located at selected points throughout the simulation domain.

The discretized fluid state serves as a description of these relevant fluid properties at a

discrete moment in time t. The state at an arbitrary point in the domain can be computed

by interpolating the discrete values.

The simulator computes the states at the discrete data points for a series of times,

Page 16: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

4

s(t1), s(t2), . . . , s(tN ) such that temporal evolution of the discretized fluid properties follow

the equations of motion for a fluid. The equations of motion relate the temporal derivative

∂s∂t of fluid properties to (among other things) the spatial derivative

∂s∂x of fluid properties.

Mathematically this can be expressed as

∂s∂t

= f

(∂s∂x

). (1.1)

Spatial derivatives can be estimated from the discrete values by, for example,

taking derivatives of the interpolation function or, in our case, by utilizing Stokes Theorem.

In plain English, Equation (1.1) expresses the idea that the way the fluid velocity,

pressure, and temperature change over time depends on how these properties vary in space.

The significance of this is that the fluid properties can be simulated over time given some

initial state by executing the following steps:

1. Calculate spatial derivatives.

2. Use the equations of motion to determine a temporal derivative.

3. Apply this change to the initial properties to yield new fluid properties.

The fluid state over time can be determined by repeating the steps using the updated fluid

properties from one step as the new initial state in the next step.

1.1.1 Accuracy and Adaptivity

There are several factors that affect the accuracy of a fluid simulation. One of the

most important factors is the number of discrete values used to estimate the fluid properties.

If more discrete values are available to estimate the fluid, the continuous properties of a

Page 17: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

5

x

s

x

s∂s∂x

∂s∂t

Figure 1.1: A one dimensional representation of discretization and simulation. On theleft a continuous function (dashed line) is represented by discrete values (dots) and aninterpolation function (solid line). The spatial derivative, ∂s

∂x is estimated. On the rightare the discrete values at a later time. The values are changed by the partial differentialequations of motion and the estimated spatial derivative.

real fluid can be better approximated by the interpolation function. This results in better

spatial derivative estimates, yielding more accurate simulations. Of course the downside of

using more discrete values is that it requires more work to store and compute these values.

One way to improve performance in this inherent trade-off is to put more discrete values

where the fluid properties vary the most, and place fewer discrete values in areas where the

fluid does not require as many discrete values to accurately approximate.

An example of a beneficial use of spatial adaptivity is a discretization of the ocean.

It is sufficient to describe the velocity a body of water with the velocity at a few locations if

that water is moving with near constant velocity, such as would be found in the deep ocean.

On the other hand, the velocity at many locations are needed to accurately describe the

fluid velocity in the turbulent motion of a crashing wave. The motion of an ocean can be

best approximated given a fixed budget of data values by placing a high density of points

near the shore and a low density out in the deep ocean where the motion is less interesting.

The location of desired high/low density points are often not as simple as the ocean

example where dense points are generally always near the shore and sparse points far from

Page 18: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

6

x

s

x

s

Figure 1.2: Figure showing the advantage of spatial adaptivity. The representation on theright uses just as many data point but better approximates the continuous function..

shore. More often the location of regions where computation effort is desired varies over the

course of the simulation. This points to the importance of being able to alter the location

and even number of simulation data points over the simulation in order to maintain the

benefits of spatial adaptivity.

1.1.2 Reference Frames

If the discrete values that are used to estimate the fluid state are placed at locations

in space that don’t change over time the simulation is said to take an Eulerian view. A

second alternative is the Lagrangian view where the discrete values are associated with a

particular lump of fluid mass and therefore move with the fluid. Lastly, the locations of

fluid values can be placed and moved arbitrarily. This reference frame is known as the

Arbitrary Lagrangian-Eulerian (ALE) view.

As an analogy, the flow of a river can be described with a fixed number of data

points in a number of different ways. In the Eulerian way, assistants wade out into the

river, stand fixed on the river bottom and report the fluid velocity that is flowing past

them over time. In the Lagrangian way, they float down the river on innertubes. Each

assistant describes the velocity that they are moving at over time. Lastly, in an ALE view

Page 19: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

7

the assistants could swim around in the river, perhaps moving to points of the flow that

are interesting, and report how quickly the fluid was moving past them, and how fast they

were swimming.

Probably the most widely used perspective for performing fluid simulation is the

Eulerian approach. The primary advantage of the Eulerian approach is that this method is

amenable to use of a simulation mesh. A simulation mesh is a geometric structure which

partitions the simulation domain into simple elements, typically squares or triangles in 2D

and cubes or tetrahedra in 3D. The mesh functions as an organizational structure for the

discrete fluid values. It is used to define convenient interpolation functions of the discrete

values, and provides a clear specification for the region of space that each discrete value is

responsible for. As a result, the mesh simplifies the operations required for performing a

simulation such as interpolating the discrete data points, and estimating derivatives.

It is difficult to use a mesh with a Lagrangian view because, in a Lagrangian

method the data points follow the complex motion of the fluid. As a result, the mesh is

altered into a configuration that would make simulation impossible. Elements are twisted

into shapes that are numerically unsuited to represent a function or to compute a derivative.

Furthermore, mesh elements can become inverted, creating the nonsensical situation that

these inverted elements represent a negative volumes of fluid. To avoid these problems when

simulating a fluid with Lagrangian view, meshless methods can be used. These method build

no explicit partitioning of the space into elements nor do they force elements to maintain

neighborhood relations over the simulation. Rather points are allowed to move freely and

neighborhood relations are determined for each time step. Interpolation is performed by

Page 20: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

8

taking weighted averages of a time steps current local neighboring data.

1.1.3 Prior Methods

The majority of simulation methods developed for computer graphics application

use an Eulerian approach and discretize the domain with cube elements. An all cube element

discretization is also referred to as a regular grid. The advantage of a regular grid is that the

discretization is easy to generate, interpolation is straightforward, and accurate derivatives

can be estimated using a simple finite difference method. The main disadvantage is that

this discretization is very inflexible because all elements are the same size and shape. As

a consequence many cubical elements are required to accurately represent the shape of the

fluid being simulated, in particular at irregular boundaries such as at interface of fluid and

an irregularly shaped obstacle or at the free surface of liquids. Inaccuracies in the shape of

the discretization can result in noticeable artifacts such as stair-stepping. Another result of

a regular grid discretization’s lack of adaptability is that with fixed element size the data

points distribution is uniform and can not take advantage of spatial adaptivity to focus

computation where the fluid motion is most interesting.

1.2 Contributions of This Dissertation

This dissertation presents methods that increase the adaptability of simulation

methods used for computer graphics. Care is taken to maintain, as much as possible, the

desirable properties of many of the prior graphics simulation methods; speed, stability, and

ease of implimentation/use. The methods presented in this thesis increase adaptability over

Page 21: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

9

the prior methods in two ways. First, we demonstrate use of tetrahedra for discretizing the

fluid simulation domain. Secondly, we allow the mesh discretization to change arbitrarily

from time step to time step. The following paragraphs elaborate on these points and their

effects on the animations.

This dissertation describes simulation methods where tetrahedra are used to dis-

cretize the domain as opposed to the standard computer graphic discretization, regular

cubical elements. Tetrahedra are more adaptable in their shape, and unlike a regular grid

of cubical elements, their size can vary over the domain. These factors together allow

a tetrahedral mesh to conform well to the desired discretization boundaries, and to take

advantage of spatial adaptivity.

Conforming well to boundaries is important because if the elements do not match

the intended boundary well, noticeable artifacts can be seen in the motion of the fluid. With

regular grids, accurate matching of the boundary is achieved by using many small elements,

increasing the cost of simulation. With tetrahedra, larger elements can be used to match

the boundary with the same accuracy as a much larger number of regular grid elements. In

Figure 1.3 the same shape has been discretized in one case using cubes and in another using

tetrahedra. As shown, even though more elements are used in the cubical discretization,

the tetrahedral discretization does a much better job of representing the object’s boundary.

Spatial adaptivity allows efficient use of available computations resources. It allows

effort to be focused where it is most needed. Small tetrahedra can be placed near the

boundary, where the fluid exhibits turbulent motion, or generally wherever the fluid exhibits

features that a user thinks necessitate more detail. Following the recommendation of the

Page 22: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

10

Figure 1.3: A comparison of a regular grid (left) and tetrahedral (right) discretization ofthe same shape. Despite the fact that the tetrahedral mesh uses fewer elements, it betterrepresents the input boundary.

work by Losasso et al. [43] I defining regions of interest based on where the visible smoke is,

regions of high vorticity, or near boundaries. Away from these regions the size of tetrahedra

can grade to larger sizes, thus saving computational effort and memory. In Figure 1.4 we

show an example comparing a simulation using a static mesh to one that adapts to use

small elements where smoke and vorticity are. As shown in this example, for the same

computation time, the adaptive discretization creates an animation with substantially more

detail and less numerical smoothing.

The second way that the methods presented in this thesis increase the adaptability

of the simulation is by allowing the mesh to change from time step to time step. Chang-

ing the mesh allows it to adapt to changes in the simulation such as the location of the

boundaries or the regions where simulation effort is desired. This capability is important

to maintain the advantages that tetrahedra offer over the progression of the simulation.

Page 23: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

11

The approach I take does not fall neatly into the above three reference frames,

Eulerian, Lagrangian, or ALE. It perhaps most closely resembles an ALE view as the mesh

is neither fixed in world or material coordinates, but the method we use to accomplish this

differs substantially from previous ALE approaches. Furthermore, since the topology and

the number of discretization points may change arbitrarily between time steps, our method

is more general than typical ALE methods, where some limited mesh movement is used,

and topological changes and changes in the number of discrete points are not handled.

The adaptability of size and shape that comes with of tetrahedra does not, unfor-

tunately, come without cost. Most of the costs can be attributed to the loss of the structure

that is inherent to a regular grid discretization. The structured nature of a regular grid

allows for optimizations of both execution time and memory. Furthermore, generation of a

regular grid is trivial. Generation of unstructured tetrahedral meshes with suitable quality

elements is a difficult problem and so even the initial step of creating the mesh is an obsta-

cle using a tetrahedral based simulator. In this work I show that by choosing appropriate

meshing methods and by taking advantage of properties of the resulting meshes, many of

the problems typically associated with tetrahedral meshes are mitigated and I obtain a

viable simulator.

The method I use to alter the mesh between time steps, on the other hand, incurs

little cost. A standard part of fluid simulation for computer graphics is performing semi-

Lagrangian advection. I show in Section 4.5.1 that by making a simple generalization of the

procedure, a mesh can be changed essentially arbitrarily as part of this step. Furthermore,

the generalization does not degrade the simulation performance. The method is applicable

Page 24: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

12

to both tetrahedral grids or regular grids, although a tetrahedral mesh is needed to fully

exploit the adaptability that the method offers.

Fluid simulation, in particular on tetrahedral meshes, has been widely studied

outside of the computer graphics in the computational fluid dynamics (CFD) community.

However, the goals of practitioners within the CFD community are fundamentally different

from the ultimate goal of this thesis. Generally, researchers outside of computer graphics

are concerned with creating simulations that accurately predict numerical behavior of a

fluid.

In this work I present a simulation method that uses a tetrahedral discretization

to create animations of liquids and gases that is designed to meet the needs and desires

of those in computer graphics. In particular the method is meant to be stable, efficient in

execution and memory usage, and fairly straightforward to implement. It achieves these

goals by applying methods that are well established in computer graphics to tetrahedral

meshes. Furthermore, when applying the simulator to free-surface liquids I chose a meshing

technique, [41], that has properties that can be exploited to maintain some of the compu-

tational and memory efficiency of a regular grid, yet retains much of the adaptability of

general tetrahedra.

Page 25: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

13

Figure 1.4: Two frames from different animations that took equivalent times to simulate.On the left, a single fixed grid was used throughout the simulation. On the right, the meshis dynamically updated to place small elements near the smoke and regions of high vorticity.The right animation features substantially less numerical smoothing despite taking the sametime to simulate (including mesh generation) as the left animation.

Page 26: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

14

Chapter 2

Previous Work

Fluid simulation has been a popular subject in computer graphics for many years.

Outside computer graphics, fluid simulation has a long history within engineering. I only

mention the most relevant papers from these fields here as the literature is so vast. Even

within computer graphics a massive number of papers have been published on the subject.

The following sections discuss a selection of these papers that have been influential in the

development of this thesis.

2.1 Two-Dimensional Approximations

In computer graphics the end goal is to generate an animation, and for liquids the

animation is of the liquid’s surface. If the motion of the surface is simple enough that it

can be represented by a height field than the simulation can be simplified substantially by

representing the liquid as a height field over a 2D domain.

This idea was first used in computer graphics by [52] who used sinusoidal functions

Page 27: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

15

to describe ocean waves and simulated their evolution over time by computing the change

due to gravity.

Other early work by Kass and Miller [38] represent the fluid as a 2D height field

and simulated the height field with a partial differential equation (PDE) developed from

an approximation to the shallow water equations. The shallow water equations are a sim-

plification of the 3D equations for a fluid to a 2D height field representation that a linear

pressure variation in height columns of the fluid. The result was a simple, fast, stable system

for generating wave motion. To allow for more dynamic splashes O’Brien and Hodgins [50]

present a hybrid 2D column of fluid and particle method. The first use of the Navier-Stokes

equations in the graphics community appears in a 2D version of the equations [8] where the

height of the liquid surface is determined from pressures computed in the simulation.

2.2 Basic Three-Dimensional Simulator

The 2D methods discussed above describe a liquid by specifying the height of the

liquid surface over a 2D plane. This description of the liquid is somewhat limited. For

example, it can not model an overturning wave where the liquid surface exists at multiple

heights. Additionally, the 2D simplification is not appropriate for gasses because the motion

of the gas throughout the 3D domain is of visual interest. To handle general liquids, Foster

and Metaxas [24] perform a full 3D Navier-Stokes simulation. This work is based on the

pioneering work of Harlow and Welch [30] who present an effective and often used Eulerian

grid based 3D simulator in the engineering literature. Foster and Metaxas not only prove the

feasibility and usefulness of such an approach to fluid animation but also discuss a number

Page 28: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

16

of useful ideas in their paper including a staggered storage scheme for the fluid velocity and

pressure variables. They also introduce preliminary work on simulating situations where

a fluid interacts with a solid and vice versa. Lastly, the authors present preliminary work

on fluid control. Fluid control is the manipulation of natural fluid motion through control

forces to achieve some desired properties of the motion. The authors followed up the next

year with an application of the method to gases [25].

The paper “Stable Fluids” by Jos Stam [62] presents a number of important im-

provements to fluid simulation for graphics application. First, this paper presents the semi-

Lagrangian advection technique. (The method was known in other fields and rediscovered

by Stam.) Semi-Lagrangian advection is an unconditionally stable method for simulating

the fluids advection. Explicit advection techniques, such as the one used in [24], are subject

to the CFL (Courant, Friedrich, Levy) stability condition. This condition states that the

time step for which an explicit method will remain stable is related to the velocity and

element size. For stability, the time step must be small enough such that the velocity field

could not propagate material more than an element size. The semi-Lagrangian technique is

not subject to any such condition on it’s stability. The simulation time step may be arbi-

trarily large, and while the accuracy of the solution may suffer, the method is guaranteed

not to go unstable. Robustness of the simulator is typically considered more important

than accuracy in computer graphics applications and for this reason the method is popu-

lar within the field. Furthermore, the semi-Lagrangian method is important to this work

because the extension of the semi-Lagrangian method that we describe allows us to change

meshes between time steps efficiently and accurately. Secondly, Stam uses the projection

Page 29: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

17

approach of Chorin [11] to conserve mass instead of the relaxation technique used by Foster

and Metaxas [24]. With this approach mass conservation can be abstracted to the problem

of solving a large sparse linear system. Years of work on developing fast linear system

solvers can be leveraged to obtain an efficient mass conservation procedure.

2.3 Alternative Discretizations

The efficiency of the early 2D methods has been revisited in more recent work.

For explosions that do not interact with obstacles, the motion of the explosion is radially

symmetric. Rasumssen et al. [55] exploit this symmetry and generate high resolution

explosions by simulating with several high resolution, 2D domains that are rotated about

the axis of symmetry. Irving et al. [36] present a hybrid shallow water and 3-D fluid

simulator is used to model deep bodies of water by placing a layer of 3D voxels atop the

column elements of a shallow water method . The method can simulate 3D effects like

splashing and overturning waves at a cost somewhere between a 2D and 3D method. Stam

[63] presents a method for animating flow on 2D manifolds in 3D space by projecting the

simulation onto a subdivision surface .

Most work within computer graphics has used regular hexahedral grids. Regular

grids have the advantages that they are easy to generate and taking derivatives and inter-

polating the grid values is straightforward. The disadvantage of regular grids is that their

elements lack adaptability in shape and size.

Some authors have investigated alternative discretizations of the simulation do-

main. Lossaso and colleagues [43] develop a method that uses octree decomposition of

Page 30: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

18

the domain allowing adaptive resolution. Tetrahedra allow for adaptation of both size and

shape, and a number of works have investigated their use for computer graphics fluid simu-

lation. Feldman et al. [21] simulates gases with a static discretization that uses cubical and

a tetrahedral elements. Cubical elements are used in open regions and tetrahedral elements

are used near the boundaries, so the mesh can conform to complex boundaries. Wendt

et al. [69] use an all-tetrahedral mesh and a finite volume method to simulate both gases

and liquids interacting with complex obstacles. Elcott et al. [16] simulated fluids using

a vortex approach on tetrahedral meshes. Vortex methods simulate using the curl of the

velocity field to describe the liquid’s motion. When the velocity field is needed for smoke

or liquid surface advection it can be solved for from the curl. Shi et al. [60] use a surface

triangulation discretization to simulate fluid motion on the surface of objects. They de-

scribe interpolation and derivative operators using a triangle mesh and perform projections

of velocity onto the surface manifold.

2.4 Maintaining and Enhancing Detail

Generating fluid animations with detailed turbulent motion is very important to

computer graphics practitioners. However, direct simulation of turbulent effects is pro-

hibitively costly. The vorticity confinement method was introduced to the graphics com-

munity [19] to address this issue. The method enhances the vortices already present in the

field which would otherwise be damped out from numerical smoothing. The vortex particle

method, [56], presents a more flexible method which can add vortices to a fluid by associ-

ating vorticity with particles that are advected with the flow. Rasmussen and co-authors

Page 31: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

19

[55] use Kolmogorov noise to enhance motion in explosions at a scale more finely resolved

than the simulation scale. The detail of flames is enhanced in work by Hong et al. [33]. In

this work the characteristic cellular patterns observed in flames are achieved by augmenting

motion of the flame with equations from detonation shock dynamics.

2.5 Extensions

The basic fluid simulator presented by Stam [62] has been extended in a number

of ways to increase the type of fluids that can be modeled and to allow for more general

interaction with other materials. The basic method is extended to apply to high viscosity

fluids in “Melting and Flowing” [7]. By adding this capability, materials such as melting

wax, wet sand, and squirting tubes of toothpaste may be simulated. Elastic materials exhibit

forces that try to restore the material from a deformed configuration back to the original

configuration. The forces can be computed from the deformation which is locally described

by a strain tensor. For solids, the material can be simulated using a Lagranian method and

strain tensors can be calculated directly. Fluid simulators typically use Eulerian methods.

To simulate viscoelastic liquids, liquids that exhibit elastic behavior, Goktekin et al. [28],

advects and integrates the strain rate tensor so that elastic behavior can be incorporated

to fluid simulation on an Eulerian grid. Sand is simulated [71] as a fluid by adding sand

friction forces to a standard fluid simulator.

Nguyen and co-authors [49] simulate flames by using a level set to track the reaction

front, and by modifying the semi-Lagrangian advection to account for the reaction process.

Fire animations are generated by using a mix of procedural and simulation methods [42]

Page 32: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

20

with the goal of creating controllable flames. Explicit complex reaction processes have been

modeled for graphics by Ihm et al. [35]. This allows for generation of the complex behavior

of interacting fluids by adding some simple rules for the different fluids’ interaction. As

an example one fluid making contact with another can generate fire and reactive product

which are all three effected heat and expansion created by reaction.

Explosions have been investigated in a couple of different works. The first such

work by Yngve et al. [70] uses a compressible method instead of using the standard in-

compressible assumption and models the blast wave of the explosion. Since compressible

simulations are very stiff and the blast wave moves very fast, this method requires very

small time steps. Later work, by Feldman et al. [20] ignores the largely invisible blast wave

and instead focuses on the fireball, the most apparent visual phenomena of the explosion.

By ignoring the blast wave and focusing on the fireball an incompressible fluid simulator can

be used by modifying the simulator to account for expansion of the fireball. Additionally,

this work uses a hybrid particle/grid method is used to account for interaction of fuel and

air.

In some situations surface tension effects and the interaction of air with a liquid

has a noticeable effect on the fluid motion. The paper “Discontinuous Fluids” [32] focused

on simulating these cases by describing methods to properly simulate the large discontinutiy

in material properties at the liquid-air interface. More recent work has looked at foam [39]

and frothing liquids [12]

Page 33: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

21

2.6 Fluid Control

In a production environment it is very important to be able to generate an anima-

tion that meets some specified goals or has a particular look and feel. For example a film

director might request that smoke form the shape of a dragon after it is blown. Finding

initial conditions that happen to move smoke into the desired configuration is unlikely or

impossible. So fluid control is used to help “nudge” the fluid with forces to influence its

motion.

One of the first works on fluid control in graphics, “Controlling fluid animations”,

[26] manipulates the flow by altering boundary conditions and the fluid velocities and pres-

sure. A keyframe approach to control was first introduced by Treuille et al. [66]. This paper

uses an optimization procedure to solve for control forces which manipulate smoke into the

keyframes. The optimization is quite expensive so in later work the authors utilize the

adjoint method, a method from the control and optimization engineering literature, to im-

prove efficiency [46]. A non-optimal keyframe method also has been introduced for smoke

[18] and water [61]. A more subtle approach to fluid control, which uses user animated

control particles was introduced by Rasmussen and colleagues [54].

2.7 Fluid-Solid Coupling

Early fluid simulation papers realized the need for interaction between fluids and

moving objects. One-way coupling, from fluid to solid, is achieved [24] by using the fluid

velocity to passively advect soda cans in the water.

Two-way coupling between explosions and fracturing solids was presented by Yn-

Page 34: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

22

gve et al. [70] in the context of compressible fluid simulation. To obtain two way coupling

in an incompressible simulator, “Rigid Fluid” [6] simulates the solid as a fluid and then

projects all velocities within the solid to act rigidly. This method generates convincing

results in most situations and incurs relatively little overhead. One problem is that when

the velocities are altered to act rigidly, the divergence-free condition is broken in the cells

that surround the rigid body. This problem is addressed in this thesis by performing the

coupling simultaneously. A method for simulating the interaction of fluid and deformable

thin sheets is presented by Guendleman et al. by [29]. The interaction is achieved by al-

ternating steps of simulating the fluid with fixed boundary conditions for the deformable

body, then performing the deformable body simulation fixing the pressure from the fluid

simulation. Alternatively, the coupling between fluid and deformable bodies and the fluid

can be performed simultaneously as is done in Chantenez et al. [10].

2.8 Moving Meshes

Prior work on moving meshes has been investigated in graphics albeit in a substan-

tially more limited fashion than what is presented in this thesis. The method by Rasmussen

et al. [54] translates the grid by cell size units so that the locations where velocities are

stored in the previous mesh overlap with the locations in the new mesh. This allows the

mesh to be moved without interpolating velocities on the new mesh and therefore avoids the

problem of numerical diffusion created by interpolation. The principle of Galilean Invariance

is used by Shah et al. [58] to allow meshes to translate with some moving reference frame

such that the grid can follow, for example, a plume of rising smoke. This prevents the need

Page 35: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

23

for large simulation domains where much of the simulation domain contains velocity values

that do not effect the smoke. The method I present in this thesis which first appeared in

the paper “Fluid in Deforming Meshes” [22] allows for substantially more freedom in mesh

changes. This first paper has examples with affine transformations and simple deformation

of meshes while in later work with Klingner et al. [40] we demonstrate that the method

is applicable to meshes that move, deform, and alter topologically. In a related work by

Bargteil et al. [4] the idea of altering a mesh over the course of simulation is applied to

Lagrangian simulation of highly deformable plastic solids.

2.9 Particle Based Methods

The most common way fluids are simulated is by discretizing the domain with a

mesh and representing properties of the fluid using discrete values on that mesh that remain

fixed in world space, an Eulerian view. Alternatively, the fluid can be described by meshless

particles that are advected with the flow where each particle represents some lump of fluid

mass (Lagrangian). Smoothed Particle Hydrodynamics (SPH) defines continuous functions

of fluid values from the discrete particles by taking a weighted average of surrounding

particles. Weights are determined using densities that are attached to the particles and

smoothing kernels which fall off with distance. From these functions derivatives of the state

properties can be formulated. SPH was first introduced independently by Ginggold and

Monaghan [27] and Lucy [44]. The SPH method was introduced for use in graphics by

Desbrun and Cani, [14]. It has been used in a number of situations including lava, [64],

boiling water, [48], and soft bodies [13]. Mueller et al. [47] perform an SPH method with a

Page 36: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

24

small number of particles (5000) achieving real time results. Adams et al. [1] use adaptively

sized particles in order to have a multi-resolution simulation. This allows computational

effort to be focused in areas that most benefit from the increased resolution. The results of

this work are visually compelling and are generated in times very competitive with regular

grid methods.

One draw back of the SPH method is that incompressibility is not enforced. As

a result, visible compression can be noticed unless the fluid is simulated with a very high

resistance to any compression. For the system to remain stable with this large compression

resistance very small time steps are required. An alternative approach introduced by Pre-

moze et al. [53] uses of the Moving Particle Semi-Implicit method which is a particle based

method that explicitly enforces a divergence free velocity field. This work generated im-

pressive results, and unlike previous particle methods, it rendered the surface using a level

set method, instead of defining the surface using an implicit function by the simulation

particles such as in Cani et al. [5].

Within academia at least, particle based implementations have yet to produce the

visual realism of grid based methods. Despite this they promise to be an interesting avenue

of future research. It is noteworthy that one of the most popular commercial software

packages “Real Flow” 1 is SPH based and has been used in production movies a number of

times although specific details of their implementation are unknown.1http://www.nextlimit.com/realflow/

Page 37: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

25

2.10 Surface Tracking and Rendering

In order to simulate a liquid, the location of the liquid must be updated as it

moves over the duration of the simulation. Early methods, for example by Foster et al.

[24] advect particles to determine which computational elements contain liquid and assume

that the remaining elements contain air. The disadvantage is that it requires a storing

and advecting large number of particles because a dense collection of particles are needed

throughout the liquid. Another disadvantage is that the methods used to reconstruct the

liquid surface for rendering from particles tend to generate “blobby” or lumpy surfaces. A

new equation to generate an implicit function from the particles that helps alleviate this

problem is presented in a paper by Zhu and Bridson [71]. They also discuss a method

to filter away some of the remaining blobbyness, although this unfortunately also smooths

away some of the surface detail.

Level-Set methods [57] are a popular way to track the surface. They represent

the fluid surface as the zero set of a three-dimensional distance to the surface function.

The method works well because it naturally handles the complex topological changes in

the liquid surface and also generates high quality surfaces. One problem with a pure level

set method is that they suffer from noticeable mass loss. This problem arises because the

level set function is stored on a grid. When liquid features, such as thin sheets of liquid,

become smaller than the grid resolution, these features can not be represented by the grid

and are therefore lost. To help alleviate this problem Foster et al. [23] advects particles

that are initialized inside the liquid, near the surface. In thin regions, the particles are

used to reconstruct the surface instead of the level set, as it is known that the level set

Page 38: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

26

methods lose mass in these regions. The following year, Enright et al. [17] showed that

by advecting particles initialized on the exterior of the surface in addition to the interior

particles improved results further. An alternative method, the semi-Lagrangian contouring

method [65] [3] corrects the level set function with a triangle mesh. Hierarchical Run

Length Encoded Level Sets [34] is a method to compactly represent the level set function,

conceptually similar to sparse matrix storage schemes for matrices. This enables very high

resolution level set functions to be stored, which means small features can be represented

thereby improving the mass loss problem.

Page 39: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

27

Chapter 3

Meshing

In this chapter we describe the algorithms used to generate meshes for the gas and

liquid simulators. We adapt existing meshing algorithms, “variational tetrahedral meshing”

(VTM) [2] for the gas simulator and “isosurface stuffing” (ISS) [41] for our free surface liquid

simulator. We describe these methods only to a level of detail to provide an understanding

of the resulting meshes. Also we include details of the modifications or extensions we found

necessary for our application. For a thorough description of original implementation details,

analysis, and derivations the reader should refer to the original papers.

There are a number of differences between the two meshing techniques that deter-

mine which is the more appropriate choice for a particular application. The VTM method

creates unstructured Delaunay tetrahedral meshes while ISS creates semi-structured tetra-

hedral meshes. For a given number of tetrahedra, ISS is substantially faster at generating

the tetrahedralization. Furthermore, as discussed in Section 3.2.3, the semi-structured na-

ture of the ISS can be exploited for memory and execution time optimizations. However,

Page 40: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

28

for the same number of tetrahedra, VTM is more flexible in how it can distribute the tetra-

hedra. Of particular consequence is how adaptable it is in refining certain regions and how

well it can create a tetrahedralization that has boundaries of some shape. In our experience,

a gas simulator requires much less resolution than a free surface liquid simulator. Our gas

simulations use a relatively small number of elements (∼ 100, 000), and therefore we find

the VTM’s ability to better distribute the tetrahedra is required to ensure that the desired

refinement and matching of input boundaries is achieved. On the other hand our liquid

simulations use a large number of tetrahedra (∼ 1 − 3 million). In order to generate such

large meshes in an amount of time that does not dominate the overall simulation time we

require the ISS method. Furthermore, the semi-structured nature of the mesh allows for

optimizations in the simulation methods that are significant in speeding up simulation time.

3.1 Gas Meshing —Variational Tetrahedral Meshing

This section describes the high level properties of variational tetrahedral meshing

as well the modifications to make it work in the gas simulator.

3.1.1 Overview

Variational tetrahedral meshing takes as input 1) a surface mesh that specifies the

boundary, and 2) a sizing field that specifies the desired tetrahedral size throughout the

domain. It returns an unstructured Delaunay tetrahedral mesh with a boundary surface

that approximates the input surface mesh. To generate a tetrahedralization that has tetra-

hedra with shapes that are well suited for simulation, the method performs an iterative

Page 41: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

29

procedure that minimizes an energy function by alternately improving the mesh topology

and improving the vertex positions.

The energy function is motivated by properties of the Delaunay triangulation. The

Delaunay triangulation of a set of vertices is the triangulation such no vertex is contained by

the circumsphere of any simplex of the triangulation. A related property is that the topology

the Delaunay triangulation is determined by the convex hull of the parabolic lifting map of

the set of vertices. The parabolic lifting map in 3D is

(x, y, z)→ (x, y, z, x2 + y2 + z2).

Delaunay triangulations have a number of desirable properties. This motivates

defining an energy function which is minimized by a Delaunay triangulation. An energy

which meets this criterion and also is minimized by a uniform distribution of vertices is

the integral of distance between the piecewise linear convex hull of the lifted triangulation

and the continuous lifting parabola (x2 + y2 + z2). Specifically, the energy function can be

expressed as

p =∑

i=1...N

∫Ωi

||x− xi||2dx

where xi is a vertex position, Ωi is the union of tetrahedra adjoining vertex i and N is the

total number of vertices in the mesh.

The tetrahedron shapes are optimized by adjusting the vertices positions to mini-

mize this energy given the current topology. The paper [2] shows that the energy function

is locally minimized by moving a vertex to the weighted average of the circumcenters of the

vertices adjoining tetrahedra. Alternate steps reduce the energy by improving the topology,

via Delaunay Tetrahedralization.

Page 42: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

30

To adjust the tetrahedralization so that its boundary approximates the input sur-

face, an additional step first seeds a large number of quadrature points on the surface. For

every quadrature point, the closest mesh vertex is found. Every mesh vertex that was found

to be closest to a quadrature point is moved to the average of quadrature points that it was

closest to.

3.1.2 Modifications

Our implementation differs from the original algorithm in a couple of details. As

in the original method, refinement of the mesh is controlled by a sizing function μ(x) that,

for any point x in the simulation domain, is the desired local edge length of the tetrahedra.

The original algorithm builds the sizing function based off of the boundary local feature

size and the distance to the mesh boundary. In our implementation we are concerned with

maintaining vorticies in the simulation, approximating obstacles well, and with making

sure that the simulation is has a lot of detail where the smoke is (since this is the visually

observable region). Given these priorities we formulate the sizing function at a point in

space x as:

μ(x) = k0 +min [kdd(x), ks (1− s(x)) , kω (1− ω(x))] . (3.1)

In this equation, k0 is an offset value that controls the minimum value of the sizing field,

and hence the minimum local edge length of tetrahedra. The variable d(x) is the distance

to the closest obstacle or boundary that demands refinement, s(x) is a function of the

density of smoke particles, and ω(x) is the magnitude of the velocity field’s vorticity at

x. The parameters kd, ks, and kω respectively control the influence that each factor has

Page 43: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

31

on the sizing field. These three factors are the same as those used for octree refinement

in [43]. Figure 3.1 shows an example of a sizing field and the resulting mesh. Figure 1.4

demonstrates the benefits of refinement near areas of high vorticity and smoke density.

One other modification we made to the algorithm is that, when optimizing the

vertex positions, we move vertices to the averages of the barycenters, instead of the circum-

centers, of the surrounding tetrahedra. The primary motivation for this decision is that a

circumcenter position can be arbitrarily far from its tetrahedron. For tetrahedra near the

surface, it is not uncommon to have a circumcenter that is very far from the mesh, even

in a Delaunay mesh. In this case the optimization procedure described above will move a

vertex very far from its original position even moving it far outside the surface mesh. When

we use the barycenters, the behavior is much more stable. We have found that while this

slightly decreases the average quality of tetrahedra in the mesh, it often leads to substantial

improvements in the quality of the worst elements of the mesh, which are of more concern

for numerical simulation.

3.1.3 Comments

Overall, VTM works well for our purposes. It reliably generates meshes of suitable

quality for simulation in an acceptable amount of time. To take advantage of the fact that

the input surface and sizing field change very little from one frame to the next, we use

the mesh from the previous frame as an initialization for creating the new mesh. This

produces a good mesh within a few iterations. One area for improvement would be to take

advantage of the fact that in the vertex optimization step most of the vertices are moved

a very small distance. In our implementation, the Delaunay tetrahedralization ignores the

Page 44: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

32

Figure 3.1: Left: a visualization of the sizing field for a rectangular domain with an irregularobstacle at the top and a plume of smoke at the bottom. Right: the resulting simulationmesh. Obstacle faces are colored green.

topology from previous iterations, instead it regenerates the triangulation from scratch each

time. The star splaying algorithm [59] describes a method for quickly repairing a Delaunay

tetrahedralization after vertex positions have moved. Inclusion of this in our implementation

would no doubt improve the meshing time.

It is important to note that the procedure is not guaranteed to generate good

simulation tetrahedra. Delaunay tetrahedralizations are happy to admit sliver tetrahedra,

flat tetrahedra that in a Delaunay mesh have vertices lying on or near the equator of

the tetrahedra’s circumsphere. Sliver tetrahedra have a number of properties that make

them poor elements to perform simulation on (near zero volume, large and small dihedral

angles etc.). To get rid of sliver tetrahedra a post processing step is employed which jitters

boundary vertices of sliver tetrahedra and inserts a new vertex at the sliver tetrahedron’s

center. These steps were helpful, but they did not completely eliminate all the slivers.

Although in our simulations we occasionally ended up with meshes that contained poor

Page 45: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

33

quality elements, we did not observe noticeable artifacts in the animations we generated.

One appealing feature of this algorithm is that it does not attempt to create a

tetrahedralization with vertices that lie exactly on the input surface mesh. Initially this

may sound like a disadvantage, but often the input surface mesh is only an approximation to

the surface that we want the tetrahedralization to conform to. Experience has shown that

often low quality tetrahedra appear on or very near the surface. Placing strict conformity

requirements on the tetrahedra near the surface only makes it more difficult to get rid of

the troublesome tetrahedra. We obtain a mesh whose boundary is an approximation of the

input surface, but has fewer bad tetrahedra near the surface.

3.2 Liquid Meshing —Isosurface Stuffing

This section describes the essential details of the isosurface stuffing meshing algo-

rithm. Furthermore, we discuss the particulars of our implementation and its application

for use in the liquid simulator.

3.2.1 Overview

Isosurface stuffing takes a level set function as an input and returns a body centered

cubical (BCC) lattice tetrahedral mesh that is modified such that its boundary conforms

well to the surface defined by the zero isocontour of the input function. The mesh has

guaranteed quality elements and can be generated “whip fast.”

The first step of the meshing algorithm is to build a balanced octree that covers

the volume to be meshed and that is refined to the levels desired by the user. In our

Page 46: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

34

implementation the octree is refined to the finest level where the liquid surface is and

grades to the coarsest level as quickly as is allowed by a balanced octree requirement.

Alternatively, the user can specify whatever refinement criterion is desired, for example

the criteria described in Section 3.1. One current limitation is that the guarantees on the

mesh quality are severely degraded if the octree level varies over the cells that intersect the

isosurface. Cells of the octree that lie completely within the liquid surface are filled with

tetrahedra that have vertices at the corners and center of the cell. If a cell is adjacent to

another cell that is refined to a finer level than itself, then vertices will also appear at the

face and edge centers of the first cell. The tetrahedra are built from templates for each of

the possible relative refinement levels of a cells neighbors.

Tetrahedra in cells that are sliced by the zero set of the level set function are

modified so that they conform to the surface. We refer to the unmodified tetrahedra of

the BCC lattice as background tetrahedra. First, the locations are found where the surface

intersects the edges of the background tetrahedra. The location of an intersection can be

found by querying the implicit function in a binary search along the edge. If the distance

between a lattice vertex and an edge crossing is smaller than some fraction of the edge’s

length, the vertex is moved to the closest crossing. Otherwise new vertices are added at the

edge crossing locations, and the portion of each sliced background BCC tetrahedra that is

inside the surface is filled with smaller tetrahedra. These tetrahedra can also be built from

templates that depend on the number of vertices of the background tetrahedra that have

been warped to the surface and how many edge crossings there are.

For a description of each of the possible templates we refer the reader to [41].

Page 47: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

35

Figure 3.2: This figure illustrates the two-dimensional version of isosurface stuffing. Yellowpoints are the vertices of the octree lattice. The green line is the fluid’s surface. Blue pointsrepresent the warped locations of lattice vertices that were near the surface. Red points arevertices created where the surface cuts the lattice with no nearby vertices.

Figure 3.2 shows an example of how this approach can be applied to a two-dimensional

triangulation. We also refer the reader to [41] for a detailed discussion of how this meshing

algorithm is guaranteed to produce good-quality tetrahedra. Briefly, the strategy generates

good quality tetrahedra because in the interior it uses high quality tetrahedra generated

by the BCC lattice. Near the boundary it only moves the lattice vertices if the distance is

sufficiently small to prevent creating bad tetrahedra. Otherwise it adds a vertex to an edge

that is far enough away from existing vertices to avoid creating new thin tetrahedra.

3.2.2 Modifications

The algorithm works extremely well but as we use it in particular situation, a few

minor modifications are needed. In a simulation the zero-contour of the implicit function

which defines the liquid surface will typically not conform perfectly to an obstacle that the

fluid is interacting with. This is due to small errors in the surface advection and because

Page 48: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

36

a grid with finite resolution is used to represent the implicit function. To avoid errors

that could lead to meshing inside the obstacle or artificial gaps between the obstacle and

fluid, we build a negative signed distance function for each obstacle, then intersect it with

the signed distance function for the liquid and use the result as the input of the meshing

algorithm. After the mesh is built, vertices that are within some small tolerance (we use

1/8 the edge length of the finest octree level) of an obstacle are moved along their normal

direction to snap to the obstacle. We have found that moving them this small distance does

not introduce bad quality tetrahedra.

A mesh face on the boundary of the mesh is classified as liquid-obstacle interface

if all of its vertices lie on the obstacle. All other boundary faces are classified as liquid-air

interface.

3.2.3 Comments

Isosurface stuffing makes it feasible to simulate liquid with a large number of

tetrahedra (in our examples ∼ 1−3 million). The main advantage of the isosurface stuffing

algorithm is its speed and quality guarantees. Because we use a different mesh every time

step (to have a mesh that always conforms well to the moving liquid surface) it is imperative

to generate meshes quickly. Good quality tetrahedra are needed because poor quality

tetrahedra create simulation errors that can result in noticeable unnatural motion in the

resulting animation.

A more subtle reason that isosurface stuffing makes the simulator feasible is that

the meshes it creates exhibit structure that I aggressively exploit. For one, the meshes

contain many tetrahedra that are identically shaped. Therefore, important geometric prop-

Page 49: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

37

erties that are used in the simulator such as tetrahedra volumes, face areas, and face normals

are the same for a large number of elements, and much memory can be saved by only stor-

ing the geometric properties for the set of template shapes. When the geometric quantities

for a particular tetrahedron are needed they can be obtained by referencing its template

shape. In a typical simulation we find that, on average, approximately 2/3 of the tetrahedra

come from template shapes. Another aspect of the mesh’s structure that we exploit is the

spatial structure of each element’s location. As shown in Figure 6.10 the tetrahedra are

positioned relative to the background octree structure. We take advantage of this structure

when determining which tetrahedron contains some query point. First, we determine which

leaf of the octree the point is in. Then we determine which portion of that cell it is in to

efficiently find the appropriate tetrahedra.

The advantages offered by the structure inherent to isosurface stuffing allow for

similar optimizations used with regular grids to be applied to the more adaptable tetrahedral

mesh. While still not as memory or computationally efficient on a per-element basis as

regular grids, we feel that the features of isosurface stuffing that we exploit allow for a

very favorable compromise between the grading of tetrahedral meshes and the efficiency of

regular grids.

One disadvantage of isosurface stuffing is that there is not complete freedom in the

shape of the tetrahedra. For example, grading of the mesh is limited to octree refinement

which means that tetrahedra can only be a discrete set of sizes. Taken in consideration

with the numerous advantages that isosurface stuffing has to offer, we find this penalty

insignificant and a price we are happy to pay.

Page 50: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

38

Chapter 4

Simulation

4.1 Overview

After a mesh is generated we can associate fluid properties such as velocity and

pressure with each mesh element. With these variables and an interpolation method, we can

describe the fluid properties everywhere within the domain using a finite number of variables.

Simulation is the process of determining these fluid property variables at instances in time

such that the evolution of the discrete fluid approximates the behavior of a real fluid.

Simulation starts with an initial state for the fluid. This includes specifying the

fluid domain (the volume of fluid we wish to simulate) and fluid properties within that

domain. From this initial description of the fluid, we evolve the fluid over time using the

following steps.

1. Mesh the fluid domain (as described in Chapter 3).

2. Alter the fluid properties according to the governing equations of motion of the fluid.

Page 51: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

39

3. Alter the fluid domain by the fluid velocities, or by scripted motion of internal objects

or external boundaries.

The simulation repeats this process using the updated fluid properties (computed

by step 2) as initial fluid properties, and using the updated fluid domain (computed by step

3) as the initial domain in the next iteration through the steps. The simulation domain

of a liquid with a free surface is altered by the motion of the liquid. Accurately tracking

the domain is a difficult problem and the subject of much research. In our implementation

we use the semi-Lagrangian contouring technique of Bargteil et al.[3]. At the boundary

between a fluid and a solid object, the domain can change by either scripted motion of the

object or by the interaction of the fluid with the object. The first case is trivial since it is

a specified motion. We describe a method for simulating the two-way interaction between

a fluid and a rigid body in Section 4.7.3.

This chapter is mainly concerned with step 2 above, altering the fluid properties

such that they change according to the governing equations of motion of the fluid. In

this chapter I first describe the equations used in this work. Next, I discuss how to al-

ter the discrete fluid variables on a tetrahderal mesh discretization such that they evolve

approximately according to the equations of motion.

4.2 Equations of Motion

The differential equations that describe the evolution of the fluid velocity are the

Navier-Stokes equations. They are the conservation of momentum for a fluid,

∂u∂t

= − (u ·∇)u+fρ− ∇p

ρ(4.1)

Page 52: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

40

subject to the conservation of mass for incompressible fluids,

∇ · u = 0. (4.2)

In these equations, u is the fluid velocity vector field, t time, p pressure, ρ density and f

is a volume normalized external forces. The symbol ∇ denotes the vector of differential

operators ∇ = [∂/∂x, ∂/∂y, ∂/∂z]T.

The first term on the right side of Equation (4.1), − (u ·∇)u is the advection term

which accounts for the change in velocity due to transportation of the fluid momentum.

The second term, f/ρ, accounts for acceleration due to external forces applied to the fluid.

External forces include buoyancy, gravity, or other forces specified by the user such as a jet

or control forces. The last term accounts for acceleration due to pressure forces.

These equations incorporate the common simplification of modeling the fluid as

incompressible. In reality, no fluid is truly incompressible, but visually, most fluid motions

we are interesting in animating approximate ideal incompressible fluids. Air and water do

not exhibit visually significant compression except under somewhat extraordinary circum-

stances, for example an explosion. Furthermore, the effects of the compression propagate

very rapidly, meaning that they move across simulation domains at time scales that are

much smaller than typical time scales used in computer graphics animation. Lastly, the

pressure shock waves that occur in explosions also occur on very small spatial scales as well.

The fact that compressible effects are rare, and even when observed occur faster and smaller

than would be observed is fortunate as the equations that include the effects are very stiff,

requiring very small time steps and small meshes to accurately resolve. Modeling fluids as

if they were incompressible allows us to make significant simplifications to the simulation

Page 53: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

41

method and to use much larger time steps.

To update the fluid properties from time step to time step we integrate the mo-

mentum equation, Equation (4.1), forward in time using the operator splitting technique.

Operator splitting integrates the state forward by considering one term of the differential

equation at a time. Specifically, for Equation (4.1) we alter the velocity first by the advec-

tion term, then by the external force term, and lastly by the pressure term. As part of the

pressure step, a pressure is solved for such that when the velocity field is altered by the

pressure term the resultant velocity conserves mass, (it obeys Equation (4.2)).

The advantage of using operator splitting is that one may choose the most ap-

propriate method of integration for each term, instead of trying to devise a method that

works well for all parts of Equation (4.1). For graphics applications, the semi-Lagrangian

technique is an attractive choice for performing advection. In addition to its well-known

stability and simplicity advantages I introduce in Section 4.5.1 a simple generalization of

original semi-Lagrangian method that allows arbitrary changes in the discretization mesh

between time steps. Next, we integrate the external force term using forward Euler inte-

gration (described below). Lastly, we form and solve for pressure such that when we apply

forward Euler integration of the pressure term, mass is conserved.

Forward Euler integration is a commonly used temporal integration technique. Its

advantage is its simplicity. It is the method of choice in most graphics applications. The

method estimates the temporal derivative using the state at the beginning of the time step,

and then assumes that the derivative is constant over the entire step. The state s(t) is

Page 54: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

42

updated by the formula

s(t+Δt) = s(t) + Δt∂s

∂t

∣∣∣∣s(t)

where ∂s∂t

∣∣s(t)

is the derivative evaluated using the state at time t.

The following steps show the momentum integration steps as a whole;

uadv = semiLag(u(t), t) (4.3)

uext = uadv +Δtfρ

(4.4)

u(t+Δt) = uext +Δt−∇pρ

. (4.5)

4.3 Where to Store Things

The choice of mesh location to store the discrete pressure and velocity values is

important. The locations affect the accuracy of the solution, the simulation time, and the

memory use. I store a pressures variable at each tetrahedron, and a velocity component

variable on each face. This arrangement is analogous to the popular staggered grid arrange-

ment on regular grids. As in the regular grid staggered arrangement, I do not store the

full velocity vector u at the faces, only the component of the velocity normal to the face. I

call this scalar quantity the face normal velocity, z. The choice of a tetrahedral staggered

grid allows for natural enforcement of boundary conditions and generates sparse discrete

derivative matrices. This arrangement, as opposed to one where velocity vectors are stored

at the tetrahedra’s vertices, does make it more difficult to interpolate the velocity field.

However, in Section 4.4.1 we demonstrate an interpolation method that is practical despite

being more expensive than standard barycentric interpolation. Furthermore, the arrange-

ment works very well for the mass conservation step, typically the most difficult part of the

Page 55: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

43

simulation.

The motivation for choosing the staggered grid is that it avoids a problem known as

checkerboard instability. This name refers to the oscillatory pattern of pressures that arises

when we solve for the pressures in the mass conservation step. This step involves solving for

pressure in a linear system, Lp = d where L is the discrete Laplacian matrix, p the vector

of unknown pressures and d is a vector of the velocities divergence. When using a collocated

scheme the derivative mask for the Laplacian skips neighboring values and instead uses the

neighbors of neighbors to estimate the derivative. This causes direct neighboring values

to be decoupled from one another resulting in spatially oscillating solutions. An excellent

description of the problem and how a staggered grid addresses it can be found in [51].

The arrangement we use has the beneficial feature that the discrete divergence

and gradient derivative operators have very small support. The divergence features just 4

non-zero entries per row and the gradient has just 2 non-zero entries. This yields a sparse

Laplacian matrix, which means that it is cheap to store, and it improves the speed to solve

the linear system. For more details see Section 4.7.

4.4 Capabilities Required for Simulation

Two important capabilities are needed to follow the basic simulation method pre-

sented in Stam’s Stable Fluid paper [62]. First a method is needed to interpolate a velocity

at any point in the domain from the discrete velocity values. This is used for the semi-

Lagrangian velocity advection step and also to advect smoke particles or the fluid surface.

Secondly, discrete approximations for the gradient of pressure and divergence of the velocity

Page 56: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

44

field are needed. In the following sections I describe the methods used to perform these

operations on a tetrahedral mesh.

4.4.1 Velocity Interpolation

The fluid state location scheme we use describes the fluid velocity field using

only the component of velocity normal to the face. For both the semi-Lagrangian velocity

advection step and to advect smoke particles or the liquid surface, a full velocity vector

must be found at any arbitrary position in the mesh. We interpolate velocity vectors from

face normal velocities using the two-step method developed by Elcott et al. [16]. First, a

velocity vector ut is computed at each tetrahedron circumcenter, then we interpolate within

Voronoi cells using ut values at the Voronoi cell vertices.

Velocity ut for tetrahedron t is found by first considering a face of the tetrahedron,

face i, to have a normal velocity that is the projection of ut onto the face normal,

nTi ut = zi.

Then a small linear system,

Ntut = zt

accounts for all faces of the tetrahedra simultaneously. Here Nt is a 4×3 matrix containing

4 rows of the face normals of t and zt is a vector concatenation of the 4 face normal velocities

associated with tetrahedra t. This system can be solved in a least squares sense to find ut.

In general, this system is overconstrained and the recovered velocity vector will not exactly

satisfy the linear system, but it will minimize the squared error. If u is divergence-free field,

the linear system is obeyed exactly due to the additional mass conservation constraint on

Page 57: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

45

ut

ni,zi

ut

ct

x

Figure 4.1: Two-dimensional representation of velocity interpolation. A velocity vector iscomputed for each tetrahedron from the face normal velocities. These velocities are at thevertices of the Voronoi cell. The velocity at some arbitrary location x can be computed byinterpolating the Voronoi cell.

the face normal velocities.

To find a velocity at an arbitrary point we interpolate within the Voronoi cell using

the tetrahedra velocities ut which are located at the Voronoi cells’ vertices (the tetrahedra

circumcenters). Voronoi cell interpolation uses generalized barycentric coordinates of convex

polytopes from the paper of Warren et al. [68]. This paper presents barycentric interpolation

within general convex polytopes. They interpolate the value at the point x as a weighted

sum of the polytope’s vertices values. Vertex t’s unnormalized weight is computed as

wt(x) =|Nt|∏

f∈σtnf · x+ df

. (4.6)

Here, σt is the set of polytope faces that adjoin vertex t. The denominator is the product of

distances from x to the faces in σt computed using the face normals, nf , and plane offsets,

df . |Nt| is the determinant of a matrix of unit face normals in σt. The denominator is a

product of the distance from the evaluation point to each of the faces in σt. Weights from all

vertices are then normalized to sum to 1 before use in the weighted sum for interpolation.

Page 58: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

46

To simplify this computation we take advantage of the fact that we are interpo-

lating a particular convex polytope, the Voronoi cell of a Delaunay mesh. There are two

important properties of these cells: 1) in a Delaunay mesh, edges are in the direction of the

Voronoi cell’s face normals, and 2) the volume of tetrahedron t is |Et|/6 where Et is a matrix

formed from the three vectors of edges, e1, e2, e3 emanating from a common node of t. By

using these properties, Equation (4.6) can be manipulated into a much more convenient

form:

wt(x) =|Nt|∏

f∈σtnf · x+ df

(4.7)

=|Nt|∏

f∈σtnf · (ct − x)

(4.8)

=616 |e1| |e2| |e3| |Nt|∏f∈σt

|ef |nf · (ct − x)(4.9)

=6Vol(t)∏

f∈σtef · (ct − x)

(4.10)

where wt(x) is the weight associated with the node at tetrahedra t’s circumcenter, Vol(t)

is the volume of tetrahedron t, ef is vector of the edge from the node associated with the

Voronoi cell to the other vertices of t, ct the circumcenter of t, and x the interpolation

position. The advantage here is that all terms appearing in Equation (4.10) are properties

of the mesh, either available, or quickly computable. The terms in Equation (4.6), involve

more complex terms that would require either substantially more storage or computation.

With this simplification velocity interpolation is substantially more practical.

Finally, letting d denote the set of tetrahedra adjoining the vertex belonging to

the Voronoi cell that contains point x, the velocity at x is

u(x) =1n

d∑t=1

wt(x)ut (4.11)

Page 59: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

47

where n =∑d

t=1wt(x).

For the semi-Lagrangian velocity advection step it is important to use as accurate

an interpolation method as is possible. This is because this step uses the interpolation to

update the velocity field itself. Therefore, any error in interpolation is accumulated over

every time step. For situations where error is not cumulative such as when advecting visu-

alization particles we employ a quicker (albeit less accurate) method. First, as a preprocess,

velocities at the vertices of all tetrahedra for the new time step are found by interpolating

using Equation (4.10). Interpolation at a vertex is a special case of Equation (4.10) and

can be simplified to

wt(x) =6Vol(t)∏3i=1 |ei|2

. (4.12)

Then interpolation of the velocity at any point inside the mesh can interpolated from these

vertex velocities using standard barycentric coordinates,

u(x)4∑

i=1

bi(x)ui.

Here bi are the barycentric coordinates of x in the tetrahedra that contains x and ui are the

velocities at that tetrahedron’s vertices found using Equation (4.11) with weights computed

by Equation (4.12).

4.4.2 Derivative Operators

As discussed in the section on mass conservation, Section 4.7, we need discrete ver-

sions of the divergence and gradient operators. To develop these we utilize Stokes Theorem.

For a detailed description of this approach see [31].

Informally, Stokes’ Theorem relates the integral over a volume, Γ, of the derivative

Page 60: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

48

of a quantity ω to the integral over the boundary ∂Γ of that quantity,

∫Γdω =

∮∂Γω (4.13)

Stokes’ Theorem is a general version of many well-known specific instances of the theorem

including the Fundamental Theorem of Calculus, the Divergence (Gauss) Theorem, and

the Curl (Kelvin-Stokes) Theorem. We compute discrete derivatives by finding an average

derivative in some discrete region, referred to as the control volume. Recall that the average

g of some quantity g(x) over a region Γ with volume V can be computed by

g =1V

∫Γg(x) dx. (4.14)

Equation (4.13) and Equation (4.14) can be used together to estimate an average derivative

in some region by first using Equation (4.14) to estimate the average derivative over a control

volume Γ. Then the volume integral of the derivative can be converted to a surface integral

of the quantity using Stokes’ Theorem, Equation (4.13). To estimate this surface integral

we use the discrete values stored on our mesh and perform numerical quadrature. This last

step is the only approximation in the procedure. As is often done, in our implementation

we use only quadrature points located at the discrete variables locations and integrate over

the surface by assuming that this is a good average value of the function over the associated

portion of the boundary. One beneficial feature of this general method for computing

derivatives is that one could easy modify the implementation to improve the accuracy of

the estimation simply by using more quadrature points, interpolating the discrete field as

required.

Page 61: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

49

Discrete Divergence

We now show how the generic procedure for deriving average derivatives is used to

find the divergence. The average divergence within a tetrahedra, ∇ · u is derived starting

from the Divergence (Gauss) theorem,

∫Γ

∇ · u dV =∮

∂Γu · dn

V ∇ · u =∮

∂Γu · dn

∇ · u ≈ 1V

∑i

(ui · sini)Ai

∇ · u ≈ 1V

∑i

siziAi

where Γ is domain of the tetrahedron, ∂Γ is the boundary of the tetrahedron, V is the

tetrahedron volume, Ai is the area of the ith face, ni is the face normal, zi is the face

normal velocity, and si is ±1 to orient the face normal to point out of the tetrahedron.

Here we have approximated the surface integral over the boundary of the tetrahedra using

a single quadrature point on each of the tetrahedron’s four faces. The accuracy of this

estimate relies on the assumption that the face normal velocity associated with a face is a

good representative value for the average normal velocity of the face.

When performing the mass conservation we prefer to compute the volume-weighted

divergence, and enforce that it is 0, V (∇ · u) = 0 instead of Equation (4.2) ((∇ · u) = 0). If

the divergence-free condition is enforced exactly this would have no effect on the solution,

but since we use an iterative solver that is run to some tolerance, weighting by volume

encourages larger elements to better conserve mass. This means that a region that is

responsible for more mass will be encouraged to make sure that mass is conserved. For

Page 62: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

50

v

np2

p1

n1n2

n3

Figure 4.2: Divergence (left) is estimated by summing the outward-facing face normalvelocities. In the figure s2 is negative because n2 points inward; all other s’s are positive.The gradient (right) is estimated by taking the difference between the pressures in thetetrahedra adjoining the face.

cases where elements vary greatly in size over the mesh, this has the potential to create

ill-conditioned matrices, as rows are weighted by vastly different numbers. However, we

have not observed this problem.

Discrete Gradient

Since we only deal with the face normal velocity, the component of velocity in

the direction of the face normal we only need the component of the pressure gradient in

the normal direction. To compute this we use the potential theorem (another instance of

Stokes Theorem). Let L be the line segment which connects the pressure values p2, p1 which

are adjacent to a face f . Let the vector from p1 to p2 be v and the unit length vector in

v’s direction is v. The potential theorum computes the component of the gradient in the

direction v at face f as ∫∇p · v dL = p2 − p1. (4.15)

Page 63: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

51

See Figure 4.2 for these and other terms discussed in this section. The average gradient in

the line direction is

∇p · v =1|v|

∫∇p · vdL

=p2 − p1|v|

where |v| is the length of L. We are assuming that the average gradient over the segment

is a good approximation of the gradient at the face location. In a Delaunay mesh, the line

segment that connects the circumcenters of two adjacent tetrahedra is parallel to the normal

of the face that they share. Furthermore the segment passes through the circumcenter of

the face. See Figure 4.3, top left. This suggests that a good place for storing the pressure

variables is at the circumcenters of tetrahedra; and a good place for storing face normal

velocities is at the face circumcenters. This storage scheme was used by Klinger et al. [40]

and produced satisfactory results. Unfortunately, the circumcenters can be far from their

base object, i.e. a face circumcenter can be far outside the face (although still in the plane

defined by the face) and a tetrahedron circumcenter can be far outside the tetrahedron. This

has two deleterious effects. When the face circumcenter is far from the face, using the face

normal velocity as an average for the outward velocity over the face can be very inaccurate,

making the divergence estimate poor. Second, because the tetrahedron circumcenter can be

far from the tetrahedra the line segment between two circumcenters might not pass through

the face, even though the line does. As a result, the average gradient along the line will be

a poor estimate for the gradient at the face. Refer to Figure 4.3 for visual examples of these

problems. To alleviate these problems we store the pressures and face normal velocites at

the barycenters of the tetrahedra and faces respectively [9]. Barycenters are much better

Page 64: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

52

behaved than circumcenters. The face barycenter is a good location to sample the average

quantity over the face and therefore is a good location for estimating the divergence with the

face normal velocities. Also, the line segment between two tetrahedra barycenters passes

through the shared face, so the average derivative over the line segment is a reasonable

estimate for the derivative at the face. Unfortunately, the segment connecting tetrahedra

barycenters will not, in general, be parallel to the normal of the shared face nor will it

intersect the face at its face barycenter. To compensate for the difference in direction, we

modify Equation (4.16) to be

∇p · v ≈ p2 − p1v · n (4.16)

This estimate has works in the examples that we generate but it has errors due to the

difference in direction between v and n and the difference between the face barycenter and

the face-line segment intersection. One particularly troublesome effect of the error is that

the derivative estimate is not linearly consistent and therefore the mass conservation step

does not perfectly balance an applied gravity field. As a result a liquid in a container that

should remain static (because the gravity forces are perfectly balanced by pressure forces)

displays some visible artifacts, the liquid has a slight phantom motion due to the errors.

Discrete Gradient Improvement

To improve the accuracy of the derivative estimate researchers have investigated

augmenting the estimate in Equation (4.16) with correction terms [37]. Most methods

compute the gradient in the face direction as above and then additionally compute a gradient

vector for the face. They use the gradient vector to correct the normal direction gradient

based off of how different the line segment direction is from the face’s normal direction. The

Page 65: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

53

Figure 4.3: Top left: If pressures are stored at circumcenters, the line connecting twoadjacent pressures passes through the face circumcenter (the edge midpoint in 2D) and isparallel to the face’s normal. Top right: Circumcenters may lie outside of an element suchthat the line segment between adjacent circumcenters does not intersect the face. Bottomleft: In 3D the face circumcenter (dark triangle) is not necessarily in the face, makingit a dubious place to locate the face normal velocity for divergence calculation. Bottomright: Storing quantities at barycenters. The line segment connecting adjacent tetrahedrabarycenters does not necessarily pass through the face barycenter and is not generallyparallel to the face normal.

corrected equation is (from [15]):

∇p · d =p2 − p1v · n +∇p · v

[1− 1

n · v]

(4.17)

where ∇p is an estimate for the gradient vector at the face. To compute the gradient

vector at the face, the methods compute gradients vectors at the adjacent tetrahedra and

average them. One way that the full gradient for a tetrahedra can be found is by using the

Page 66: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

54

Green-Gauss reconstruction, ∫T

∇pdV =∮

∂TpndS. (4.18)

With this the tetrahedra full gradient can be estimated as:

∇pj =1V

4∑i=1

12(pj + pi)nij (4.19)

where pi is the pressure of j’s neighbor, i and nij is the normal of the face between tetrahe-

dra i and j. We have obtained pressure values on the faces of the tetrahedra by averaging

values from the tetrahedra adjacent to the faces. We have experimented with this aug-

mented gradient estimate but the results do not overcome the aforementioned problem

with phantom motion in a pool of water effected by gravity or appreciably improve the

visual appearance of the simulation. Furthermore, these changes significantly decrease the

sparsity of the gradient matrix, thereby increasing both memory use and simulation time.

As a result, in our default implementation we do not include this correction.

4.5 Semi-Lagrangian Velocity Advection

With these methods for interpolating values and computing discrete derivatives

on a staggered tetrahedral mesh, we are able to perform the steps of simulation, the first

of which is velocity advection. Advection, in general, accounts for the change of a quantity

at some fixed location due to transport of the quantity by the velocity field. For example,

the temperature of the water at a shower head increases because the hot water in the

water heater is transported by the fluid velocity from the water heater to the head 1. In1Note that in this shower example we’re taking an Eulerian perspective, describing the fluid at locations

fixed in space. Were we taking a Lagrangian view there is no advection term because we follow the hotwater from the heater to the shower head.

Page 67: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

55

our simulation we advect not temperatures but the velocities themselves. In general, the

velocity field is more complicated than the uasi-one-dimensional velocity field of the shower

example, but the principle of change at a fixed location due to transport by the velocity

field is the same.

The advection term − (u ·∇)u in the momentum equation (Equation (4.1)) ac-

counts for the change in velocity due to the transport of velocity by the velocity field itself.

In other words there is a change in velocity because we are storing velocity at some location

in space, and because the fluid is moving through that space. While the idea that the veloc-

ity field is transporting itself may be conceptually more convoluted than the temperature

case, the principle is the same. In fact, each component of velocity may be treated just like

the scalar temperature quantity.

The semi-Lagrangian method approximates the velocity advection phenomenon by

directly attempting to find the velocity that would be transported to the velocity storage

location during a time step. Note that the advection term in the momentum equation

actually computes the change in velocity due to advection whereas the semi-Lagrangian

method computes the velocity itself.

To compute the velocity at some location after advection, one traces backwards

from the location through the flow for a time step. At the end of the path the velocity

is interpolated and this velocity is then used as the advected velocity. In our mesh we

store face normal velocities at the face barycenters, so we trace back from the faces, and

then project the interpolated velocity at the end of the path onto the face normal. The

intuition behind can be understood by comparing it to a similar way for accounting for

Page 68: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

56

advection. To compute what fluid properties will advect to a certain location one could

advect forward through the flow starting from several different places until the forward

advected path happened to end up at where we locate the fluid properties. The properties

at the beginning of the path are those that will advect to where we want to know the updated

advected properties. Finding an initial location that happens to end up at a particular place

may require many traces so we instead trace backwards to find the location that would end

up at the proper place.

The semi-Lagrangian method is not new to this thesis, but for comparison with

the novel generalized semi-Lagrangian method, I describe the original algorithm in detail.

Let x be the locations where velocities are stored, z(t) be a concatenation of the discrete

velocity values at time t, and U(x, z(t), x) be a function that returns the velocity at some

general location x. This function naturally depends on the values of the discrete velocities

z(t) and their positions x. For a fixed mesh, the semi-Lagrangian method updates the

velocity value at the ith face center by first tracing backwards from xi to a location x′i. To

trace backwards, we integrate a path by interpolation of U(x, z(t), x). Then the discrete

velocity after advection, z(t+adv.)i , is

z(t+adv.)i = ni · U(x′

i, z(t), x) (4.20)

4.5.1 Generalized Semi-Lagrangian Advection

We generalize the above procedure to account for the change in x as the mesh

changes. Let x(t) be the locations where velocities are stored at time t, and x(t+Δt) be the

new face locations. Since we want to compute the velocity for face i in the new mesh we

Page 69: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

57

x

y

x(t+Δt)

y(t+Δt)

x′

x(t+Δt)

y(t+Δt)

Current MeshPrevious Mesh

Figure 4.4: A 2D representation of our generalized semi-Lagrangian method. We traceback from the position where a velocity is stored in the new mesh xi = (x, y), interpolatethe velocity using the old mesh and update the velocity in the new mesh.

Figure 4.5: A comparison of simulation with the same initial conditions on a static (top)and deforming (bottom) mesh. The deforming mesh is being stretched and squashed in thevertical direction. As shown the simulations are qualitatively very similar, demonstratingthat mesh deformation does not effect the simulation.

trace a path backwards from the new face location, x(t+Δt)i to location x′

i. To integrate the

path backwards from this point we interpolate the velocity field from the previous steps

face normal velocities, which are located at the previous mesh’s locations. In other words,

Page 70: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

58

the interpolated function is expressed as U(x, z(t), x(t)

). We then set the velocity of the

face normals at the new location to be the interpolation of the velocity at the end of the

path. To find this velocity we interpolate old mesh velocities which are located at old mesh

locations,

z(t+adv.)i = ni · U

(x′

i, z(t), x(t)

). (4.21)

Note that the only real difference between this method and the original semi-Lagrangian

method is where we start the paths, namely the face barycenters of the new mesh.

An alternative method for transferring information from different meshes would

be to first interpolate velocities from the old mesh onto the new locations of the new mesh.

Then the standard semi-Lagrangian step could be performed without modification, simply

by ignoring the fact that there ever was an old mesh. Mathematically, this can be expressed,

zi(t+pre.) = ni · U

(x(t+Δt), z(t), x(t)

)(4.22)

and

z(t+adv.)i = ni · U

(x′

i, z(t+pre.), x(t+Δt)

)(4.23)

In addition to being more work, this additional step adds artificial viscosity, an unwanted

blurring of the velocities, due to the extra step of interpolation. Every time velocity variables

are updated by interpolation we are taking averages of existing velocities which is the

equivalent of applying a low pass filter to the velocity field.

In our procedure we combine the two steps into a single procedure. Therefore

in an entire pass through all simulation steps, we only update velocities using a single

interpolation step. As a result, our method incurs only the smoothing of standard semi-

Lagrangian integration.

Page 71: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

59

In Figure 4.5, we show frames from two simulations comparing a static mesh and

a mesh that is being deformed. Throughout the latter simulation the deformed mesh is

being stretched and squashed in the vertical direction. Despite this mesh deformation the

results of the two simulations are qualitatively very similar. We ran an additional simulation

where the mesh was rotated back and forth rapidly. The result is not shown in Figure 4.5

because mesh rotation is not clear in static images but the results are qualitatively similar to

those with the static mesh. These tests demonstrate that the generalized semi-Lagrangian

procedure presented in this section does not create any artifacts or additional numerical

smoothing over that seen in the standard semi-Lagrangian method.

4.6 External Forces

Application of external forces is just as easy on tetrahedral meshes as it is for

regular meshes. Forces may be directly specified by the user, be constant body forces

(for example gravity), or be dependant on fluid properties such as buoyancy forces which

typically depend upon the fluid density or temperature. Once a force is determined, it may

be projected into the face normal direction and used to accelerate the face normal velocity

using forward Euler integration

zi = zi +Δtρ(fi · ni). (4.24)

For gravity, all faces experience the same acceleration, so they may be set using Equa-

tion (4.24). Buoyancy forces typically depend on a local temperature or density which must

be advected with the velocity field. Typically these quantities are stored at the tetrahedron

barycenters. To compute the quantity at a face location we use a weighted average of the

Page 72: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

60

values from the two tetrahedra adjacent to the face. The weighting depends on the volume

of the adjacent elements. To compute a quantity df at a face f with adjacent tetrahedra i

and j we use the following:

df =diVi + djVj

Vi + Vj,

where Vi, Vj are the volume of tetrahedra i, j respectively. After the value at the face and

the force due to this value is computed, Equation (4.24) is applied to change the face’s

velocity.

4.7 Mass Conservation

The generic method we use to enforce mass conservation is the same as that found

in many previous works. It can be originally attributed to [11]. The implementation of mass

conservation in this work differs only in the discrete derivative operators we use, which are

described in Section 4.4.2. This difference arises because we use a tetrahedral mesh instead

of a regular grid discretization. Many papers gloss over some of the important details. To

make our extension to fluid-rigid body coupling more concrete, we describe the procedure

in some detail here. We note that much of the discussion is applicable to all element shapes

(cubes, tetrahedra, non-orthogonal bricks etc.).

Integrating the advection and external force terms of Equation (4.1) yields an

intermediate velocity u∗ which in general, does not obey the mass conservation condition,

Equation (4.2); in other words ∇ · u∗ �= 0. We need to make sure that after pressure is

added, this velocity at the end of the time step, u(t+Δt) does meet the mass conservation

Page 73: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

61

condition. The pressure changes u∗ according to

u(n+1) = u∗ −Δt∇p

ρ. (4.25)

The condition we desire for the u(n+1) is

∇ · u(t+Δt) = 0, (4.26)

where Δt is the time step. After altering u∗ by Equation (4.25) all terms of the momentum

conservation have been applied and satisfying Equation (4.26) enforces mass conservation.

In our simulator we do not work with a continuous system asd in Equations (4.25)

and (4.26), so these equations must be replaced with their discrete approximations. As

noted in Section 4.3, we represent the fluid velocity field u with the discrete velocity values

zi, and the pressure field is represented by the discrete pressure values pj . The discrete

values for the entire mesh are concatenated into the vectors z and p respectively. Next, we

need discrete equivalents of the divergence and gradient operators that act on the discrete

velocity and pressure. As derived in Section 4.4.2, the discrete operator for the divergence

of the velocity field is,

∇ · u =1V

∑i

siziAi

and the discrete operator for the gradient of pressure is

∇p · v =p2 − p1|v| .

As these equations show, the discrete divergence and gradient are linear functions of the

face normal velocities and pressures. All other terms in these equations, e.g. tetrahedron

volume V , face area A, and distance between barycenters |v| depend on mesh properties.

Page 74: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

62

The discrete derivative operators can be expressed as matrices D and G which are

multiplied by the discrete face normal velocities and pressure respectively. The elements of

the matrices are the terms that depend on the mesh.

If tetrahedron i has a face j, then

Dij =1VisjAj ; (4.27)

otherwise Diq = 0. For a face k with adjacent tetrahedra m and n

Gkm =Δtsmk

ρ|cm − cn| (4.28)

where cm and cn are the centers of tetrahedra m and n. The variable smk = +1 if the vector

from cn to cm is in the same direction as the face normal of face k (nk · (cm − cn) > 0)

and smk = −1 otherwise. For simplicity we have include multiplication by the time step,

Δt and division by density ρ as part of the matrix G. We do this because every time the

gradient operator is applied, this multiplication factor is applied as well.

When the matrixD is multiplied by a vector concatenation of all of the face normal

velocities z the result is a vector concatenation of the discrete divergence estimates for each

tetrahedron. When the matrixG is multiplied by a vector of the pressures in the tetrahedra,

the result is a vector concatenation of the accelerations of all face normal velocities due to

pressure. We therefore have discrete versions of Equations (4.25) and (4.26),

z(n+1) = z∗ −Gp (4.29)

and

Dz(n+1) = 0, (4.30)

Page 75: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

63

where 0 is a column vector of all zeros. We substitute Equation (4.29) into Equation (4.30)

and shift around terms such that the pressure term is on the left-hand side and the inter-

mediate velocity is on the right-hand side. This results in the matrix equation

DGp = Dz∗. (4.31)

The matrix DG is the discrete equivalent of a Laplacian operator and is denoted by L.

Equation (4.31) therefore is written as the linear system

Lp = Dz∗. (4.32)

Since the right-hand side of Equation (4.32) is a known vector, we rewrite Equation (4.32)

in standard linear system form,

Lp = dz∗ . (4.33)

where dz∗ is the vector of the divergences of the intermediate velocity field for the tetrahedra.

This equation is a discrete version of the Poisson equation ∇2ϕ = f , a partial

differential equation seen in a wide swath of fields including electrostatics, mechanical en-

gineering, and theoretical physics. By solving this linear system for the vector of unknown

pressures p, we can use p to alter the vector of intermediate face normal velocities z∗ accord-

ing to Equation (4.29) such that we obtain a vector of face normal velocities that obeys the

discrete divergence-free condition, Equation (4.30). The matrix L is sparse and symmetric,

so Equation (4.32) can be solved with preconditioned conjugate gradient (PCG).

4.7.1 An Alternative Perspective

This same method can be arrived at from a different perspective, where mass con-

servation is a projection procedure. This is the view taken in [11] and [62]. The projection

Page 76: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

64

viewpoint starts with the Helmholtz-Hodge decomposition theorem, which states that any

sufficiently smooth vector field v can be decomposed into 3 orthogonal vector field compo-

nents, a divergence-free component vd, a curl-free component vc, and a divergence and curl

free component (the harmonic component) vh. The vector fields vd and vc can be created

from the curl and gradient of vector and scalar potential fields φ and ψ respectively. So,

the decomposition can be written

v = vd + vc + vh (4.34)

= ∇× φ+∇ψ + vh (4.35)

To use this idea for mass conservation we make the velocity field divergence-free by finding

the component of the velocity field that has divergence, vc, and subtracting it away. The in-

tuition is that advection and external forces change the fluid velocity but also “accidentally”

shift it away from its desired divergence-free state. By projecting back to a divergence-free

configuration, we correct the mistake by changing the velocity field as little as possible.

This is called a projection method because it takes a general field and projects it to the

nearest divergence-free field. To find the component of the velocity with divergence, vc, we

take the divergence of both sides of Equation (4.34).

∇ · v = ∇ · (∇× φ) +∇ ·∇ψ +∇ · vh (4.36)

= 0 +∇ ·∇ψ + 0. (4.37)

The first term of the right-hand side of Equation (4.36) is zero due the property that

∇ · (∇× a) = 0 for any vector field a. This term represents the divergence-free component

of the field, so by design its divergence is zero. The same is true for vh, it is by construction

Page 77: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

65

divergence-free. By solving this equation for the scalar potential that generates the curl-free

component of the vector field, we can recreate it and subtract it off, v = v −∇ψ. Note

that this projection is identical to that described in Section 4.7, with ψ replacing the role

of the pressure p. The insight gained by this perspective is that it is clear that the mass

conservation step should not change the curl of the velocity field. If it does, the projection

is not orthogonal and therefore energy is incorrectly being added or subtracted from the

system.

One place where this intuition has been useful is in rejecting the choice of storing

velocities at tetrahedron vertices and pressures at tetrahedron centers. The reason is that to

prevent altering the curl of a particular tetrahedron, the pressure should force the velocities

in a direction normal to the face opposite of the node. However, doing this will alter the

curl for some other tetrahedra attached to this node. With some inspection we see that the

curl is not altered by the pressure gradient in the storage scheme we use. As the pressure

rises in a tetrahedron, the change in curl due to acceleration of one of the faces is balanced

by the acceleration of another face.

4.7.2 Boundary Conditions

On the boundary of the simulation domain, two types of boundary conditions can

occur, open and closed, or more formally, Dirichlet and Neumann boundary conditions.

Open boundary conditions are regions on the simulation boundary where fluid is free to

enter or exit. At open boundaries, the pressure is a specified fixed value (in our case 0). At

closed boundaries the derivative of the pressure is set. In most situations it is set such that

the derivative is 0, hence there is no acceleration by pressure.

Page 78: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

66

For a liquid we treat the regions of the liquid surface in contact with air as open

boundary conditions. In reality, the motion of air has an effect on the liquid behavior.

However, because the density of air is so much less than that of water (∼ 1000 times less),

the air has very little effect on the liquids motion. Therefore, as in most other works, we do

not simulate the air. The benefit is that we simulate a smaller system and we avoid creating

a poorly conditioned Laplacian matrix due to the large differences in the density of air and

water. In practice, this simplification usually has little effect on the resulting liquid motion.

One situation where it creates problems is when liquid completely encloses a region of air

such as in an air bubble. These regions are free to unrealistically expand or collapse the air.

However, because these regions are obscured by other surfaces and typically arise during

turbulent motion, the problem is often not noticeable. In our experience this problem has

not been observed. Should it be necessary, the implementation of the extension to our

simulation method is straightforward.

Closed boundary conditions occur where the fluid is bounded by some solid obstacle

that may be stationary or moving. To prevent fluid from penetrating into the solid obstacle,

a closed boundary condition is enforced by setting the normal velocity at the boundary to

be the same as the normal velocity of the obstacle. To prevent the pressure from changing

the velocity at the closed boundary, the pressure outside the boundary is set to be the same

as inside the boundary. This makes the pressure gradient zero, and therefore the pressure

term does not change the closed boundary velocity.

The open and closed boundary conditions manifest themselves in the gradient

matrix. Open boundary conditions are enforced by assuming that pressure opposite the

Page 79: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

67

open face is zero. This can be implemented by using the standard gradient equation and

since the outside value is zero, the row of the gradient matrix corresponding to this face

will contain only the entry corresponding to the one tetrahedron adjacent to the open face.

Closed boundary faces are enforced by making sure that the gradient is always

zero regardless of the pressures. This way the face velocity is completely dictated by the

normal velocity of the obstacle. To have a gradient always return zero for these closed faces,

the row of the gradient matrix corresponding to the closed faces could be set to contain all

zeros. Doing this would create a singular Laplacian matrix L, which would create problems

for the linear system solver. In practice, the rows of G that correspond to closed faces are

simply not included in G to avoid creating singular matrices. Therefore, G is a Na × Nt

matrix where Na is the number of active (internal or open but not closed) mesh faces and

Nt is the number of tetrahedra. The matrix D is built to compute divergence due to active

faces, so its size is Nt × Na. For non-moving obstacles, the closed (inactive) faces make

no contribution to the divergence of each face’s adjacent element, therefore these faces

may be ignored in the mass conservation procedure. For closed faces that are associated

with moving objects, the velocity of these faces must be accounted for when computing

the divergence to obtain proper interaction with the obstacle. To implement this, a vector

dc is added to the right-hand side of Equation (4.32). Each row of dc contains the total

contribution of closed face velocities to the elements discrete divergence. Therefore, the

right-hand side of the linear system of equations is a vector of the discrete divergence for

each element due to both active and inactive face normal velocities,

Lp = dz∗ + dc, (4.38)

Page 80: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

68

where the ith element of d comes from the ith tetrahedron,

dc,i =∑

zjAjsj , (4.39)

and the sum is taken over the closed faces j of tetrahedron i. The normal velocity zj in this

equation comes from the scripted motion of the obstacle.

4.7.3 Coupling Between Fluids and Rigid Bodies

In the description of closed boundaries, the velocities of the closed faces are as-

sumed to be known, either 0 for static obstacles or specified by the user through some

scripted motion of the obstacle. In coupling between fluids and rigid bodies the obstacles

behavior is affected by the fluid. As a result, the velocities at the associated mesh boundary

faces are unknown and cannot simply be added to the left-hand side of the linear system

as in Equation (4.38). The acceleration of these velocities at the fluid/rigid interface must

be solved for.

In our mass conservation step for two-way coupling we solve for both the fluid and

rigid body velocities such that

1. the fluid and rigid body conserve momentum,

2. the fluid conserves mass, and

3. the rigid body moves rigidly.

This is accomplished by following the steps for conserving mass in Section 4.7 with the

addition that mesh faces at the interface between the fluid and the rigid body are affected

by the pressure.

Page 81: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

69

Effect of Pressure on a Rigid Body

In this section we derive the effect of fluid pressure on the velocity and rotation of

the rigid body, and hence on the boundary face velocities associated with the rigid body.

Refer to Figure 4.6 for a visual explanation of the following derivation.

A constant pressure pi will create a force fi on a planar body with normal ni,

according to the equation

fi = −piAini

where Ai is the area that the pressure acts upon. By assuming a constant pressure within

each element (tetrahedron in our case) we can compute a net force fp and torque τp couple

on the rigid body due to pressure in all N elements surrounding the body as

fp =N∑

i=1

−piAini, (4.40)

τp =N∑

i=1

piAi(ri × ni), (4.41)

where ri is the vector from the center of gravity of the rigid body to the location of the

ith face. The net force and torque on the rigid body creates a linear acceleration ap, and

angular acceleration αp, on the body such that

ap = M−1fp, (4.42)

αp = I−1τp, (4.43)

where M and I are the mass and moment of inertia matrices. The mass matrix M is a

3×3 diagonal matrix with the mass of the rigid body on the diagonal elements. The inertia

matrix describes the distribution of the body’s mass, and we calculate it for an object by

Page 82: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

70

treating the object as a collection of point masses. The inertia matrix for k point masses is

Iij =∑

mk

(r2kδij − rkirkj

)

where i and j indicate directional dimension (x, y, or z), mk is the mass of the kth point,

rk is the distance from the center of mass to the kth point, δij is the Kronecker delta, and

rki is the distance to the kth point.

The acceleration of the rigid body at the location of the ith mesh face is

ai = ap + (αp × ri). (4.44)

Since we store only components of velocity in the face normal direction, we only care about

acceleration in the normal direction, which is computed by

ai · ni = a · ni + (α× ri) · ni (4.45)

= a · ni + α · (ri × ni), (4.46)

where we have taken advantage of a vector identity to obtain the more convenient form of

Equation (4.46).

The Rigid Matrix

Equations 4.40 through 4.46 show how to find the acceleration of the faces that

surround the rigid body from the pressures that surround the rigid body. The entire series

of operations only depends linearly on the pressures, so they can be combined into a single

matrix R which, when multiplied by a vector of pressures surrounding the body, yields

a vector of the accelerations of face normal velocities that surround the rigid body. The

Page 83: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

71

matrix R can easily be formed by

R =

⎡⎢⎢⎢⎢⎢⎢⎣

b1

...

bk

⎤⎥⎥⎥⎥⎥⎥⎦

⎡⎢⎢⎣ M−1 0

0 I−1

⎤⎥⎥⎦[A1bT

1 · · · AkbTk

], (4.47)

where bi =[nT

i | (ri × ni)T]. The rightmost matrix finds the net force-torque couple acting

on a rigid body by summing up the contribution due to pressure forces acting mesh faces that

lie on the boundary of the rigid body. The force-torque couple is converted to a linear and

angular acceleration of the body by the middle 6× 6 block symmetric matrix that contains

the mass matrix M and the inertia matrix I. The leftmost matrix in the multiplication

returns the acceleration of the fluid-rigid faces in the direction of the face normal due to the

linear and angular acceleration of the rigid body. By construction, accelerations generated

by this matrix behave rigidly. The matrix R is symmetric, which can be seen from the fact

that Equation (4.47) can be written as a product of matrices R = BMABT, where M is

the block symmetric mass/inertia matrix, and A is a diagonal, and therefore symmetric,

matrix of the face areas. This symmetry is important as it allows us to use a conjugate

gradient solver when we formulate the two-way coupling in the following section.

Putting it all together

In Section 4.7 we showed a matrix G can be created that, when multiplied by

a vector of the pressures, yields the acceleration of fluid velocity faces. Similarly, in Sec-

tion 4.7.3 we showed a matrix R that when multiplied by a vector of the pressures yields

the acceleration of fluid-rigid interface velocity faces. By combining the operations of both

these matrices into a single matrix G we can compute the acceleration of both the fluid and

Page 84: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

72

fluid-rigid faces due to pressure. The matrix G can be viewed as a generalization of the

gradient matrix G seen in Section 4.7. Just as G computed the change in the face normal

velocities of fluid faces, G computes the changes of both mesh faces inside the fluid and

mesh faces on the boundary with the rigid body. A row of G that corresponds to a face

with fluid on both sides contains the same entries as the standard gradient matrix. A row

of G that belongs to a face at the fluid-rigid interface has element values obtained from the

corresponding row of R. The elements of this row are placed at columns corresponding to

the pressures that surround the rigid body. With G built, mass conservation and two-way

coupling proceed as in the all-fluid case, with G replacing the role of the discrete gradient

matrix, G.

For a vector of pressures p, the intermediate velocity field z∗ is accelerated to the

end-of-step velocity

z(t+Δt) = z∗ + Gp. (4.48)

Fluid components of z∗ are found as before, by applying all terms of Equation (4.1) except

the pressure term. In particular, fluid-rigid interface components, z∗ are found using a

rigid body simulator without pressure forces applied. Components of z∗ corresponding to

all fluid on the interior of the mesh are found as before, doing semi-Lagrangian integration

then adding external forces. To find a particular pressure that accelerates z∗ such that z is

divergence free we solve the linear system

DGp = Dz∗. (4.49)

This linear system can be solved efficiently using PCG since the the matrix DG, which

replaces the discrete Laplacian L from the all fluid case, is also a positive-definite, sparse,

Page 85: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

73

rf a

τ α

fi

ai

Figure 4.6: Left) Pressure forces on rigid object create a force/torque couple. Right) Theacceleration on the boundary (and hence the fluid simulation mesh faces at this boundary)of the rigid body can be computed from the linear and angular acceleration of the body.

symmetric matrix. Once the pressure is found, all active faces are updated using Equa-

tion (4.48).

Using the same machinery, we can also interact with constrained rigid bodies.

This simply requires finding an R matrix that correctly computes face accelerations due

to pressure. For example, one could easily alter R such that the body was constrained

to just rotate about the objects center of mass by replacing bi in Equation (4.47) with

b′i =

[(ri × ni)T

]and using only the I−1 block for the center matrix. This idea could be

extended further to include even articulated bodies.

This same idea has also been extended to fluid and deformable body coupling

[10]. The only change required is determining the new, and somewhat more complicated

relationship between the pressure surrounding the deformable body and the acceleration of

the fluid-deformable body faces.

Page 86: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

74

Chapter 5

Multigrid

As discussed in Section 4.7, the procedure for enforcing the incompressibility of the

fluid involves solving the discrete Poisson’s equation, Lp = dz∗ . This linear system is large,

sparse, and symmetric. In this chapter we describe how this linear system can be solved

efficiently using a multigrid method. A detailed background description of the multigrid

method is beyond the scope of this thesis but we briefly describe the relevant high level

concepts and refer the interested reader to the excellent books, “Multigrid Methods”, [45]

and “Multigrid” [67] for more details. We will focus instead on details of our implementation

that we found useful.

5.1 Multigrid Background

Suppose the linear system we wish to solve is Ax = b, where x is unknown.

Assume that we can construct a hierarchy of linear systems, Akxk = bk, with k ranging

from q to 1 where q is the original, finest resolution system, and 1 corresponds to the

Page 87: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

75

coarsest version of the original linear system. Here each Ak in some sense approximates

the finest system matrix Aq. Multigrid works by computing a quick, inaccurate solution

to this system, then correcting the error in this approximate solution with help from an

approximate solution to a coarser version of the problem, which can be solved more quickly.

The coarser version is recursively solved by using an even coarser version of the problem.

The base case is a linear system small enough to solve quickly with a direct method.

Multigrid uses a sequence of linear prolongation operators Pk,k−1 that upsample

a coarse solution (with few unknowns) to a finer one (with more), and a sequence of linear

restriction operators Rk−1,k that reduce a fine solution to a coarser one (with some loss of

information). Since these are linear operators, they can be expressed as matrices. In the

original, geometric formulation of multigrid, the fine and coarse solutions are nodal values

on regular grids of two different resolutions, prolongation is done (exactly) by interpolating,

and restriction is done (approximately) by projection. The matrices for the coarser levels,

Ak are formed by applying the discretization stencils on the coarsened meshes.

The motivation for the multigrid method can be conceptually understood at a high

level. Local iterative methods are very good at removing high-frequency error in the solution

estimate. By themselves, the local iterative methods fail to be effective solvers because they

are very bad at removing the low-frequency error. The remaining low-frequency error can

be well represented on a coarser system and furthermore it will appear as higher frequency

error on this coarser system. Therefore, iterations of the local solver on the coarser system

will be able to more effectively reduce this error. As an added benefit, each iteration on the

coarser system takes less time since it is performed on a smaller system.

Page 88: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

76

The idea is similar to multiresolution methods which start from a solution on a very

coarse system and then repeatedly use an approximate solution on the coarser system to

initialize iterations on a refined system until ultimately solving the problem on the original

resolution. When solving a large linear system, it is more effective to make several cycles

through all levels of resolution.

V-cycle multigrid begins by applying a relaxation operator S(Ak,xk,bk), which

returns an approximation solution (usually with poor accuracy) to the system Akxk = bk.

We use two Gauss-Seidel iterations. Next, it computes the residual of the system, restricts it

to the next coarser grid, and recursively solves the coarse problem on the restricted residual.

It prolongs the coarse solution and adds it, as a corrective term, to the fine solution. Finally,

the relaxation operator is applied again. We use full-cycle multigrid, which uses V-cycle

multigrid as a subroutine as follows.

FullCycleMultigrid(x,b)

rq ← b−mathbfAx

for k ← q to 2

rk−1 ← mathbfRk−1,krk

z1 ← A−11 r1

for k ← 2 to q

zk ← Pk,k−1zk−1

VCycleMultigrid(zk, rk, k)

x← x+ zq

VCycleMultigrid(xk,bk, k)

if k = 1

Page 89: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

77

xk ← A−11 bk

else

xk ← S(Ak,xk,bk)

rk−1 ← Rk−1,k(bk −Akxk)

wk−1 ← 0

VCycleMultigrid(wk−1, rk−1, k − 1)

xk ← xk +Pk,k−1wk−1

xk ← S(Ak,xk,bk)

5.2 Algebraic Multigrid Background

Often there is no obvious way to construct a coarse version of the problem by

geometrically coarsening the mesh, then applying the discrete differential operators to the

coarsened mesh. In our case, this is because grouping together tetrahedra will generally

not create larger tetrahedra. A similar problem occurs for regular hexahedral grids in the

common case when the coarse levels of the grid cannot capture the simulation domain

adequately, due to an irregularly shaped domain. Irregular domains occur, for example,

at a liquid free surface or at the boundary with interesting obstacles. We circumvent

this geometric problem with algebraic multigrid, which uses only A matrices, and not the

geometry, to construct the prolongation and restriction operators. From the prolongation

and restriction operators the system matrices can be defined by Ak−1 = Rk−1,kAkPk,k−1.

The series of matrices on the right hand side first interpolates a course solution up to the

finer level by Pk,k−1, then the finer level matrix, Ak, operates on the interpolated solution,

and finally, the solution is restricted back down to the coarser level by Rk−1,k.

Page 90: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

78

5.3 Details of our Implementation

To form the restriction and prolongation operators, we partition the level k vari-

ables into coarse and fine variables. Coarse variables survive into the coarser level k − 1;

fine variables do not. Pk,k−1 is a matrix that prolongs a level k − 1 solution by assigning

each fine level k variable the average of the values of its coarse neighbors from the level

k − 1 solution. (Variables i and j are neighbors if Aij is non-zero.) Some researchers ad-

vocate using weighted averages based on matrix coefficients [45], but we found that simple

averages converged faster. They also save memory and time by obviating the need to com-

pute weights. For restriction, we use the popular Galerkin projection method [67], in which

Rk−1,k = PTk,k−1.

To determine the partitioning of variables into coarse and fine we are guided by

a few considerations. Each level k variable must have at least one neighbor labeled coarse

(possibly itself) so that all variables can be interpolated from the coarser level. A good

partition has coarse variables that support good interpolation of values from the coarser

to the finer level, but also keep the number of coarse variables modest, so that the coarser

linear system is as small as possible. The following greedy algorithm for labeling variables,

though not optimal, strikes a good balance between simplicity and effectiveness in practice.

1. Assign each variable a counter that stores its number of neighbors.

2. Select a variable at random; label it coarse.

3. Label the neighbors of the new coarse variable fine.

4. For each unlabeled neighbor of each new fine variable, decrement the count of its

Page 91: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

79

c0

c2 c4

c6

c8

c10

c12

c14

f1

f1

f1

f3f3

f5

f5f7

f7

f9

f11

f13

f11

f13

Figure 5.1: An example of variable classification where c indicates that a triangle is la-beled as coarse and f indicates a fine label. We have shown a geometry so that neighborinformation is clear. In practice, the non-zero entries in the system matrix are used todetermine neighborhood information. Subscripts indicate the order in which the variablesare classified. For example, c0 is added first (selected at random), then its neighbors areadded as f1’s. Next c2 is added and its neighbors are labeled as f3. Note that due to theclassification algorithm each fine variable has at least one coarse neighbor and that thereare relatively few coarse variable (8 of a possible 21).

number of unlabeled neighbors.

5. Select the unlabeled variable that neighbors a fine variable and has the most unlabeled

neighbors. Label it coarse.

6. Repeat steps 3 to 5 until every variable is labeled.

An example of this procedure worked through for a simple mesh is shown in Fig-

ure 5.1.

One concern with the use of an algebraic multigrid solver is the additional memory

Page 92: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

80

burden it can impose. We have attempted to minimize memory usage in the following two

ways. First of all, as mentioned before, for the prolongation matrix we use simple averages

instead of weighted averages. This allows for memory savings as the elements of the matrix

need not be stored since their values are determined by the number of entries per row. The

value for each row can be computed on the fly quickly since it is an integer divide which we

store in a lookup table.

A second way which we have experimented with to reduce the memory usage is by

“skipping” the first coarsened level. That is, as part of the multigrid procedure of solving

on multiple resolutions of the system we never solve the system that is directly coarsened

from the original system. To implement this we create a temporary first coarsened level,

Aq−1 (which is directly coarsened from the original) and some temporary prolongation

matrices, Pq,q−1,Pq−1,q−2. The operator Pq,q−1 is a prolongation matrix built from the

neighborhood information contained in Aq and Pq−1,q−2 is a prolongation matrix built

from the neighborhood information in Aq−1. Then Aq−1 is built as

Aq−1 = Pq,q−1TAqPq,q−1

and the first coarsened system matrix that is used is,

Aq−1 = Pq−1,q−2T Aq−1 Pq−1,q−2

with prolongation matrix

Pq,q−1 = Pq−1,q−2 Pq,q−1

To our pleasant surprise this addition not only saved on memory but also saved on execution

time. We believe the reason for this is that although each cycle through Full Multigrid has a

Page 93: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

81

slower convergence factor than using the complete set matrices (due to worse approximations

in interpolation), the execution time per cycle is less because it omits iteration on the second

to largest system (see Table 5.1).

5.4 Multigrid Discussion and Results

Although the basics multigrid scheme we are using is not novel, we are not aware of

it’s prior use within graphics for fluid animations. Furthermore, the specific implementation

details outlined in Section 5.3 have been important in making a practical and effective

implementation. The simulations we used contained between 0.8 million and 1.3 million

tetrahedra. For these systems our algebraic multigrid solver varied between 1.8× and 2.1×

faster than a preconditioned conjugate gradient solver. We also tested our solver on a larger

5 million tetrahedra mesh, that was not used for one of our fluid simulations, and observed

a 3× speed up over preconditioned conjugate gradient. We expect that this multigrid solver

would also be useful for fluid simulations on other discretizations and that the performance

benefit will continue to grow as systems become larger. In particular, regular grids require a

larger number of elements and furthermore the mass conservation step is generally a larger

percent of simulation time (since velocity interpolation and hence the semi-Lagrangian step

is easier on a regular grid). Therefore not only is the linear system larger, which as we have

seen makes multigrid more useful, but also the significance of this step is greater. While

we have not yet experimented with applying the multigrid solver to regular grids we see no

reason for the results to not carry over to this setting.

Page 94: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

82

Approx. # P.C.G Multigrid MultigridElements standard w/ skipping1.5 Million 29.56 sec 16.67 sec (1.77) 16.15 sec (1.83)2 Million 67.27 sec 31.28 sec (2.15) 28.05 sec (2.39)3 Million 97.74 sec 48.78 sec (2.04) 41.74 sec (2.34)4 Million 162.43 sec 68.91 sec (2.36) 63.28 sec (2.56)5 Million 223.14 sec 86.93 sec (2.57) 70.94 sec (3.15)

Table 5.1: This table shows a timing comparison for different methods of solving themass conservation linear system. A variety of different sized meshes are compared. Forthe Multigrid standard and Multigrid with skipping columns the speedup factor over theequivalently sized PCG system is shown in parenthesis.

Page 95: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

83

Chapter 6

Results and Discussion

I have used the methods described in this thesis to generate several example ani-

mations of both liquids and gases. This section features sample frames from several of the

animations and a discussion of these results.

6.1 Gas and Non Free Surface Liquid Animations

The first set of examples are of gasses and liquids that do not have a free surface.

These simulations used a tetrahedral discretization generated using the variational tetrahe-

dral meshing algorithm with the modifications described in Section 3.1. For all examples,

the number of tetrahedra used in the discretization was ∼ 100, 000 with the exception of

the example shown in Figure 6.4, which used ∼ 500, 000. This number of tetrahedra suffices

to represent the complex boundaries with adequate resolution so that no artifacts appear

in the animations and the animations featured enough detail. Timings for these results

can be found in Table 6.1. Some of the examples feature complex boundaries that change

Page 96: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

84

throughout the simulation. The results demonstrate that the methods described in this

thesis can handle complex, moving boundaries in a natural manner and generate visually

plausible results.

In the examples, the spatial resolution is graded over the simulation domain to

focus computational effort where it is most needed. See for example Figure 6.4, which

shows the mesh at several frames in the simulation. Computation is focused on the most

visually interesting portions of the flow. Careful inspection reveals that in regions where

the mesh is less refined, the simulation is less capable of maintaining detail. For example,

in Figure 6.1 diffusion is apparent at the corners of the box that are away from the paddle.

Often this is not a problem, as the users attention is focused on the visually interesting

portions. However, should the diffusion of fluid motion be a problem, the mesh regions can

be further refined at the expense of run time.

One important issue is visible in the high-resolution example in Figure 6.4. In this

example, a larger percentage of time is spent in the remeshing step —39.3% as opposed to

∼ 20% for the lower-resolution examples. This suggests that this meshing technique would

not be feasible when a large number of tetrahedra are needed, for example for free surfaces,

because the meshing time would dominate simulation time.

6.1.1 Two-Way Coupling

The following examples feature the two-way coupling method described in Sec-

tion 4.7.3. The method is successful at generating animations in which the fluid is affected

by the rigid body, and vice versa. In Figure 6.5, the method is demonstrated in two different

simulations featuring cannons that shoot smoke with the same force at bunnies of different

Page 97: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

85

Figure 6.1: A paddle translates and rotates with scripted motion, stirring up the smokein a box shape. On the right, the mesh is shown for three frames for this example. Thedomain is remeshed every time step so that it’s boundary conforms to the paddle. Thesizing function changes from time step to time step so that smaller tetrahedra are creatednear the paddle, as this is where the most interesting motion occurs.

densities. As expected, the heavier bunny (right column of images) is less affected by the

jets.

Figure 6.6 shows an animation which demonstrates that the fluid rigid coupling

method proposed in this thesis does not suffer from the mass conservation problems of

previous work. (For a description of this problem, refer to Section 2.7.) In the example,

fluid/rigid coupling is used to simulate valves such that fluid is pumped from the left cham-

ber to the right via the expansion and contraction action of the center spherical chamber.

The example demonstrates that no leakage occurs when simultaneous coupling is used since

Page 98: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

86

Figure 6.2: The leftmost image shows smoke inside the Stanford Buddha. The remainingimages show the progression of green smoke as it is exhaled out. Smoke motion is induced bythe motion of Buddha’s belly, which determines the boundary conditions of the simulationdomain.

Figure 6.3: This image shows smoke in a tube spinning and rising around a rotating blade.

Page 99: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

87

Figure 6.4: A series of frames from a high resolution example with a jet shooting smokeup towards several obstacle rods

Page 100: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

88

Figure Meshing time Sim time Percentnumber (mean) (mean) remeshing

Paddle 6.1 13.2 sec 51.6 sec 20.3%Valves 6.6 8.33 sec 36.2 sec 18.7%Bunnies 6.5 5.76 sec 30.0 sec 16.1%Cylinders 6.4 313 sec 483 sec 39.3%

Table 6.1: Simulation times for the gas and non-free surface liquid examples. Meshing isthe time required for mesh generation and determination of the topological and geometricalinformation. Sim denotes the time used for numerical integration and pressure correction.

the mass conservation is not broken by a later rigid body projection.

6.2 Free Surface Liquid Animations

This series of examples features animations of liquids with free surfaces. To dis-

cretize the simulation domain these animations use the isosurface stuffing method. Typical

mesh sizes vary from ∼ 1.5 − 3.0 million tetrahedra. The number of tetrahedra varies

over the course of the simulation and depends on the liquid’s surface area because small

tetrahedra are placed near the surface (see Figure 6.10).

Timings for each of the animations are shown in Table 6.2. The meshing time

includes the time it took to determine topological relations and geometrical information.

Topological information includes, for example, determining the nodes of each face in the

mesh, which faces a tetrahedron is made of, and which tetrahedra are adjacent to a face.

Geometric information includes tetrahedra volumes and barycenter positions, face areas,

face barycenters, and face normals. These computations are a significant portion of the

meshing time. In our implementation, the mesh is regenerated from scratch each time step.

It is conceivable that by reusing portions of previous meshes, the mesh generation time

Page 101: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

89

Figure 6.5: Two animations where jets of air are shot towards a rigid bunny. The topsequence features a light bunny; the bottom features a heavier bunny. As expected, thelight bunny is more affected by the cannon than the heavier one.

Page 102: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

90

Figure 6.6: The central bulb expands and contracts with causes the red particles to movefrom the left tank to the right tank. The blue valves are coupled to the fluid simulationand prevent backflow.

could be reduced appreciably.

Page 103: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

91

Figure 6.7: Liquid initially in the shape of an angel falls under gravity, creating a splash.

Page 104: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

92

Figure 6.8: Two nozzles spray liquid onto a dish with a hump shape in the middle.

Page 105: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

93

Figure 6.9: Water, initially in the shape of a block, falls under the force of gravity. Ahalf-hemisphere obstacle on the floor interacts with the moving liquid, as do the boundariesof the domain.

In some of the animations, artifacts on the free surface appear. I think that the

likely cause is errors in the gradient computation described in Section 4.4.2. Due to errors

in the estimate for the gradient, the pressure field is unable to perfectly counteract the force

of gravity.

On the positive side, the animations feature liquids with a level of detail rarely

observed in results from other state-of-the-art simulators. We believe the ability to conform

to and focus computation near the free surface is the primary reason for this detail.

Page 106: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

94

Figure 6.10: The meshes used to generate the animation in Figure 6.9. In the upper cornerof the second, third, and forth panels a zoom in view is shown. Note that the elementsbecome larger as the distance to the surface increases and that the mesh conforms well tothat surface yet is highly structured.

Page 107: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

95

Figure 6.11: Liquid is sprayed inside a transparent box. A thin sheet folds over after thespray hits the back wall.

Page 108: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

96

Figure 6.12: Red Liquid erupts from a mountain (left). On the right a close up of the poolat the bottom where the liquid accumulates.

Figure Meshing time Sim time SLC timenumber (mean) (mean) (mean)

Chutes 6.8 59 sec 61 sec 350 secSpray 6.11 53 sec 37 sec 169 secAngel 6.7 24 sec 30 sec 276 secDam Break 6.9 42 sec 49 sec 196 secVolcano 6.12 26 sec 64 sec 276 sec

Table 6.2: Simulation times for the free surface liquid examples. Meshing is the timerequired for mesh generation as well as determination of topological and geometrical infor-mation. Sim denotes the time used for numerical integration and pressure correction. SLCis the time used by the semi-Lagrangian contouring surface tracker. All times are for oneframe of animation.

6.3 Overall Conclusions

The methods presented in this thesis accomplish the goals set forth in the intro-

duction. Our method increases the adaptability of fluid simulation for use in computer

graphics. Overall simulation times are on par with the state of the art. The adaptability

has allowed for the creation of animations involving complex scenarios with highly dynamic

boundary conditions and interaction with interesting shapes.

Page 109: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

97

Bibliography

[1] Bart Adams, Mark Pauly, Richard Keiser, and Leonidas J. Guibas. Adaptively sampled

particle fluids. ACM Transactions on Graphics, 26(3):48.1–48.7, August 2007. Special

issue on Proceedings of SIGGRAPH 2007.

[2] Pierre Alliez, David Cohen-Steiner, Mariette Yvinec, and Mathieu Desbrun. Varia-

tional tetrahedral meshing. ACM Transactions on Graphics, 24(3):617–625, August

2005. Special issue on Proceedings of SIGGRAPH 2005.

[3] Adam W. Bargteil, Tolga G. Goktekin, James F. O’Brien, and John A. Strain. A semi-

Lagrangian contouring method for fluid simulation. ACM Transactions on Graphics,

25(1):19–38, Jan 2005. Special issue on Proceeding of SIGGRAPH 2006.

[4] Adam W. Bargteil, Chris Wojtan, Jessica K. Hodgins, and Greg Turk. A finite-

element method for animating large viscoplastic flows. ACM Transactions on Graphics,

26(3):16.1–16.8, August 2007. Special issue on Proceedings of SIGGRAPH 2007.

[5] Marie-Paule Cani and Mathieu Desbrun. Animation of deformable models using im-

plicit surfaces. IEEE Transactions on Visualization and Computer Graphics, 3(1):39–

50, January 1997.

Page 110: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

98

[6] Mark Carlson, Peter J. Mucha, and Greg Turk. Rigid fluid: Animating the interplay

between rigid bodies and fluid. ACM Transactions on Graphics, 23(3):377–384, August

2004. Special issue on Proceedings of SIGGRAPH 2004.

[7] Mark Carlson, Peter J. Mucha, R. Brooks Van Horn III, and Greg Turk. Melting and

flowing. ACM Transactions on Graphics, 21(3):167–174, July 2002. Special issue on

Proceedings of SIGGRAPH 2002.

[8] J. X. Chen and N. da Vitoria Lobo. Towards interactive rate simulation of fluids

with moving obstacles using Navier-Stokes equations. Graphical Models and Image

Processing, 57:107–116, 1995.

[9] Nuttapong Chentanez, Bryan E. Feldman, James F. O’Brien, Jonathan R. Shewchuk,

and Francois Labelle. Liquid simulation on lattice-based tetrahedral meshes. In ACM

SIGGRAPH 2007 Symposium on Computer Animation, pages 219–228, September

2007.

[10] Nuttapong Chentanez, Tolga G. Goktekin, Bryan E. Feldman, and James F. O’Brien.

Simultaneous coupling of fluids and deformable bodies. In ACM SIGGRAPH 2006

Symposium on Computer Animation, pages 83–89, September 2006.

[11] A.J. Chorin. Numerical solutions of Navier-Stokes equations. Mathmatics of Compu-

tation, 22(104):745–762, 1968.

[12] Paul Cleary, Soon Hyoung Pyo, Mahesh Prakash, and Bon Ki Koo. Bubbling and

frothing liquids. ACM Transactions on Graphics, 26(3):97.1–97.6, August 2007. Special

issue on Proceedings of SIGGRAPH 2007.

Page 111: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

99

[13] Gilles Debunne, Mathieu Desbrun, Marie-Paule Cani, and Alan Barr. Adaptive sim-

ulation of soft bodies in real-time. In Computer Animation 2000, pages 15–20, May

2000.

[14] Mathieu Desbrun and Marie-Paule Cani. Smoothed particles: A new paradigm for

animating highly deformable bodies. In Computer Animation and Simulation 1996,

pages 61–76, August 1996.

[15] W. J. Minkowycz (Editor), E. M. Sparrow (Editor), and J. Y. Murthy. Handbook of

Numerical Heat Transfer. John Wiley & Sons Inc., New York, second edition, 2006.

[16] Sharif Elcott, Yiying Tong, Eva Kanso, Peter Schroder, and Mathieu Desbrun. Sta-

ble, circulation-preserving, simplicial fluids. ACM Transactions on Graphics, 26(1),

January 2007.

[17] Douglas P. Enright, Stephen R. Marschner, and Ronald P. Fedkiw. Animation and

rendering of complex water surfaces. ACM Transactions on Graphics, 21(3):736–744,

July 2002. Special issue on Proceedings of SIGGRAPH 2002.

[18] Raanan Fattal and Dani Lischinski. Target-driven smoke animation. ACM Trans-

actions on Graphics, 23(3):441–448, August 2004. Special issue on Proceedings of

SIGGRAPH 2004.

[19] Ronald Fedkiw, Jos Stam, and Henrik Wann Jensen. Visual simulation of smoke. ACM

Transactions on Graphics, 20(3):15–22, August 2001. Special issue on Proceedings of

SIGGRAPH 2001.

Page 112: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

100

[20] Bryan E. Feldman, James F. O’Brien, and Okan Arikan. Animating suspended particle

explosions. ACM Transactions on Graphics, 22(3):708–715, July 2003. Special issue

on Proceedings of SIGGRAPH 2003.

[21] Bryan E. Feldman, James F. O’Brien, and Bryan M. Klingner. Animating gases with

hybrid meshes. volume 24, pages 904–909, August 2005. Special issue on Proceedings

of SIGGRAPH 2005.

[22] Bryan E. Feldman, James F. O’Brien, Bryan M. Klingner, and Tolga G. Goktekin. Flu-

ids in deforming meshes. In ACM SIGGRAPH/Eurographics Symposium on Computer

Animation 2005, pages 255–259, July 2005.

[23] Nick Foster and Ronald Fedkiw. Practical animation of liquids. ACM Transactions

on Graphics, 20(3):23–30, August 2001. Special issue on Proceedings of SIGGRAPH

2001.

[24] Nick Foster and Dimitri Metaxas. Realistic animation of liquids. In Graphics Interface

1996, pages 204–212, May 1996.

[25] Nick Foster and Dimitri Metaxas. Modeling the motion of a hot, turbulent gas. In the

Proceedings of ACM SIGGRAPH 1997, pages 181–188, August 1997.

[26] Nick Foster and Dimitris Metaxas. Controlling fluid animation. In CGI ’97: Proceedings

of the 1997 Conference on Computer Graphics International, page 178, Washington,

DC, USA, 1997. IEEE Computer Society.

[27] R. A. Gingold and J. J. Monaghan. Smoothed particle hydrodynamics —theory and

Page 113: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

101

applications to non-spherical stars. In Royal Astronomical Society, Monthly Notices

181, pages 375–389, 1977.

[28] Tolga G. Goktekin, Adam W. Bargteil, and James F. O’Brien. A method for animat-

ing viscoelastic fluids. ACM Transactions on Graphics, 23(3):463–468, August 2004.

Special issue on Proceedings of SIGGRAPH 2004.

[29] Eran Guendelman, Andrew Selle, Frank Losasso, and Ronald Fedkiw. Coupling wa-

ter and smoke to thin deformable and rigid shells. ACM Transactions on Graphics,

24(3):973–981, August 2005. Special issue on Proceedings of SIGGRAPH 2005.

[30] F. Harlow and J. Welch. Numerical calculation of time-dependent viscous incompress-

ible flow of fluid with a free surface. The Physics of Fluids, 8:2182–2189, 1965.

[31] Anil N. Hirani. Discrete exterior calculus. PhD thesis, Caltech, 2003.

[32] Jeong-Mo Hong and Chang-Hun Kim. Discontinuous fluids. ACM Transactions on

Graphics, 24(3):915–920, August 2005. Special issue on Proceedings of SIGGRAPH

2005.

[33] Jeong-Mo Hong, Tamar Shinar, and Ron Fedkiw. Wrinkled flames and cellular pat-

terns. ACM Transactions on Graphics, 26(3):47.1–47.6, August 2007. Special issue on

Proceedings of SIGGRAPH 2007.

[34] Ben Houston, Michael B. Nielsen, Christopher Batty, Ola Nilsson, and Ken Museth.

Hierarchical RLE level set: A compact and versatile deformable surface representation.

ACM Trans. Graph., 25(1):151–175, 2006.

Page 114: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

102

[35] Insung Ihm, Byungkwon Kang, and Deukhyun Cha. Animation of reactive

gaseous fluids through chemical kinetics. In Proceedings of the 2004 ACM SIG-

GRAPH/Eurographics Symposium on Computer Animation, pages 203–212, Aire-la-

Ville, Switzerland, 2004. Eurographics Association.

[36] Geoffrey Irving, Eran Guendelman, Frank Losasso, and Ronald Fedkiw. Efficient sim-

ulation of large bodies of water by coupling two- and three-dimensional techniques.

August 2006.

[37] P. A. Jayantha and I. W. Turner. A comparison of gradient approximations for use in

finite-volume computational models for two-dimensional diffusion equations. Numerical

Heat Transfer, Part B, 40, 2001.

[38] Michael Kass and Gavin Miller. Rapid, stable fluid dynamics for computer graphics.

In Proceedings of ACM SIGGRAPH 90, pages 49–57, August 1990.

[39] Byungmoon Kim, Yingjie Liu, Ignacio Llamas, Xiangmin Jiao, and Jarek Rossignac.

Simulation of bubbles in foam with the volume control method. ACM Transactions on

Graphics, 26(3):98.1–98.10, August 2007. Special issue on Proceedings of SIGGRAPH

2007.

[40] Bryan M. Klingner, Bryan E. Feldman, Nuttapong Chentanez, and James F. O’Brien.

Fluid animation with dynamic meshes. ACM Transactions on Graphics, 25(3):820–825,

August 2006. Special issue on Proceedings of SIGGRAPH 2006.

[41] Francois Labelle and Jonathan R. Shewchuk. Isosurface stuffing: Fast tetrahedral

Page 115: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

103

meshes with good dihedral angles. ACM Transactions on Graphics, 26(3):57.1–57.10,

August. Special issue on Proceedings of SIGGRAPH 2007.

[42] Arnauld Lamorlette and Nick Foster. Structural modeling of flames for a production

environment. ACM Transactions on Graphics, 21(3):729–735, August. Special issue

on Proceedings of SIGGRAPH 2002.

[43] Frank Losasso, Frederic Gibou, and Ronald Fedkiw. Simulating water and smoke with

an octree data structure. ACM Transactions on Graphics, 23(3):457–462, August 2004.

Special issue on Proceedings of SIGGRAPH 2004.

[44] L. B. Lucy. A numerical approach to the testing of the fission hypothesis. The Astro-

nomical Journal 82, 12:1013–1024, 1977.

[45] Stephen F. McCormick. Multigrid Methods. SIAM, Philidelphia, 1987.

[46] Antoine McNamara, Adrien Treuille, Zoran Popovic, and Jos Stam. Fluid control

using the adjoint method. ACM Transactions on Graphics, 23(3):449–456, August

2004. Special issue on Proceedings of SIGGRAPH 2004.

[47] M. Muller, D. Charypar, and M. Gross. Particle-based fluid simulation for interactive

applications. In the ACM SIGGRAPH 2003 Symposium on Computer Animation,

pages 154–159, August 2003.

[48] M. Muller, Barbara Solenthaler, Richard Keiser, and Markus Gross. Point based fluid-

solid interaction. In the ACM SIGGRAPH 2005 Symposium on Computer Animation,

pages 273–244, July 2005.

Page 116: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

104

[49] Duc Nguyen, Ronald Fedkiw, and Henrik Jensen. Physically based modeling and

animation of fire. ACM Transactions on Graphics, 21(3):721–728, August 2002. Special

issue on Proceedings of SIGGRAPH 2002.

[50] J. F. O’Brien and J. K. Hodgins. Dynamic simulation of splashing fluids. In Symposium

on Computer Animation 95, pages 198–205, April 1995.

[51] S. V. Patankar. Numerical Heat Transfer and Fluid Flow. McGraw-Hill, New York,

1980.

[52] Darwyn R. Peachey. Modeling waves and surf. In SIGGRAPH ’86: Proceedings of the

13th annual conference on computer graphics and interactive techniques, pages 65–74,

New York, NY, USA, 1986. ACM Press.

[53] Simon Premoze, Tolga Tasdizen, James Bigler, Aaron Lefohn, and Ross Whitaker.

Particle-based simulation of fluids. Computer Graphics Forum, 22(3):401–410, Septem-

ber 2003.

[54] N. Rasmussen, D. Enright, D. Nguyen, S. Marino, N. Sumner, W. Geiger, S. Hoon, and

R. Fedkiw. Directable photorealistic liquids. In ACM SIGGRAPH 2004 Symposium

on Computer Animation, pages 193–202, July 2004.

[55] Nick Rasmussen, Duc Quang Nguyen, Willi Geiger, and Ronald P. Fedkiw. Smoke

simulation for large-scale phenomena. ACM Transactions on Graphics, 22(3):703–707,

July 2003. Special issue on Proceedings of SIGGRAPH 2003.

[56] Andrew Selle, Nick Rasmussen, and Ronald Fedkiw. A vortex particle method for

Page 117: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

105

smoke, water, and explosions. ACM Transactions on Graphics, 24(3):910–914, July

2005. Special issue on Proceedings of SIGGRAPH 2005.

[57] James Albert Sethian. Level Set Methods and Fast Marching Methods. Cambridge

Monograph on Applied and Computational Mathematics. Cambridge University Press,

Cambridge, U.K., 2nd edition, 1999.

[58] M. Shah, J. Cohen, S. Patel, P. Lee, and F. Pighin. Extended Galilean invariance

for adaptive fluid simulation. In 2004 ACM SIGGRAPH/Eurographics Symposium on

Computer Animation, pages 13–221, July 2004.

[59] Jonathan R. Shewchuk. Star splaying: An algorithm for repairing Delaunay triangu-

lations and convex hulls. In Proceedings of the Twenty-First Annual Symposium on

Computational Geometry (Pisa, Italy), pages 237–246, June 2005.

[60] Lin Shi and Yizhou Yu. Inviscid and incompressible fluid simulation on triangle meshes.

Computer Animation and Virtual Worlds, 15(3-4):173–181, 2004.

[61] Lin Shi and Yizhou Yu. Taming liquids for rapidly changing targets. In Proceedings of

the 2005 ACM SIGGRAPH/Eurographics symposium on computer animation, pages

229–236, New York, NY, USA, 2005. ACM Press.

[62] Jos Stam. Stable fluids. ACM Transactions on Graphics, 18(3):121–128, August 1999.

Special issue on Proceedings of SIGGRAPH 1999.

[63] Jos Stam. Flows on surfaces of arbitrary topology. In SIGGRAPH ’03: ACM SIG-

GRAPH 2003, pages 724–731, New York, NY, USA, 2003. ACM Press.

Page 118: Fluid Animation from Simulation on Tetrahedral Meshesdigitalassets.lib.berkeley.edu/techreports/ucb/text/EECS-2007-153.pdf · Fluid Animation from Simulation on Tetrahedral Meshes

106

[64] Dan Stora, Pierre-Olivier Agliati, Marie-Paule Cani, Fabrice Neyret, and Jean-

Dominique Gascuel. Animating lava flows. In Graphics Interface 99, pages 203–210,

June 1999.

[65] John A. Strain. Semi-Lagrangian methods for level set equations. Journal of Compu-

tational Physics, 151(2):498–533, May 1999.

[66] Adrien Treuille, Antoine McNamara, Zoran Popovic, and Jos Stam. Keyframe control

of smoke simulations. In ACM SIGGRAPH 2003, pages 716–723, New York, NY, USA,

2003. ACM Press.

[67] U. Trottenberg, C. W. Oosterlee, and A. Schuller. Multigrid. Academic Press, London,

2001.

[68] Joe Warren, Scott Schaefer, Anil N. Hirani, and Mathieu Desbrun. Barycentric coor-

dinates for convex sets. To appear in Advances in Computational and Applied Math-

ematics, 2004.

[69] Jeremy D. Wendt, William Baxter, Ipek Oguz, and Ming C. Lin. Finite volume flow

simulations on arbitrary domains. Graph. Models, 69(1):19–32, 2007.

[70] G. D. Yngve, J. F. O’Brien, and J. K. Hodgins. Animating explosions. ACM Transac-

tions on Graphics, 19(3):29–36, July 2000. Special issue on Proceedings of SIGGRAPH

2000.

[71] Yongning Zhu and Robert Bridson. Animating sand as a fluid. ACM Transactions on

Graphics, 24(3):965–972, August 2005. Special issue on Proceedings of SIGGRAPH

2005.