run_solver Subroutine

public subroutine run_solver(ctx)

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.

Arguments

Type IntentOptional Attributes Name
type(solver_run_context_t), intent(inout) :: ctx

Solver context; ctx % t and ctx % iter are updated in place.