Let me give you some pointers to our documentation.
Regarding time step sizes and subcycling:
Regarding reading and writing, I would say that in general:
- read data wherever and whenever you need in the time-window
- write data before calling advance
More information in our docs:
I answered the question of when time interpolation is available in this topic:
Hope that helps