[Soc-2005-dev] Fluid animation

Jonathan Merritt j.merritt at pgrad.unimelb.edu.au
Fri Jul 29 04:14:24 CEST 2005


Hi Daniel,

>One small comment though, I noticed from the webpage that you
>say "The bounding box of an object will be used to define a 
>region to simulate the fluid in". This is a pretty huge limitation
>to actually being able to use the fluid solver in animations.
>
>Is there hope of overcoming this limitation? (Know you are
>packing, so I don't expect a reply soon)
>  
>

I'll try to answer this question in case Nils is already on a plane. :-)

The Lattice-Boltzmann solver that Nils is using is a kind of cellular 
automata.  (Another example is Conway's "Game of Life".)  The problem 
space is split into a voxel grid of cells, each of which has a set of 
state properties.  The properties include such things as whether the 
cell has fluid or is empty, types of boundary cell flags, and fluid 
velocities within the cell.  The simulation advances a time step by 
allowing cells to interact with their nearest neighbours according to 
certain rules.

The simplest way to construct the voxel grid for the problem is as a 3D 
array in some pre-specified domain.  Hence the requirement that such a 
domain exist.  As Tom has already pointed out, I think you could make 
the domain arbitrarily large, as long as you have enough memory.

Based upon the papers on Nils' site, I can think of one way that the 
system might be extended to remove the requirement of a fixed domain.  
This would be to add an additional "bounds check" step to the solution 
iterations...

This step could be performed during each iteration to check whether the 
fluid is approaching one of the boundaries.  If so, the boundary could 
be grown to accomodate the movement.  Similarly, boundaries with 
distance between themselves and the fluid could be contracted.  After 
movement of the boundaries, the problem domain would be re-constructed 
and the cell properties simply copied across from the old problem 
domain.  This would provide a malleable boundary that would exactly 
surround the fluid volume at all times.  You would just need to make 
sure it didn't grow too large.

As I understand it, Nils' current algorithm already contains a step 
where the problem domain is copied, during the velocity propagation 
stage.  This could presumably be modified to copy propagated cell 
velocities into a new domain of a different shape and location.  
Provided the origin of each domain were tracked properly, and all the 
necessary book-keeping done, I don't see why it wouldn't work.

However, this kind of thing is probably for the future.  We want to be 
animator-friendly, but for now I think being Nils-friendly is the 
priority. :-)

Jonathan Merritt.



More information about the Soc-2005-dev mailing list