fluid simulation
DESCRIPTION
Fluid Simulation. Contents. Introduction Diffusion Semi-Lagrangian advection Poisson Equation Implementation. Motivation. Fedkiw et al. 2001. Fluids in Computer Graphics. Fast Looks good Easy to code. Fluid Mechanics. Natural framework for fluid modeling - PowerPoint PPT PresentationTRANSCRIPT
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
Fluid SimulationFluid Simulation
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
ContentsContents
IntroductionIntroduction DiffusionDiffusion Semi-Lagrangian advectionSemi-Lagrangian advection Poisson EquationPoisson Equation ImplementationImplementation
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
MotivationMotivation
Fedkiw et al. 2001
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Fluids in Computer GraphicsFluids in Computer Graphics
FastFast Looks goodLooks good Easy to codeEasy to code
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Fluid MechanicsFluid Mechanics
Natural framework for fluid modeling Natural framework for fluid modeling Full Navier-Stokes Equations
Has a long historyHas a long history Reuse code/algorithms
Equations are hard to solveEquations are hard to solve Non-linear
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Application Application
Use velocity to move densitiesUse velocity to move densities
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Equations Equations
Density fieldDensity field
Velocity fieldVelocity field
ft
uuuu 2)(
Sut
2)(
0 u
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Finite Difference SchemeFinite Difference Scheme
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Equations Equations
Evolution of density (assume velocity known)
Over a time step...
Sut
2)(
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Equations Equations
Density changes in the direction of the flow
Sut
2)(
Evolution of density (assume velocity known)
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Equations Equations
Density diffuses over time
Sut
2)(
Evolution of density (assume velocity known)
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Equations Equations
Increases due to sources from the UI
Sut
2)(
Evolution of density (assume velocity known)
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
AlgorithmAlgorithm
Subdivide space into voxels
Velocity + density defined in the center of each voxel
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
AlgorithmAlgorithm
add source diffuse move
Sut
2)(
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Diffusing DensitiesDiffusing Densities
dt
Dn Dn+1
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Diffusing DensitiesDiffusing Densities
Exchange of density between neighbors
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Diffusing DensitiesDiffusing Densities
Exchange of density between neighbors
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Diffusing DensitiesDiffusing Densities
Dn+1i,j = Dn
i,j + k dt (Dn i-1,j + Dn
i+1,j + Dn i,j-1 + Dn
i,j+1 - 4Dn i,j)/h2
i-1,j
i,j-1
i,j
i,j+1
i+1,j
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
AlgorithmAlgorithm
add source diffuse move
Sut
2)(
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Moving DensitiesMoving Densities
Velocity known
dt
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Moving DensitiesMoving Densities
Finite differencesFinite differences Transfer only between neighbors Unstable with large time steps
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Semi-Lagrangian AdvectionSemi-Lagrangian Advection
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Semi-Lagrangian AdvectionSemi-Lagrangian Advection
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Semi-Lagrangian AdvectionSemi-Lagrangian Advection
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Semi-Lagrangian AdvectionSemi-Lagrangian Advection
Interpolate the density at new location
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Semi-Lagrangian AdvectionSemi-Lagrangian Advection
Set interpolated density at grid location
Requires two grids
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Computing VelocitiesComputing Velocities
Use same algorithms as for density
Velocity is moved by itself
ft
uuuu 2)(
Sut
2)(
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Moving VelocityMoving Velocity
Trace particle backwards in time
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Moving Velocity Moving Velocity
Interpolate the velocity at new location
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Moving VelocityMoving Velocity
Set interpolated velocity at grid location
Requires two grids
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Conservation of MassConservation of Mass
Inflow = Outflow
Ui+1,j - Ui-1,j + Vi,j+1 - Vi,j-1 = 0
0 u
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Poisson EquationPoisson Equation
Poisson EquationPoisson Equation
Step 1
Step 2
tp /2 u
}{
1}{
11 )(6)(ijkn
nnijkn
nn uut
ppp
)( 1}{}{
nnijktt
ijk ppt
uu
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
ImplementationImplementation
/* Running *//* Running */while(simulating)while(simulating){{
velocityfield.advect(dt);velocityfield += gravityfield*(densityfield*(dt*10.0f));fvelocityfield = velocityfield;fvelocityfield.removeDivergence();velocityfield = fvelocityfield;densityfield.advect(velocityfield, dt);
}}
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
Implicit DiffusionImplicit Diffusion
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Implicit DiffusionImplicit Diffusion
Explicit diffusionExplicit diffusion Dn+1
i,j = Dn i,j + k dt (Dn
i-1,j + Dn i+1,j + Dn
i,j-1 + Dn i,j+1 - 4Dn
i,j)/h2
Implicit diffusionImplicit diffusion Dn+1
i,j – k dt (Dn+1i-1,j+Dn+1
i+1,j+Dn+1i,j-1+Dn+1
i,j+1-4Dn+1 i,j)/h2 = Dn
i,j
A x = b
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Diffusing DensitiesDiffusing Densities
Linear solvers:
Gaussian elimination
Jacobi/SOR relaxation
FFT/cyclical reduction
Conjugate gradient
Multi-grid
Name Cost
N3
N2
N logN
N1.5
N
Comments
Use only for very small N (test code)
Use when no internal boundaries
Use when internal boundaries
Slower than FFT in practice. Hard to codewhen internal boundaries present
Easy to code but slow
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
Mass ConservationMass Conservation- Numerical Example-- Numerical Example-
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Given Velocity FieldGiven Velocity Field
P0P0 P1P1 P2P2
P3P3 P4P4 P5P5
P6P6 P7P7 P8P8
10.0f10.0f
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
Poisson EquationPoisson Equation
0
10
0
0
10
0
0
0
211
1311
121
1311
11411
113
121
113
8
7
6
5
4
3
2
1
p
p
p
p
p
p
p
p
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
SolutionSolution
0.00.0 0.410.41 0.00.0
-0.41-0.41 1.251.25 -0.41-0.41
-2.50-2.50 -4.58-4.58 -2.50-2.50
KUCG
Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity
http://kucg.korea.ac.krhttp://kucg.korea.ac.kr
SuperpositionSuperposition
5.835.83 10.0f10.0f++