fluid simulation

42
tp://kucg.korea.ac.kr tp://kucg.korea.ac.kr Graphics Lab @ Korea Graphics Lab @ Korea University University Fluid Simulation Fluid Simulation

Upload: maya-dillon

Post on 31-Dec-2015

29 views

Category:

Documents


0 download

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 Presentation

TRANSCRIPT

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++

KUCG

Graphics Lab @ Korea Graphics Lab @ Korea UniversityUniversity

http://kucg.korea.ac.krhttp://kucg.korea.ac.kr

Divergence-Free Velocity FieldDivergence-Free Velocity Field