Hey lumpyoatmeal,

This is a good question! Iâll start by explaining a bit on why substeps are needed and how they affect the simulation.

The simulator automatically figures out how many substeps to calculate during a frame. The number of substeps required is based on the velocity of the fluid. The faster the fluid particles, the more substeps the simulator will take. The simulator calculates the fluid physics equations on a grid and if fluid particles are moving fast, they will be travelling over multiple grid cells during a frame. The grid cells that the particles travel over are âskippedâ in calculations and this is what leads to decreased accuracy. The skipped grid cells could have important data that would have altered the trajectory of the particle, such as velocity data telling the particle to move away from an obstacle instead of passing through it. Taking more substeps leads to particles skipping less grid cells and also leads to more consistent physics.

In general, more substeps during a frame increases simulation accuracy. The **Min Substeps** and **Max Substeps** parameters are guidelines for the simulator on the range of substeps it should take during a frame.

- The
**Min Substeps** parameter is like a minimum threshold of accuracy that will force the simulator to take at least this many substeps during a frame.
- The
**Max Substeps** parameter sets the limit for how many substeps the simulator is allowed to take during a frame. If some fluid particles are moving fast enough so that the required number of substeps exceeds this parameter, the simulator will remove these particles from the simulation. The reason for having this parameter is to prevent simulation âblow upsâ in extreme cases. There is a chance that a particle may become unstable and take on an extremely high velocity. This could cause the simulator to require a very large number of substeps during a frame, blowing up the baking time. There is also a chance this particle could affect the data of other particles leading to a chain reaction. Having a limit for the number of substeps will eliminate this unstable particle before it can cause any trouble.

The **CFL Number** (which is short for CourantâFriedrichsâLewy condition number and is a common parameter in simulation) is a constraint on how the simulator figures out how many substeps to take during a frame. This number is the maximum number of grid cells a particle can travel in a single substep. So if the CFL is set to two, the simulator will perform enough substeps so that the fastest moving particle travels no more than two grid cells during a single substep.

Short answers to the questions:

When decreasing the CFL Number, the simulator will automatically figure out how many substeps to take to maintain this level of accuracy. Unless the **Min Substeps** is greater than the number of substeps that the simulator requires due to the CFL Number, this setting will have no effect on the simulation. If you set **Min Substeps** to 1, the simulator will take the minimum number of substeps required to satisfy the CFL constraint.

Increasing **Min Substeps** will in general increase simulation accuracy. *Tip:* Increasing this value can help with high viscosity simulations. More substeps means a shorter time interval per substeps and this leads to putting less stress on the viscosity solver, preventing it from failing in high resolution or high viscosity simulations.

- Ryan