diff --git a/src/engine.c b/src/engine.c index eabe688f293577c0fac1c1fb61d3a5f0780e25d4..d94075558bc91ac68734f67c0758383d7b56e9c2 100644 --- a/src/engine.c +++ b/src/engine.c @@ -2356,9 +2356,8 @@ void engine_dump_snapshot(struct engine *e) { struct clocks_time time1, time2; clocks_gettime(&time1); - if (e->verbose) - message("writing snapshot at t=%f", e->time); - + if (e->verbose) message("writing snapshot at t=%f.", e->time); + /* Dump... */ #if defined(WITH_MPI) #if defined(HAVE_PARALLEL_HDF5) @@ -2751,8 +2750,8 @@ void engine_print_policy(struct engine *e) { */ void engine_compute_next_snapshot_time(struct engine *e) { - for (double time = e->timeFirstSnapshot; time < e->timeEnd; - time += e->deltaTimeSnapshot) { + for (double time = e->timeFirstSnapshot; + time < e->timeEnd + e->deltaTimeSnapshot; time += e->deltaTimeSnapshot) { /* Output time on the integer timeline */ e->ti_nextSnapshot = (time - e->timeBegin) / e->timeBase; @@ -2760,8 +2759,16 @@ void engine_compute_next_snapshot_time(struct engine *e) { if (e->ti_nextSnapshot > e->ti_current) break; } - /* Be nice, talk... */ - const float next_snapshot_time = - e->ti_nextSnapshot * e->timeBase + e->timeBegin; - if (e->verbose) message("Next output time set to t=%f", next_snapshot_time); + /* Deal with last snapshot */ + if (e->ti_nextSnapshot >= max_nr_timesteps) { + e->ti_nextSnapshot = -1; + if (e->verbose) message("No further output time."); + } else { + + /* Be nice, talk... */ + const float next_snapshot_time = + e->ti_nextSnapshot * e->timeBase + e->timeBegin; + if (e->verbose) + message("Next output time set to t=%f.", next_snapshot_time); + } }