Wednesday, February 2, 2011

Particle Attributes

As I continue to read about current implementations of multi-phase flow and phase changing materials using SPH, there are a few things which I need to iron out with the approach I am going to take in tackling SPH.

The first are what kinds of things I am planning on simulating in materials, in order to make the simulation as applicable as possible to different types of materials, as there are a lot of different phenomena I need to consider. I do not plan on implementing or utilizing all of these, but there are a few which are extremely important.


Phenomena
  • Particles
    • SPH!
  • Heat Transfer
    • How heat is transferred from particle to particle
  • Phase Changes 
    • Particles of Different Types: Solids, Liquids, Gases
  • Viscosity 
    • Closely Associated with Heat/Deformation
  • Multi-Phase Flow 
    • Interaction Between Particles of Different Types
  • Buoyancy 
    • As you get particles of varying densities or different materials, the less dense material rises according to the buoyancy equation, bubbles IE
  • Surface-Tension
    • Cohesion of particles near the surface interface.
    • Fluid-Air Interface
  • Inter-Facial Tension
    • Cohesion/Repulsion interactions of particles between different phases or different materials
    • Fluid-Fluid,Fluid-Solid Interface
  • Spatial Hashing / Uniform Grid
    • Speed Up search for Neighbors/Collisions between Particles, optimized for/on GPU)
  • SPH Simulation for Deformable Solids
    • Elasticity and Rotation of Deformable Solids during Simulation
    • Based on "Corrated SPH for deformable solids", to allow for better rigid body dynamics using SPH
  • Adaptive Sampling 
    • Larger Particles for Less Detailed Areas, Smaller Particles for More Detailed Areas during Sim
  • Surface Extraction
    • Creating a mesh from particle data.
  • Marching Cubes, Blobbies, Screen Space Meshes, etc.
Keyword: SPH is a particle based method for fluid simulation (has other applications), in which each particle is 
updated by a neighborhood of other particles based on a kernel function which is usually applies a Gaussian 
weight by distance from other particles surrounding it. Most if not all particle attributes discussed would be 
updated this method, including velocity/acceleration, heat transfer, etc.


Particle Structure
  • Basic Particle Attributes
    • Position
    • Velocity
    • Acceleration
    • Area
    • Mass
    • Radius (Uniform or Adaptive Size?)
  • Advanced Particle Attributes
    • Temperature
    • Viscosity
    • Density
    • Pressure
    • Stress Tensor
    • Phase (Solid/Liquid/Gas/Oobleck?)
Additional Forces
  • Temperature of the Air
  • Gravity
  • Immovable (SOLID) Particles
    • Containers for more Interesting Fluid Flow
I have found a lot of methods for simulating these different phenomena in various related papers, some which seem more physically correct than others, but most of them produced extremely interesting and believable results.

There are two interesting points which I have found through reading and observation. The first is that there have been few attempts to apply SPH to rigid body dynamics apart from a paper called "Corrated SPH for deformable solids", which uses additional attributes to account for dynamics such as rotation and shear, which I think will be extremely useful.

The other is that surface tension (and perhaps other cohesive forces) play an extremely large part in determining the shape and structure of flow in things such as lava and highly viscous materials. There is only one method I could find for defining surface tension for SPH which is described here: http://portal.acm.org/citation.cfm?id=846298 but the original paper describing the method is here: http://onlinelibrary.wiley.com/doi/10.1002/1097-0363(20000615)33:3%3C333::AID-FLD11%3E3.0.CO;2-7/abstract

However I can't access the latter paper...do we have access to this library? Either way I am unsure if this surface tension force will work well for what I am trying to accomplish, given that it is for extremely small scale surface tension effects for low viscosity flows.

Friday, January 28, 2011

Second Week Update

This week I spent more time trying to figure out some reference videos that I can use as comparison criteria, and more/so solidifying what I want to simulate. Although my plans for the project include multi-phase flow of other materials, right now just being able to melt ice would be a primary objective, so these are some videos of what I want to be able to simulate.


Here are some ref: videos for other types of highly viscous flow if molten lava.





Also, after looking at a few SPH base simulators, I decided to start out with the CUDA SPH implementation which is found in the CUDA Particles samples in the CUDA SDK. It's very well implemented, and seems the most well documented in comparison to some of the other open source simulators I've looked at. I spent a little bit of time playing around with it, and it seems incredibly fast and efficient at running the simulation. Surface extraction and rendering is a different issue and will definitely slow down the process to some degree, but that part will come much later.

Saturday, January 22, 2011

Design Document and Preliminary Plan

This is my first blog post for my Senior Design Project! I'll update this as I begin to start more things, but right now all I have completed is my preliminary Design Document, which outlines the purposes of this project and what I plan to do in the future.

My next will be spent continuing to read reference materials, and plan out specifics of the preliminary implementation, which will include setting up a development environment and framework, finding a good SPH implementation to extend, and figuring out how I will go about building on this framework to complete the goals of the project.

Although its a completely different project, because I have nothing currently I'm just going to post my old water simulation: although I do not plan on using a grid-based method in this project, it is still a good example of what virtual water "should" look like, although it is a little viscous and flat in my opinion.