# .css-1p792ld{margin-top:unset;}.css-1p792ld:hover > span{opacity:1;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-transform-duration:0.1s;-ms-transform-duration:0.1s;transform-duration:0.1s;}FPS and Substeps.css-14vda7h{font-size:15px;margin-inline-start:0.5rem;opacity:0;position:absolute;-webkit-transform:translateX(-4px);-ms-transform:translateX(-4px);transform:translateX(-4px);-webkit-transition:opacity 0.2s ease-out 0s,-webkit-transform 0.2s ease-out 0s;-webkit-transition:opacity 0.2s ease-out 0s,transform 0.2s ease-out 0s;transition:opacity 0.2s ease-out 0s,transform 0.2s ease-out 0s;}

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.

An example:

• 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.