A common question is why simulations with a high FPS rate require less substeps? The answer is precision. The length of a single substep is calculated as
lengthsubstep = 1 / ( FPS rate * substeps )
In RealFlow, time is not a continuous stream, but subdivided into chunks. Between these chunks, a particle's or object's velocity is considered constant. This gives a very good approximation and the more substeps (= time chunks), the better the representation of the real behaviour.
- Let's assume you have a FPS rate of 25 and 300 substeps.
- According to the formula the length of a single substep is 0.0001333 s.
- This is a very accurate subdivision and gives precise results.
Now, let's use a FPS rate of 400 and see what happens:
lengthsubstep = 1 / ( 400 * 300 )
lengthsubstep = 0.0000083 s
- So we have a much higher precision:
0.0000083 s vs. 0.0001333 s
In order to get the same precision as before, substeps can be decreased:
- In this example, the FPS rate has been increased by a factor of
400 fps / 25 fps = 16.
- Therefore, the number of substeps can be calculated as
300 fps / 16 fps = 19
- With 19 substeps and 400 fps we get the same level of precision as with 300 substeps and 24 fps.