Skip to content

ZiqiGan/SPH

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

UCSD CSE 291D SP19

Author: Ziqi Gan

Project: Particle Based Fluids

Features

This project implements:

Basic SPH Solver

  • Algorithm 1 from "SPH Fluids in Computer Graphics"
  • Calculate pressure force explicitly with state equations.
For all particles:
  Find neighbors
For all particles:
  compute density
For all particles:
  compute presssure force
  compute viscosity force
  compute other forces (e.g. gravity)
  add them up
For all particles:
  update velocity
  update position
  • Pros: Easy to implement.
  • Cons:
    • Unstable
    • Small time step.

Acceleration Structure

For faster neighborhood search I implemented a uniform grid.

  • The simulation space is divided into small cubic cells.
  • Each particle is associated with one of the cells.
  • The cell length equals to the support radius of the kernel.
  • For each particle, loop through 3^3 = 27 cells to find all its neighbors.

Divergence Free Solver

  • Solve pressure force implicitly.
  • Predict particle velocities with non-pressure forces and iteratively correct density and divergence error.
  • Divergence free solver is used to correct velocity field.
  • Constant density solver to correct numerical errors.
  • Simulation Step:
For all particles:
  find neighbors
For all particles:
  calculate densities and some factors

while(t < t_max):
  For all particles:
    calculate non-pressure forces.
  Calculate adaptive time step using CFL condition
  For all particles:
    predict velocities with calculated time step
  correct density error
  For all particles:
    predict position
  For all particles:
    find neighbors
  For all particles:
    calulate densities and some factors
  Correct divergence error
  For all particles:
    update velocities
  • Pros:
    • Stable
    • Adaptive time step for faster update
  • Cons:
    • Difficult to implement. Have to set up initial conditions carefully.

High Viscosity Fluid

The DFSPH paper also introduces an implicit viscosity solver.

  • Viscosity tensor is defined by the strain rate tensor and the viscosity coefficient.
  • Similar approach as the divergence and density solver.
  • Iteratively compute the predicted strain rate, comparing it with the target strain rate, and correct velocities.
  • Pros: Easy to intergrate with the divergence free solver.
  • Cons:
    • Viscosity parameter depends on the time step. Not physically meaningful.
    • Solving the inverse of a six-dimentional matrix for each constriant, causing a large computional effort.
    • Extremely difficult to set up initial conditions.
      • Fixed time step: 1ms
      • particle radius: 0.025m

IMAGE ALT TEXT HERE

IMAGE ALT TEXT HERE

Air-Fluid Interaction

IMAGE ALT TEXT HERE

External Libraries

  1. OpenGL Bindings: GLEW, GLFW .
  2. Math: GLM, Eigen .
  3. Search: CompactNSearch .
  4. GUI: AntTweakBar .
  5. Parallelism: OpenMP .

References

  • "SPH Fluids in Computer Graphics", Ihmsen, Orthmann, Solenthaler, Kolb, Teschner
  • Jan Bender and Dan Koschier. Divergence-free SPH for incompressible and viscous fluids. IEEE Transactions on Visualization and Computer Graphics, 2017.
  • Miles Macklin, Matthias Müller, Nuttapong Chentanez and Tae-Yong Kim. Unified Particle Physics for Real-Time Applications. ACM Trans. Graph., 33(4), 2014

Releases

No releases published

Packages

No packages published