Execute the main time-marching loop until time_stop is reached.
Each iteration: optionally recomputes dt from the CFL condition;
clips dt at the final time; calls step; advances time using
Kahan compensated summation to minimise floating-point drift;
writes checkpoints and live snapshots at the configured intervals.
initialize_runtime must have been called before run_solver.
On return from initialize_runtime, ctx % t and ctx % iter are
already set correctly: ctx % t equals time_start for a fresh run or
the checkpointed time for a restart; ctx % iter is 0 or the restored
iteration count respectively.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(solver_run_context_t), | intent(inout) | :: | ctx |
Solver context; |
||
| procedure(progress_callback_i), | optional | :: | on_progress | |||
| integer, | intent(in), | optional | :: | every_steps | ||
| real(kind=wp), | intent(in), | optional | :: | every_seconds |