If available, the observer function is called for every time step in the iteration. It can be used for calculations “on the fly” to reduce memory of saved data, for user-specified animation or for logging purposes . If the value returned by observer is a vector, than resulting out will be a data.