/* define the identity element for an Observer */ struct NullObserver { void before_timestepping(const view_constgbx gbxs) const {} void after_timestepping() const {} unsigned int next_step(const unsigned int t) const { return std::numeric_limits::max(); } bool on_step(const unsigned int t) const { return false; } void at_start_step(const unsigned int t, const view_constgbx gbxs, const view_constsupers supers) const {} Monitor auto get_monitor() const { return NullMonitor{}; } };