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
://www.youtube.com/watch?v=CfKQCAxizrA
The framework
OpenTissue
OpenTissue
is an open source simulation framework
with a simple,
working SPH implementation
I added some features
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
Support Radius
(
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
gas in steady state
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
Kernel support radius
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
I wanted to add the ability to add 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
Add a new
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
radius,
ParticleProperty
A):
ParticleContainer
particles;
search(
pos
,
radius,
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
already sampled
set
Can use
spatial selection
instead:
Find all particles in distance
d
from the surface
Use
scaled smoothing kernel
to add up contributions
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
Add
generic
surfaces
(currently
only
supports
implicit
primitives
)
Make it
adaptive
(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 (
應力所
)
Enter the password to open this PDF file:
File name:

File size:

Title:

Author:

Subject:

Keywords:

Creation Date:

Modification Date:

Creator:

PDF Producer:

PDF Version:

Page Count:

Preparing document for printing…
0%
Comments 0
Log in to post a comment