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; |