fluid animation - columbia university
TRANSCRIPT
![Page 1: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/1.jpg)
Fluid Animation
Christopher Batty
November 17, 2011
![Page 2: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/2.jpg)
What distinguishes fluids?
![Page 3: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/3.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/4.jpg)
Basic Theory
![Page 5: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/5.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/6.jpg)
Eulerian vs. Lagrangian
Consider an evolving temperature field.
• Lagrangian: Set of moving particles,
each with a temperature value.
![Page 7: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/7.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/8.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/9.jpg)
Time derivatives
Mathematically:
Chain
rule!
Definition
of 𝛻
Choose 𝜕𝑥
𝜕𝑡= 𝑢
𝐷
𝐷𝑡𝑇 𝑥 𝑡 , 𝑡 =
𝜕𝑇
𝜕𝑡+𝜕𝑇
𝜕𝑥
𝜕𝑥
𝜕𝑡
=𝜕𝑇
𝜕𝑡+ 𝛻𝑇 ∙
𝜕𝑥
𝜕𝑡
=𝜕𝑇
𝜕𝑡+ 𝒖 ∙ 𝛻𝑇
![Page 10: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/10.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/11.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/12.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/13.jpg)
Navier-Stokes
Density × Acceleration = Sum of Forces
𝜌𝐷𝒖
𝐷𝑡= 𝑭𝑖𝑖
Expanding the material derivative…
𝜌𝜕𝒖
𝜕𝑡= −𝜌 𝒖 ∙ 𝛻𝒖 + 𝑭𝑖
𝑖
![Page 14: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/14.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/15.jpg)
In full…
𝜌𝜕𝒖
𝜕𝑡= −𝜌 𝒖 ∙ 𝛻𝒖 + 𝑭𝑖
𝑖
Advection
Change in
velocity at a
fixed point
Forces
(pressure,
viscosity
gravity,…)
![Page 16: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/16.jpg)
Operator splitting
Break the equation into steps:
1. Advection: 𝜌𝜕𝒖
𝜕𝑡= −𝜌 𝒖 ∙ 𝛻𝒖
2. Pressure: 𝜌𝜕𝒖
𝜕𝑡= 𝑭𝑝𝑟𝑒𝑠𝑠𝑢𝑟𝑒
3. Viscosity: 𝜌𝜕𝒖
𝜕𝑡= 𝑭𝑣𝑖𝑠𝑐𝑜𝑠𝑖𝑡𝑦
4. External: 𝜌𝜕𝒖
𝜕𝑡= 𝑭𝑜𝑡ℎ𝑒𝑟
![Page 17: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/17.jpg)
1. Advection
![Page 18: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/18.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/19.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/20.jpg)
2. Pressure
![Page 21: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/21.jpg)
Pressure
What does pressure do?
– Enforces incompressibility.
Typical fluids (mostly) do not compress.
• Exceptions: high velocity, high pressure, …
![Page 22: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/22.jpg)
Incompressibility
Compressible
velocity field Incompressible
velocity field
![Page 23: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/23.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/24.jpg)
Incompressibility
𝒖 ∙ 𝒏𝜕Ω
= 0
By divergence theorem:
𝛁 ∙ 𝒖 = 0
But this is true for any region, so 𝛁 ∙ 𝒖 = 𝟎 everywhere.
![Page 25: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/25.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/26.jpg)
Helmholtz-Hodge Decomposition
= +
Input Velocity field Curl-Free
(irrotational)
Divergence-Free
(incompressible)
𝑢 = 𝛻𝑝 + 𝛻 × 𝜑
𝑢𝑜𝑙𝑑 = 𝐹𝑝𝑟𝑒𝑠𝑠𝑢𝑟𝑒 + 𝑢𝑛𝑒𝑤
![Page 27: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/27.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/28.jpg)
3. Viscosity
[Carlson et al.
2003]
![Page 29: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/29.jpg)
Viscosity
What characterizes a viscous liquid?
• “Thick”, damped behaviour
• Higher resistance to flow
Watch viscous honey clip
![Page 30: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/30.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/31.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/32.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/33.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/34.jpg)
Viscosity
Imagine fluid particles with general velocities.
Each particle interacts with nearby neighbours, exchanging momentum.
![Page 35: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/35.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/36.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/37.jpg)
4. External Forces
![Page 38: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/38.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/39.jpg)
Numerical Methods
![Page 40: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/40.jpg)
1. Advection
![Page 41: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/41.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/42.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/43.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/44.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/45.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/46.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/47.jpg)
2. Pressure
![Page 48: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/48.jpg)
Recall… Helmholtz-Hodge
Decomposition
= +
Input Velocity field Curl-Free
(irrotational)
Divergence-Free
(incompressible)
𝑢 = 𝛻𝑝 + 𝛻 × 𝜑
𝑢𝑜𝑙𝑑 = 𝐹𝑝𝑟𝑒𝑠𝑠𝑢𝑟𝑒 + 𝑢𝑛𝑒𝑤
![Page 49: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/49.jpg)
Pressure Projection - Derivation
(1) 𝜌𝜕𝒖
𝜕𝑡= −𝛻𝑝 and (2) 𝛻 ∙ 𝒖 = 0
Discretize (1) in time…
𝒖𝑛𝑒𝑤 = 𝒖𝑜𝑙𝑑 −∆𝑡
𝜌𝛻𝑝
Then plug into (2)…
𝛻 ∙ 𝒖𝑜𝑙𝑑 −∆𝑡
𝜌𝛻𝑝 = 0
![Page 50: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/50.jpg)
Pressure Projection
Implementation:
1) Solve a linear system for p: ∆𝑡
𝜌𝛻 ∙ 𝛻𝑝 = 𝛻 ∙ 𝒖𝑜𝑙𝑑
2) Update grid velocity with:
𝒖𝑛𝑒𝑤 = 𝒖𝑜𝑙𝑑 −∆𝑡
𝜌𝛻𝑝
![Page 51: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/51.jpg)
Implementation
Discretize with finite differences:
e.g., in 1D:
∆𝑡
𝜌
𝑝𝑖+1 − 𝑝𝑖∆𝑥
−𝑝𝑖 − 𝑝𝑖−1∆𝑥
∆𝑥=𝑢𝑖+1𝑜𝑙𝑑 − 𝑢𝑖
𝑜𝑙𝑑
∆𝑥
𝑝𝑖+1 𝑝𝑖−1 𝑝𝑖
𝑢𝑖+1 𝑢𝑖
∆𝑡
𝜌𝛻 ∙ 𝛻𝑝 = 𝛻 ∙ 𝒖𝑜𝑙𝑑
![Page 52: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/52.jpg)
Solid Boundary Conditions
52
𝒏
𝒖
Free Slip: 𝒖𝑛𝑒𝑤∙ 𝒏 = 0
![Page 53: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/53.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/54.jpg)
Why prefer staggered?
• Finite differences line up nicely.
– 𝑢 and 𝛻𝑝 match, 𝑝 and 𝛻 ∙ 𝑢 match
• …which improves stability!
𝑝𝑖+1 𝑝𝑖−1 𝑝𝑖
𝑢𝑖+1 𝑢𝑖
![Page 55: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/55.jpg)
3. Viscosity
[Carlson et al.
2003]
![Page 56: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/56.jpg)
Viscosity
PDE: 𝜌𝜕𝒖
𝜕𝑡= 𝜇𝛻 ∙ 𝛻𝒖
Use finite differences.
Discretized in time:
𝒖𝒏𝒆𝒘 = 𝒖𝑜𝑙𝑑 +∆𝑡𝜇𝜌𝛻 ∙ 𝛻𝒖∗
![Page 57: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/57.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/58.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/59.jpg)
Solid Boundary Conditions
59
No-Slip: 𝒖𝑛𝑒𝑤= 0
Watch no-slip clip
![Page 60: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/60.jpg)
4. External Forces
![Page 61: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/61.jpg)
Gravity
Discretized form is: 𝒖𝒏𝒆𝒘 = 𝒖𝑜𝑙𝑑 + ∆𝑡𝒈
Just add a downward acceleration to each
velocity, scaled by timestep.
![Page 62: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/62.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/63.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/64.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/65.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/66.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/67.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/68.jpg)
Liquids
![Page 69: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/69.jpg)
Liquids
What’s missing so far?
We need:
• A surface representation
• Boundary conditions at the surface
![Page 70: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/70.jpg)
The Big Picture
Velocity Solver
Advect Velocities
Add Viscosity
Add Gravity
Project Velocities
to be
Incompressible
![Page 71: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/71.jpg)
What about liquids?
Advect Velocities
Add Viscosity
Add Gravity
Project Velocities
to be
Incompressible
Surface Tracker
Velocity Solver
![Page 72: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/72.jpg)
Surface Tracker
Given: liquid surface geometry, velocity field,
timestep
Compute: new surface geometry by
advection.
𝑇𝑛
𝑇𝑛+1
𝒖𝑛
![Page 73: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/73.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/74.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/75.jpg)
Particles
[Zhu & Bridson 2005]
![Page 76: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/76.jpg)
Particles
Perform passive Lagrangian advection on
each particle.
For rendering, need to reconstruct a surface.
![Page 77: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/77.jpg)
Level sets
[Losasso et al.
2004]
![Page 78: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/78.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/79.jpg)
Volume of fluid
[Mullen et al 2007]
![Page 80: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/80.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/81.jpg)
Meshes
[Brochu et al 2010]
![Page 82: Fluid Animation - Columbia University](https://reader034.vdocument.in/reader034/viewer/2022051813/6282563a502bfd04f90b5f87/html5/thumbnails/82.jpg)
Meshes
Store a triangle mesh.
Advect its vertices, and correct for collisions.