# Smoothed Particle Hydrodynamics

Mechanics

Oct 24, 2013 (4 years and 6 months ago)

125 views

Real
-
time animation of low
-
Reynolds
-
number flow

using
Smoothed Particle Hydrodynamics

presentation by

Dominik

Seifert

B97902122

Visualization of my results

http://csie.ntu.edu.tw/~b97122/archive/fluid_dynamics/capt
ure.mp4

My code

http://csie.ntu.edu.tw/~b97122/archive/fluid_dynamics/Ope
nTissue_backup.rar

My motivation: From Dust

http

The framework

OpenTissue

OpenTissue

is an open source simulation framework
with a simple,
working SPH implementation

to their implementation

Their original implementation is described in this 88
page document:

Lagrangian

Fluid Dynamics Using Smoothed Particle
Hydrodynamics

Smoothed Particle Hydrodynamics

Quick review

Note
: SPH particles are not
actual particles
!

They are
really
fluid samples of constant
mass

Particles
are placed

inside a
container
to represent a
fluid

Every particle
is then assigned
a set of
initial
properties

After
every time step

(a few milliseconds),
update

the
properties

of all particles

Use
interpolation methods

to solve the
Navier
-
Stokes equation

to find
force contributions
, then
integrate to find new
velocity
and
position

SPH

Particle Properties

(
constant)

Minimum interaction distance

between particles

Mass (constant;
ensures Conservation of Mass
explicitly
)

Position (varying)

Surface normal (varying)

Velocity (varying)

Acceleration (varying)

Sum of external forces (varying)

Density (varying due to
constant mass
and
varying
volume
)

Pressure (varying
)

Viscosity (constant)

Smoothed Particle Hydrodynamics

Solver
pseudocode

Smoothed Particle Hydrodynamics

The pressure problem

Fluids cannot be accurately
incompressible

Pressure value approximated by
Ideal Gas Law:

k

called “
gas
-
stiffness

Entails assumptions of

Does not consider
weight pressure

Causes “
pulsing
” because of
lagging interplay
between
gravity

and
pressure force

Large gas
-
stiffness
can reduce/eliminate the lag and the
pulsing

Alternatively, take density to the power of
heat
capacity
ratio

But high pressure requires a
smaller time
-
step

and thus
makes the simulation
more expensive

My contributions I

Fluid
-
fluid interactions

In
OpenTissue
,
a system can be comprised of
only a single
fluid

I changed the code to support
more than one fluid

at a
time

The math and physics are mostly the same, except for:

Viscosity

Still
missing
:

Surface tension
interfaces between

fluids of
different polarity

But I still spent
three days
on

changing the framework due to

heavily
templated

C++ code

My contributions II

Fluid
-
solid interactions

In
OpenTissue

only supports
static
(immovable)
objects

that interact
with the fluid
, objects that can
float
,
sink
etc.

Solid dynamics
are very complicated!
What
are…

Tensile Strength?

Compressive Strength?

Young’s modulus?

I came up with an
intuitive

but
not quite correct
approach

My contributions II

Restoring force

Place an
invisible spring between
every
two
particles
that are close to each other initially

Store
the
initial distance

between every two
“neighboring” particles

spring force component
that contributes:

k * abs(
current_distance

original_distance
)

Works for
very few particles
,

but not for many

My contributions
III

Control Volumes
-

Overview

Control volumes are used in the analysis of fluid flow
phenomena

They are used to represent the
conservation laws in
integral form

Conservation of mass
over a given (control) volume
c.v.

with surface area
c.s
.
:

𝜌

= density;
u

= velocity;
n

= surface normal

My contributions
III

Control Volumes in SPH

Volume integrators

are easy: Simply accumulate all
contributions of all particles in volume

Area integrators

are trickier

Time derivative

can be obtained via
difference
quotients
:

for any property

Fluid properties at some point in the field
can be
obtained by
interpolation

My contributions III

Field evaluator function

ValueType

evaluate
(vector
pos
, real
ParticleProperty

A):

ParticleContainer

particles;

search(
pos
,
particles);

ValueType

res =
ValueType
(0);

foreach

particle p in particles:

real W =
DefaultKernel.evaluate
(
pos

-

p.position
);

res
+= (p
.*A)()
*
p.mass
/
p.density

* W;

return res;

This required me to change the
spatial
partioning

grid
to
support
queries at arbitrary locations

After that, I only had to implement the famous SPH field
evaluation template for some property
A
:

Translates to:

My contributions III

Area Integrator

Goal: Find average of property
at
discretely sampled
points

I went for an
evenly distributing

sampler

Aliasing
is not an issue, don’t need
random sampling

# of samples
ns

should be proportional to # of particles
that can fit into the surface:

So we get:

My contributions III

Disk Integrator

real
integrateDiskXZ
(real
ns
, vector2
p_center
, real
r
,
field_evalutor

f
):

real
q_total

= 0

real
ds

=
sqrt
(PI /
ns
) *
r

//

int

samples_in_diameter

=
sqrt
(ns * 4/PI)

//

vector2 min =
p_center

r

for (
int

i

= 0;
i

<
samples_in_diameter
;
i
++)

for (
int

j = 0; j <
samples_in_diameter
; j++)

vector2
pos

= (
min.x

+
i

*
ds
,
min.z

+ j *
ds
)

if (length(
pos

-

p_center
) >
r
) continue

q_total

+=
f
(
pos
)

return
q_total

/
ns

In this approach, every kind of surface needs their own
integrator

I only have to consider
disks

in my
pipe flow example

The
disk integrator

iterates over the cells of an
imaginary grid

that we lay over the disk to find the
average of fluid property
f

My contributions III

Area Integrator
-

Considerations

No
need to sample over an

set

Can use
spatial selection

Find all particles in distance
d

from the surface

Use
scaled smoothing kernel

I was not quite sure how to
mathematically scale the
kernel
, so I went for the sampling approach

I also used the integrator to place the
cylindrically
-
shaped fluid
inside the pipe

My contributions III

Conservation of mass

The integral form:

Becomes:

The first term is the
time derivative of Mass

inside
the c.v.

The second term is the
mass flux through the c.v.’s
surface area

Particle boundary deficiency,

Holes in the fluid and

Control Volume
-

Correctness

Boundary deficiency
:

Since
atmosphere
and
structure
are not represented in this
model, computations have to cope with a
pseudo
-
vacuum

(

)

Governing equations are adjusted to cope with the deficiency

e
.g.

Level set function

for surface tension considers:

I
nside fluid = 1

Outside fluid = 0

C.v.’s must always be
completely filled!

Fluid
volume

is
never correct
which causes “
holes
” in the
fluid

T
hink: What is the space between the particles/samples?

C.v. computations can also
never be 100% correct
!

Bibliography

[
1]
OpenTissue

@
http://www.opentissue.org/

OpenTissue

is a collection of generic algorithms and

data
structures for rapid development of
interactive
modeling and simulation
.

[2] Smoothed Particle Hydrodynamics

A
Meshfree

Particle
Method (book)

[3]
Lagrangian

Fluid Dynamics Using Smoothed
Particle Hydrodynamics

[4] Particle
-
Based Fluid
-
Fluid
Interaction

Summary

Given high enough
gas stiffness
, SPH model is OK to
simulate
visually appealing real
-
time flow
but is
quite
inaccurate

OpenTissue

SPH implementation is
not very mature
,
lacks a lot of features

I really miss:

Accurate pressure values

Correct fluid
-
solid interaction

Arbitrary geometry

I still cannot create
real
-
time interactive applications
involving fluid flow but it was still an
insightful
endeavour
.

What’s next?

Surface rendering
until next week

Then choose one from the list…

Improve SPH implementation

generic

surfaces

(currently

only

supports

implicit

primitives
)

Make it

(choose sample size dynamically)

Learn
solid dynamics
and work on
Fluid
-
Structure interaction

More work on
surface rendering

Optimized

OpenGL/DX/XNA implementation that runs on the
GPU

Work on
Computational Galactic Dynamics (

)

with professor

from
the Institute of
Astronomy

(

)

Simulation of
dark matter
&
fluid

during
galaxy formation

Work on
level sets and the level set method in CFD

with professor Yi
-
Ju

from
the Institute of Applied
Mechanics (

)