I'm writing a physics engine that uses an Adams-Bashforth and Adams-Moulton predictor-corrector pair for integration, and Runge-Kutta 4 to calculate starting values for their initialization.
I am under the impression that I must calculate new starting values upon a radical change to the state of a simulated object - for example, client code directly sets the velocity of an object, rather than applying a force or impulse.
The above is one example; I am wondering in which specific cases recalculation is needed.
It seems to me that direct altering of physical state by external code is an obvious case for recalculating starting values; however, it is less clear to me in the case of, say, an impulse applied to an object as part of collision resolution, or a constant force upon an object suddenly coming into existence.
I store and integrate force and momentum rather than acceleration and velocity, in case that's relevant.
I hope this question is sufficiently descriptive, but if it is not, please ask for details/clarifications. I'll stop here to avoid presenting you with an essay.
To be safe, I would recalculate whenever a discontinuity in either a variable or any of its derivatives occurs. Presumably this would not happen very often, so it should not affect updating speed much.