Realtime animation of lowReynoldsnumber flow using Smoothed Particle Hydrodynamics presentation by 薛德 明 Dominik Seifert B97902122 Visualization of my results httpcsientuedutwb97122archivefluiddynamicscapturemp4 ID: 310515
Download Presentation The PPT/PDF document "Computational Fluid Dynamics" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Computational Fluid Dynamics
Real-time animation of low-Reynolds-number flow
using
Smoothed Particle Hydrodynamics
presentation by
薛德
明
Dominik
Seifert
B97902122Slide2
Visualization of my results
http://csie.ntu.edu.tw/~b97122/archive/fluid_dynamics/capture.mp4
My code
http://csie.ntu.edu.tw/~b97122/archive/fluid_dynamics/OpenTissue_backup.rar
My motivation: From Dust
http
://www.youtube.com/watch?v=CfKQCAxizrASlide3
The framework
OpenTissue
OpenTissue
is an open source simulation framework with a simple,
working SPH implementationI added some features to their implementationTheir original implementation is described in this 88 page document:“Lagrangian
Fluid Dynamics Using Smoothed Particle Hydrodynamics”Slide4
Smoothed Particle Hydrodynamics
Quick review
Note
: SPH particles are not
actual particles!They are really fluid samples of constant massParticles are placed
inside a container to represent a fluidEvery particle is then assigned a set of initial propertiesAfter every time step (a few milliseconds), update the properties of all particlesUse interpolation methods to solve the Navier-Stokes equation to find force contributions, then integrate to find new velocity and positionSlide5
SPH
Particle Properties
Support Radius
(
constant)Minimum interaction distance between particlesMass (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)Slide6
Smoothed Particle Hydrodynamics
Solver
pseudocodeSlide7
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 stateDoes not consider weight pressureCauses “pulsing” because of lagging interplay between gravity and pressure forceLarge gas-stiffness can reduce/eliminate the lag and the pulsingAlternatively, take density to the power of heat capacity ratioBut high pressure requires a smaller time-step and thus makes the simulation more expensiveSlide8
My contributions I
Fluid-fluid interactions
In
OpenTissue
, a system can be comprised of only a single fluidI changed the code to support more than one fluid at a timeThe math and physics are mostly the same, except for:
ViscosityKernel support radiusStill missing:Surface tension interfaces between fluids of different polarityBut I still spent three days on changing the framework due to heavily templated C++ codeSlide9
My contributions II
Fluid-solid interactions
In
OpenTissue
only supports static (immovable) objectsI 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 approachSlide10
My contributions II
Restoring force
Place an
invisible spring between
every two particles that are close to each other initiallyStore the initial distance between every two “neighboring” particlesAdd a new spring force component
that contributes: k * abs(current_distance – original_distance) Works for very few particles, but not for manySlide11
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 Slide12
My contributions III
Control Volumes in SPH
Volume integrators
are easy: Simply accumulate all contributions of all particles in volume
Area integrators are trickierTime derivative can be obtained via difference quotients: for any property
Fluid properties at some point in the field can be obtained by interpolationSlide13
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:Slide14
My contributions III
Area Integrator
Goal: Find average of property
at
discretely sampled pointsI went for an evenly distributing samplerAliasing 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:Slide15
My contributions III
Disk Integrator
real
integrateDiskXZ
(real ns
, vector2 p_center, real r, field_evalutor f):real q_total = 0real 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 integratorI only have to consider disks in my pipe flow exampleThe disk integrator iterates over the cells of an imaginary grid that we lay over the disk to find the average of fluid property fSlide16
My contributions III
Area Integrator - Considerations
No
need to sample over an
already sampled setCan use spatial selection instead:Find all particles in distance d
from the surfaceUse scaled smoothing kernel to add up contributionsI was not quite sure how to mathematically scale the kernel, so I went for the sampling approachI also used the integrator to place the cylindrically-shaped fluid inside the pipeSlide17
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 areaSlide18
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 deficiencye.g. Level set function for surface tension considers:Inside fluid = 1Outside fluid = 0C.v.’s must always be completely filled!Fluid volume is never correct which causes “holes” in the fluid Think: What is the space between the particles/samples?C.v. computations can also never be 100% correct!Slide19
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 InteractionSlide20
Summary
Given high enough
gas stiffness
, SPH model is OK to simulate visually appealing real-time flow
but is quite inaccurateOpenTissue SPH implementation is not very mature, lacks a lot of featuresI really miss:
Accurate pressure valuesCorrect fluid-solid interactionArbitrary geometryI still cannot create real-time interactive applications involving fluid flow but it was still an insightful endeavour.Slide21
What’s next?
Surface rendering
until next week
Then choose one from the list…
Improve SPH implementationAdd generic surfaces (currently only
supports implicit primitives)Make it adaptive (choose sample size dynamically)Learn solid dynamics and work on Fluid-Structure interactionMore work on surface renderingOptimized OpenGL/DX/XNA implementation that runs on the GPUWork on Computational Galactic Dynamics (計算星系動力學)with professor 闕志鴻 from the Institute of Astronomy (天文所)Simulation of dark matter & fluid during galaxy formationWork on level sets and the level set method in CFD with professor Yi-Ju
周 from the Institute of Applied Mechanics (應力所)