with optional save_first argument sets first output time.
The latter is missing so far and mandatory (independent on save_first argument).
Imagine time_start much earlier than now_time. Until next_time exceeds now_time, every model timestep is output without this fix. save_first argument only adds on this.
calculation of first next_time is done in initialize_files(). this routine now became public as output_manager_initialize_files() and can be called directly from host (no need to provide save_first argument to prepare_save() or save()).
with optional save_first argument sets first output time. The latter is missing so far and mandatory (independent on save_first argument). Imagine time_start much earlier than now_time. Until next_time exceeds now_time, every model timestep is output without this fix. save_first argument only adds on this. calculation of first next_time is done in initialize_files(). this routine now became public as output_manager_initialize_files() and can be called directly from host (no need to provide save_first argument to prepare_save() or save()).