Narrow Band Width

– Too many particles are needed to fill the entire volume of flow objects. So the big computational times are required.
– The majority of the FLIP particles filling the fluid objects don’t contribute to the fluid’s appearance (especially for larger volumes).

– Narrow Band Width was introduced to reduce computational times as lets the solver assign the Flip particles only to the voxels in a fixed band (inside the liquid surface).
– Of course Narrow Band makes more sense for big volumes of fluids, as small volumes are always filled by particles so there is no advantage in using it.
– Narrow Band Width=3 seems to be the lower value you can use to avoid volume lost.

– In this example I rendered a viewport section so you can see the narrow band of the cube set as liquid. The bigger the Narrow Band Width value, the thicker the band.

Blender Domain Liquid Narrow Band Width


– This parameter gives some randomness to the INITIAL locations of all the particles inside the voxels assigned to the Flow object(s).

– Randomness =0 : the particles are perfectly aligned inside the grid
– Randomness >0 : the particles are not aligned inside the grid

– As usual I’ll try to show very simple examples as I’m convinced that if we want obtain good simulations is important to know how the simulator works.
– In the next video you’ll see a flow object emitting 9 particles, the flow object was set to occupy exactly 9 voxels as shown in this image:

Blender Domain Liquid Flow Voxels

– In this example Resolution Division =25, the small cube on the left bottom corner of the domain shows the voxel size.

Blender Domain Liquid Particle Randomness

CFL Number

– As you probably know the (differential) equations describing the motion of all the particles are resolved by using numerical methods.
– Honestly I don’t know wich algorithm Blender uses, but I suppose it uses the standard v*(Δt/Δx) for the CFL Number. If you know another formula is used please write me!
– What does the CFL Number represent? Look at this image (voxels are 3-dimensional and this is a one-dimensional example but this reasoning can be extended to a 3D voxel):

Blender Domain Liquid CFL Voxels

– If v is too hight, we loose the information that should be stored in the second voxel. The solution is to insert extra Time Steps.
x is the size of a voxel and t the time the particle needs to run it, v=x/t the particle’s velocity.
– If we reduce the velocity, that’s to say v≤x/t, the particle will run one FULL voxel (or LESS).
– If we think in terms of incremental values: v≤Δx/Δt ⇒ v*(Δt/Δx)≤1

CFL≤1 is the condition, for a particle, to travel only from a voxel to a adiacent one.
– Why does the default Blender CFL Number is set to 4.0 instead of 1.0 (or less) ? I think it’s to reduce baking time.

How to choose the right CFL Number for your simulation? Blender is not “real simulations” oriented. Remember we will never obtain a “real” simulation as everything is based on approximate physics that lead to approximate solutions. In general a smaller CFL number means a more ‘realistic’ simulation but if you find your simulation looks better with a greater CFL Number, raise it up!

– In this first example see how different values of CFL Number affects a simulation:

– What about using CFL Numbers greater than one? Again consider again the above image: if for a certain velocity your particle cannot travel ,e.g, 3 voxels, no matter if we rise up the CFL Number, because if your particle cannot travel 3 voxels, will not be able to travel 4 or more, so that no extra Time Steps will be used.

– In this second example see how a simulation remains exactly same from CFL Number = 4.2 up.

Blender Domain Liquid CFL Number

– Always keep in mind that your simulation is a combination of CFL Number , Timesteps, Resolution Divisions, Video Frame Rate etc..!

Some considerations

– The CFL Number is a necessary (but not sufficient) condition for the convergence of the differential equations that describe the motion of all the particles inside the domain.
– “Convergent Solutions” means that when Δx and Δt (used in the numerical method) tend to zero, this numerical solution will tend to the exact solution.
– Sometimes the CFL Number is confused with a ‘Stability Condition’ (that means that as computation proceeds, errors get smaller). Keep in mind that there are methods stable for arbitrary Δt that, however, are not convergent unless a CLF condition is met.
– Smaller CFL Numbers mean bigger computational times (because of the extra Time Steps).
– CFL Number=0 , make it sense? The CFL Number can be equal to zero only if velocity is equal to zero that’s to say for NO moving fluids or NO time flow. (v*(Δt/Δx)=0 ⇒ v=0 OR Δt=0 ). I think that if you choose CFL NUmber=0 then Blender sets very small value, please let me know if you know the correct answer to this question!

Time Scale

– Time Scale sets the “duration” of the simulation (NOT of the video!).

– E.g. for a 24 fps video, with 240 total frames the video Duration=10 sec.
– if Time Scale=0.1 we render 1 second of a fluid simulation in a 10 seconds video: Duration*TimeScale=1 sec.
– if Time Scale=1 we render 10 second of a fluid simulation in a 10 seconds video: Duration*TimeScale=10 sec.

– In this example see how the second animation is “faster” than the second (and “real”) one.

Blender Domain Liquid Time Scale

Resolution Divisions

– Domain Resolution is one of the most important parameters in fluid simulation.
– The value corrensponds to the longest domain size.
– Higher resolution means more realistic simulations.

– In this first example you can see how two different values of Domain Resolution affect a simulation. No mesh was created in this example. Note how changing the resolution can lead to a totally different simulation, it’s not just a matter of details:

– The small cube attached at one of the corners of the domain shows the size of a voxel:

Blender Domain Liquid Resolution Divisions

– In this simulation the grid created for two different values of Resolution Divisions is shown:

Blender Domain Liquid Resolution Divisions

FLIP Ratio

– PIC (Particle in Cell) and FLIP (Fluid Implicit Particle) are two different methods blender uses to calculate the motions of the particles (more precisely the velocities).
PIC is less accurate, but stable. More PIC produces more viscous fluids as a consequence of numerical dissipation (due to a double interpolation).
FLIP better maintains individual particle velocities, is very accurate but can become chaotic and instable. More FLIP produces less viscous fluids and more noise on the surface.
PIC/FLIP is a hybrid method which mixes (linear combination) PIC and FLIP.
– Blender default value for Flip Ratio is 0.97 which gives good stability and accuracy.

– Flip Ratio=1.0 :a completely FLIP simulation (lot of splashes, more unstable)
– Flip Ratio=0.0 :a completely PIC simulation (less splashes, more stable)

– As always, remember: Blender is not “real simulations” oriented, we will never obtain a “real” simulation as everything is based on approximate physics that lead to approximate solutions, so choose the parameters that give you the simulation you like more!

– In this example see how 8 different values of Flip Ratio affect a simulation. Note how Flip Ratio=0 does not produce splashes while Flip Ratio=1 too many:

Blender Domain Liquid Flip Ratio