Skip to content

Integer timeline step length confusion

As of dbe0ac66, if I set both dt_min and dt_max to 1e-8, and timeEnd to 1e-7 then we calculate a timeBase of 3.725290e-16. However, we use a step length which is much smaller than the minimum:

engine_init: Absolute minimal timestep size: 3.725290e-16
    Step #         Time    Time-step  # Updates Wall-clock (ms)
         0 0.000000e+00 0.000000e+00          0           0.000
         1 6.250000e-09 6.250000e-09    1841127        2370.150
[ ... a bunch of steps of the same length  ... ]
        16 1.000000e-07 6.250000e-09    1841127        2364.122
main: done. Bye.

I'd expect a step length of the nearest multiple of 3.725290e-16 to 1e-8. Am I wrong?

I see similar behaviour whether I use swift or swift_fixdt.

If I increase dt_max to be greater than timeEnd, then we appear to get stuck in ````runner_dokick. If I then increase timeEnd``` (so ```dt_min``` is 1e-8, ```dt_max``` is 1e-6 and ```timeEnd``` is 1e-5) then I see a regular pattern of step lengths before it gets stuck with a zero-length step at t=```timeEnd```:

    Step #         Time    Time-step  # Updates Wall-clock (ms)
       260 9.414062e-06 3.906250e-08    1837561        2376.584
       261 9.453125e-06 3.906250e-08         54          65.733
       262 9.492187e-06 3.906250e-08        104          53.476
[ ... a bunch of steps of the same length  ... ]
       274 9.960937e-06 3.906250e-08        474          59.235
       275 9.980468e-06 1.953125e-08        172          64.479
       276 1.000000e-05 1.953125e-08          2          58.446
       277 1.000000e-05 0.000000e+00    1837562        2372.388

There are up to three different issues here, but I'd guess they're closely related.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information