82
Fluid Animation Christopher Batty November 17, 2011

Fluid Animation - Columbia University

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fluid Animation - Columbia University

Fluid Animation

Christopher Batty

November 17, 2011

Page 2: Fluid Animation - Columbia University

What distinguishes fluids?

Page 3: Fluid Animation - Columbia University

What distinguishes fluids?

• No “preferred” shape

• Always flows when force is applied

• Deforms to fit its container

• Internal forces depend on velocities, not

displacements

Watch fluid simulation clips

Page 4: Fluid Animation - Columbia University

Basic Theory

Page 5: Fluid Animation - Columbia University

Eulerian vs. Lagrangian

Lagrangian: Point of reference moves with

the material.

Eulerian: Point of reference is stationary.

e.g. Weather balloon (Lagrangian) vs.

weather station on the ground (Eulerian)

Page 6: Fluid Animation - Columbia University

Eulerian vs. Lagrangian

Consider an evolving temperature field.

• Lagrangian: Set of moving particles,

each with a temperature value.

Page 7: Fluid Animation - Columbia University

Eulerian vs. Lagrangian

Consider an evolving temperature field.

• Eulerian: A fixed grid of temperature

values, that temperature flows through.

Page 8: Fluid Animation - Columbia University

Consider the temperature 𝑇(𝑥, 𝑡) at a point following a given path, 𝑥(𝑡).

Two ways temperature changes: 1. Heating/cooling occurs at the current point.

2. Following the path, the point moves to a cooler/warmer location.

Relating Eulerian and Lagrangian

𝑥(𝑡0)

𝑥(𝑡1) 𝑥(𝑡𝑛𝑜𝑤)

Page 9: Fluid Animation - Columbia University

Time derivatives

Mathematically:

Chain

rule!

Definition

of 𝛻

Choose 𝜕𝑥

𝜕𝑡= 𝑢

𝐷

𝐷𝑡𝑇 𝑥 𝑡 , 𝑡 =

𝜕𝑇

𝜕𝑡+𝜕𝑇

𝜕𝑥

𝜕𝑥

𝜕𝑡

=𝜕𝑇

𝜕𝑡+ 𝛻𝑇 ∙

𝜕𝑥

𝜕𝑡

=𝜕𝑇

𝜕𝑡+ 𝒖 ∙ 𝛻𝑇

Page 10: Fluid Animation - Columbia University

Material Derivative

This is called the material derivative, and

denoted 𝐷

𝐷𝑡 .

Change at the

current (fixed) point.

𝐷𝑇

𝐷𝑡=𝜕𝑇

𝜕𝑡+ 𝒖𝛻𝑇

Change due

to movement.

Change at a point moving

with the velocity field.

Page 11: Fluid Animation - Columbia University

Advection

To track a quantity T simply moving (passively) through a velocity field:

This is the advection equation.

Think of colored dye or massless particles drifting around in fluid.

𝐷𝑇

𝐷𝑡= 0

𝜕𝑇

𝜕𝑡+ 𝒖𝛻𝑇 = 0 or equivalently

Watch dye in fluid clip

Page 12: Fluid Animation - Columbia University

Equations of Motion

• For general materials, we have Newton’s

second law: F = ma.

• Specialized for fluids:

“Navier-Stokes Equations”

Page 13: Fluid Animation - Columbia University

Navier-Stokes

Density × Acceleration = Sum of Forces

𝜌𝐷𝒖

𝐷𝑡= 𝑭𝑖𝑖

Expanding the material derivative…

𝜌𝜕𝒖

𝜕𝑡= −𝜌 𝒖 ∙ 𝛻𝒖 + 𝑭𝑖

𝑖

Page 14: Fluid Animation - Columbia University

What are the forces on a fluid? Primarily for now:

• Pressure

• Viscosity

• Simple “external” forces – (e.g. gravity, buoyancy, user forces)

Also:

• Surface tension

• Coriolis

• Possibilities for more exotic fluid types: – Elasticity (e.g. silly putty)

– Shear thickening / thinning (e.g. “oobleck”, ketchup)

– Electromagnetic forces

• Sky’s the limit... Watch oobleck clip

Page 15: Fluid Animation - Columbia University

In full…

𝜌𝜕𝒖

𝜕𝑡= −𝜌 𝒖 ∙ 𝛻𝒖 + 𝑭𝑖

𝑖

Advection

Change in

velocity at a

fixed point

Forces

(pressure,

viscosity

gravity,…)

Page 16: Fluid Animation - Columbia University

Operator splitting

Break the equation into steps:

1. Advection: 𝜌𝜕𝒖

𝜕𝑡= −𝜌 𝒖 ∙ 𝛻𝒖

2. Pressure: 𝜌𝜕𝒖

𝜕𝑡= 𝑭𝑝𝑟𝑒𝑠𝑠𝑢𝑟𝑒

3. Viscosity: 𝜌𝜕𝒖

𝜕𝑡= 𝑭𝑣𝑖𝑠𝑐𝑜𝑠𝑖𝑡𝑦

4. External: 𝜌𝜕𝒖

𝜕𝑡= 𝑭𝑜𝑡ℎ𝑒𝑟

Page 17: Fluid Animation - Columbia University

1. Advection

Page 18: Fluid Animation - Columbia University

Advection

Previously, we considered advection of a passive scalar quantity, 𝑇, by velocity 𝒖.

In Navier-Stokes we saw:

Velocity 𝒖 is advected by itself!

𝜕𝒖

𝜕𝑡= −𝒖 ∙ 𝛻𝒖

𝜕𝑇

𝜕𝑡= −𝒖 ∙ 𝛻𝑇

Page 19: Fluid Animation - Columbia University

Advection

i.e., The scalar components 𝑢, 𝑣 of the

vector 𝒖 are each advected in the same

way.

We can reuse the same numerical method.

Page 20: Fluid Animation - Columbia University

2. Pressure

Page 21: Fluid Animation - Columbia University

Pressure

What does pressure do?

– Enforces incompressibility.

Typical fluids (mostly) do not compress.

• Exceptions: high velocity, high pressure, …

Page 22: Fluid Animation - Columbia University

Incompressibility

Compressible

velocity field Incompressible

velocity field

Page 23: Fluid Animation - Columbia University

Incompressibility

Intuitively, net flow into/out of a given region is zero (no sinks/sources).

Integrate the flow across the boundary of a closed region:

𝒖 ∙ 𝒏𝜕Ω

= 0

𝒏

Page 24: Fluid Animation - Columbia University

Incompressibility

𝒖 ∙ 𝒏𝜕Ω

= 0

By divergence theorem:

𝛁 ∙ 𝒖 = 0

But this is true for any region, so 𝛁 ∙ 𝒖 = 𝟎 everywhere.

Page 25: Fluid Animation - Columbia University

Pressure

How does pressure enter in? – Pressure is the force required to ensure that

𝛻 ∙ 𝒖 = 0.

– Pressure force has the following form:

𝑭𝑝 = −𝛻𝑝

Page 26: Fluid Animation - Columbia University

Helmholtz-Hodge Decomposition

= +

Input Velocity field Curl-Free

(irrotational)

Divergence-Free

(incompressible)

𝑢 = 𝛻𝑝 + 𝛻 × 𝜑

𝑢𝑜𝑙𝑑 = 𝐹𝑝𝑟𝑒𝑠𝑠𝑢𝑟𝑒 + 𝑢𝑛𝑒𝑤

Page 27: Fluid Animation - Columbia University

Aside: Pressure as Lagrange Multiplier

Interpret as an optimization:

Find the closest 𝒖𝑛𝑒𝑤 to 𝒖𝑜𝑙𝑑 where 𝛻 ∙ 𝒖𝑛𝑒𝑤 = 0

min𝒖𝑛𝑒𝑤𝒖𝑛𝑒𝑤 − 𝒖𝑜𝑙𝑑

s. t. 𝛻 ∙ 𝒖𝑛𝑒𝑤 = 0

A Lagrange multiplier to enforce the

constraint is exactly pressure.

Page 28: Fluid Animation - Columbia University

3. Viscosity

[Carlson et al.

2003]

Page 29: Fluid Animation - Columbia University

Viscosity

What characterizes a viscous liquid?

• “Thick”, damped behaviour

• Higher resistance to flow

Watch viscous honey clip

Page 30: Fluid Animation - Columbia University

Viscosity

Loss of energy due to internal friction between molecules moving at different velocities.

Interactions between molecules in different layers causes shear stress that…

• acts to oppose relative motion.

• causes an exchange of momentum

Page 31: Fluid Animation - Columbia University

Viscosity

Loss of energy due to internal friction between molecules moving at different velocities.

Interactions between molecules in different layers causes shear stress that…

• acts to oppose relative motion.

• causes an exchange of momentum

Page 32: Fluid Animation - Columbia University

Viscosity

Loss of energy due to internal friction between molecules moving at different velocities.

Interactions between molecules in different layers causes shear stress that…

• acts to oppose relative motion.

• causes an exchange of momentum

Page 33: Fluid Animation - Columbia University

Viscosity

Loss of energy due to internal friction between molecules moving at different velocities.

Interactions between molecules in different layers causes shear stress that…

• acts to oppose relative motion.

• causes an exchange of momentum

Page 34: Fluid Animation - Columbia University

Viscosity

Imagine fluid particles with general velocities.

Each particle interacts with nearby neighbours, exchanging momentum.

Page 35: Fluid Animation - Columbia University

Viscosity

Amount of momentum exchanged is proportional to:

• Velocity gradient, 𝛻𝒖.

• Viscosity coefficient, 𝜇

For any closed region, net in/out flow of momentum:

𝜇𝛻𝒖 ∙ 𝒏 = 𝜇𝛁 ∙ 𝛁𝒖𝜕Ω

So the viscosity force is: 𝑭𝑣𝑖𝑠𝑐𝑜𝑠𝑖𝑡𝑦 = 𝜇𝛁 ∙ 𝛁𝒖

Page 36: Fluid Animation - Columbia University

Viscosity

The end result is a smoothing of the velocity.

This is exactly the action of the Laplacian

operator, 𝛁 ∙ 𝛁.

For scalar quantities, the same operator is

used to model diffusion.

Page 37: Fluid Animation - Columbia University

4. External Forces

Page 38: Fluid Animation - Columbia University

External Forces

Any other forces you may want.

• Simplest is gravity:

– 𝐹𝑔 = 𝜌𝒈 for 𝒈 = (0,−9.81)

• Buoyancy models are similar,

– e.g., 𝐹𝑏 = 𝛽(𝑇𝑐𝑢𝑟𝑟𝑒𝑛𝑡 − 𝑇𝑟𝑒𝑓)𝒈

Page 39: Fluid Animation - Columbia University

Numerical Methods

Page 40: Fluid Animation - Columbia University

1. Advection

Page 41: Fluid Animation - Columbia University

Advection of a Scalar

• First, we’ll consider advecting a scalar

quantity, 𝜑.

– temperature, color, smoke density, …

• The grid stores 𝜑 and 𝒖.

Page 42: Fluid Animation - Columbia University

Eulerian

Approximate derivatives with finite differences. 𝜕𝜑

𝜕𝑡+ 𝒖 ∙ 𝛻𝜑 = 0

FTCS = Forward Time, Centered Space:

𝜑𝑖𝑛+1 − 𝜑𝑖

𝑛

∆𝑡+ 𝑢𝜑𝑖+1

𝑛 − 𝜑𝑖−1𝑛

2∆𝑥= 0

Unconditionally

Unstable!

Conditionally

Stable!

Lax:

𝜑𝑖𝑛+1 − (𝜑𝑖+1

𝑛 + 𝜑𝑖−1𝑛)/2

∆𝑡+ 𝑢𝜑𝑖+1

𝑛 − 𝜑𝑖−1𝑛

2∆𝑥= 0

Many possible methods, stability can be a challenge.

Page 43: Fluid Animation - Columbia University

Lagrangian

• Advect data forward from grid points by integrating position according to grid velocity.

• Problem: New data position doesn’t necessarily land on a grid point.

?

Page 44: Fluid Animation - Columbia University

Semi-Lagrangian

• Look backwards in time from grid points,

to see where data is coming from.

• Interpolate data at previous time.

Page 45: Fluid Animation - Columbia University

Semi-Lagrangian - Details

1. Determine velocity 𝒖𝑖,𝑗 at grid point,.

2. Integrate position for a timestep of −∆𝑡.

e.g. 𝑥𝑏𝑎𝑐𝑘 = 𝑥𝑖,𝑗 − ∆𝑡𝒖𝑖,𝑗

3. Interpolate 𝜑 at 𝑥𝑏𝑎𝑐𝑘, call it 𝜑𝑏𝑎𝑐𝑘.

4. Assign 𝜑𝑖,𝑗 = 𝜑𝑏𝑎𝑐𝑘 for the next time.

Unconditionally stable!

Page 46: Fluid Animation - Columbia University

Advection of Velocity

• This is great for scalars. What about velocity advection?

• Same method: – Trace back with current velocity

– Interpolate velocity (component) at that point

– Assign it to the grid point at the new time.

• Caution: Do not overwrite the velocity field you’re using to trace back!

𝜕𝒖

𝜕𝑡= −𝒖 ∙ 𝛻𝒖

Page 47: Fluid Animation - Columbia University

2. Pressure

Page 48: Fluid Animation - Columbia University

Recall… Helmholtz-Hodge

Decomposition

= +

Input Velocity field Curl-Free

(irrotational)

Divergence-Free

(incompressible)

𝑢 = 𝛻𝑝 + 𝛻 × 𝜑

𝑢𝑜𝑙𝑑 = 𝐹𝑝𝑟𝑒𝑠𝑠𝑢𝑟𝑒 + 𝑢𝑛𝑒𝑤

Page 49: Fluid Animation - Columbia University

Pressure Projection - Derivation

(1) 𝜌𝜕𝒖

𝜕𝑡= −𝛻𝑝 and (2) 𝛻 ∙ 𝒖 = 0

Discretize (1) in time…

𝒖𝑛𝑒𝑤 = 𝒖𝑜𝑙𝑑 −∆𝑡

𝜌𝛻𝑝

Then plug into (2)…

𝛻 ∙ 𝒖𝑜𝑙𝑑 −∆𝑡

𝜌𝛻𝑝 = 0

Page 50: Fluid Animation - Columbia University

Pressure Projection

Implementation:

1) Solve a linear system for p: ∆𝑡

𝜌𝛻 ∙ 𝛻𝑝 = 𝛻 ∙ 𝒖𝑜𝑙𝑑

2) Update grid velocity with:

𝒖𝑛𝑒𝑤 = 𝒖𝑜𝑙𝑑 −∆𝑡

𝜌𝛻𝑝

Page 51: Fluid Animation - Columbia University

Implementation

Discretize with finite differences:

e.g., in 1D:

∆𝑡

𝜌

𝑝𝑖+1 − 𝑝𝑖∆𝑥

−𝑝𝑖 − 𝑝𝑖−1∆𝑥

∆𝑥=𝑢𝑖+1𝑜𝑙𝑑 − 𝑢𝑖

𝑜𝑙𝑑

∆𝑥

𝑝𝑖+1 𝑝𝑖−1 𝑝𝑖

𝑢𝑖+1 𝑢𝑖

∆𝑡

𝜌𝛻 ∙ 𝛻𝑝 = 𝛻 ∙ 𝒖𝑜𝑙𝑑

Page 52: Fluid Animation - Columbia University

Solid Boundary Conditions

52

𝒏

𝒖

Free Slip: 𝒖𝑛𝑒𝑤∙ 𝒏 = 0

Page 53: Fluid Animation - Columbia University

Staggered vs. Non-staggered

• Two choices for grids:

– Velocity and pressure co-located

– Velocity and pressure staggered

𝑝𝑖+1 𝑝𝑖−1 𝑝𝑖

𝑝𝑖+1 𝑝𝑖−1 𝑝𝑖

𝑢𝑖+1 𝑢𝑖

𝑢𝑖+1 𝑢𝑖 𝑢𝑖−1

Page 54: Fluid Animation - Columbia University

Why prefer staggered?

• Finite differences line up nicely.

– 𝑢 and 𝛻𝑝 match, 𝑝 and 𝛻 ∙ 𝑢 match

• …which improves stability!

𝑝𝑖+1 𝑝𝑖−1 𝑝𝑖

𝑢𝑖+1 𝑢𝑖

Page 55: Fluid Animation - Columbia University

3. Viscosity

[Carlson et al.

2003]

Page 56: Fluid Animation - Columbia University

Viscosity

PDE: 𝜌𝜕𝒖

𝜕𝑡= 𝜇𝛻 ∙ 𝛻𝒖

Use finite differences.

Discretized in time:

𝒖𝒏𝒆𝒘 = 𝒖𝑜𝑙𝑑 +∆𝑡𝜇𝜌𝛻 ∙ 𝛻𝒖∗

Page 57: Fluid Animation - Columbia University

Viscosity – Time Integration

𝒖𝒏𝒆𝒘 = 𝒖𝑜𝑙𝑑 +∆𝑡𝜇𝜌 𝛻 ∙ 𝛻𝒖∗

Explicit integration, let 𝒖∗ be 𝒖𝑜𝑙𝑑: – Just estimate ∆𝑡𝜇

𝜌𝛻 ∙ 𝛻𝒖𝑜𝑙𝑑

– Add to current 𝒖. – Very unstable.

Implicit integration, let 𝒖∗ be 𝒖𝑛𝑒𝑤: – Stable for high viscosities.

– Need to solve a system of equations.

Page 58: Fluid Animation - Columbia University

Viscosity – Implicit Integration

Solve for 𝒖𝒏𝒆𝒘:

𝒖𝒏𝒆𝒘 −∆𝑡𝜇𝜌𝛻 ∙ 𝛻𝒖𝑛𝑒𝑤 = 𝒖𝑜𝑙𝑑

Apply separately for each velocity component.

e.g. in 1D:

𝑢𝑖 −∆𝑡𝜇

𝜌

𝑢𝑖+1 − 𝑢𝑖∆𝑥

−𝑢𝑖 − 𝑢𝑖−1∆𝑥

∆𝑥= 𝑢𝑖𝑜𝑙𝑑

𝑢𝑖+1 𝑢𝑖−1 𝑢𝑖

Page 59: Fluid Animation - Columbia University

Solid Boundary Conditions

59

No-Slip: 𝒖𝑛𝑒𝑤= 0

Watch no-slip clip

Page 60: Fluid Animation - Columbia University

4. External Forces

Page 61: Fluid Animation - Columbia University

Gravity

Discretized form is: 𝒖𝒏𝒆𝒘 = 𝒖𝑜𝑙𝑑 + ∆𝑡𝒈

Just add a downward acceleration to each

velocity, scaled by timestep.

Page 62: Fluid Animation - Columbia University

Gravity

• Note: in a closed fluid-filled container,

gravity (alone) won’t do anything!

– Incompressibility cancels it out. – (Assuming constant density)

Start After gravity step After pressure step

Page 63: Fluid Animation - Columbia University

Simple Buoyancy

Look up 𝑇𝑐𝑢𝑟𝑟𝑒𝑛𝑡 at grid point,

increment velocity based on difference

from a reference velocity.

𝒖𝒏𝒆𝒘 = 𝒖𝑜𝑙𝑑 + ∆𝑡𝛽 𝑇𝑐𝑢𝑟𝑟𝑒𝑛𝑡 − 𝑇𝑟𝑒𝑓 𝒈

𝛽 dictates the strength of the

buoyancy force.

See paper for a more elaborate model:

“Visual simulation of smoke”, 2001.

Page 64: Fluid Animation - Columbia University

User Forces

Add whatever additional forces we want,

such as:

• near the mouse when the user clicks

• Paddle forces in Plasma Pong

Watch clip

Page 65: Fluid Animation - Columbia University

Ordering of Steps

Order turns out to be important.

Why?

1) Incompressibility is not guaranteed at

intermediate steps

2) Advecting with a compressible field

causes volume/material loss or gain!

Page 66: Fluid Animation - Columbia University

Ordering of Steps

Consider advection in this field:

Best ordering

1) Advection

2) Viscosity

3) Add Forces

4) Make incompressible (Pressure)

Page 67: Fluid Animation - Columbia University

Useful References

• Robert Bridson’s SIGGRAPH 2007 Fluid

Course notes: http://www.cs.ubc.ca/~rbridson/fluidsimulation/

• “Stable Fluids” [Stam 1999]

• “Real-Time Stable Fluid Dynamics for

Games” [Stam, 2003]

Page 68: Fluid Animation - Columbia University

Liquids

Page 69: Fluid Animation - Columbia University

Liquids

What’s missing so far?

We need:

• A surface representation

• Boundary conditions at the surface

Page 70: Fluid Animation - Columbia University

The Big Picture

Velocity Solver

Advect Velocities

Add Viscosity

Add Gravity

Project Velocities

to be

Incompressible

Page 71: Fluid Animation - Columbia University

What about liquids?

Advect Velocities

Add Viscosity

Add Gravity

Project Velocities

to be

Incompressible

Surface Tracker

Velocity Solver

Page 72: Fluid Animation - Columbia University

Surface Tracker

Given: liquid surface geometry, velocity field,

timestep

Compute: new surface geometry by

advection.

𝑇𝑛

𝑇𝑛+1

𝒖𝑛

Page 73: Fluid Animation - Columbia University

Surface Tracker

Ideally:

• Efficient

• Accurate

• Handles merging/splitting (topology changes)

• Conserves volume

• Retains small features

• Smooth surface for rendering

• Provides convenient geometric operations

• Easy to implement…

Very hard (impossible?) to do all of these at once.

Page 74: Fluid Animation - Columbia University

Surface Tracking Options

1. Particles

2. Level sets

3. Volume-of-fluid (VOF)

4. Triangle meshes

5. Hybrids (many of these)

Page 75: Fluid Animation - Columbia University

Particles

[Zhu & Bridson 2005]

Page 76: Fluid Animation - Columbia University

Particles

Perform passive Lagrangian advection on

each particle.

For rendering, need to reconstruct a surface.

Page 77: Fluid Animation - Columbia University

Level sets

[Losasso et al.

2004]

Page 78: Fluid Animation - Columbia University

Level sets Each grid point stores signed distance to the

surface (inside <= 0, outside > 0).

Surface is interpolated zero isocontour.

> 0

<= 0

Page 79: Fluid Animation - Columbia University

Volume of fluid

[Mullen et al 2007]

Page 80: Fluid Animation - Columbia University

Volume-Of-Fluid

Each cell stores fraction f ϵ 0,1 indicating

how empty/full it is.

Surface is transition region, f ≈ 0.5.

0

0

0

0

0

0

0

0

0

0

0

0.4

0.4

0

0

0.

8

1

1

0.8

0.5

1

1

1

1

1

1

1

1

1

1

Page 81: Fluid Animation - Columbia University

Meshes

[Brochu et al 2010]

Page 82: Fluid Animation - Columbia University

Meshes

Store a triangle mesh.

Advect its vertices, and correct for collisions.