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.