subroutine print_status_line(step, t, dt, wall, t_end, mass, mean_S, mean_T)
!! Print a table-formatted status line with estimated remaining time.
!! When mean_S / mean_T are present, two extra columns are written
!! between Mass and Wall so the multilayer header lines up.
integer, intent(in) :: step
real(wp), intent(in) :: t, dt, wall, t_end
real(wp), intent(in), optional :: mass
real(wp), intent(in), optional :: mean_S, mean_T
real(wp) :: remaining
character(len=256) :: line
if (t > 0.0_wp) then
remaining = wall*(t_end - t)/t
else
remaining = 0.0_wp
end if
if (present(mass) .and. present(mean_S) .and. present(mean_T)) then
write (line, "(I9,F14.2,F14.4,ES13.3,F13.4,F13.4,F13.2,F15.2)") &
step, t, dt, mass, mean_S, mean_T, wall, remaining
else if (present(mass)) then
write (line, "(I9,F14.2,F14.4,ES13.3,F13.2,F15.2)") &
step, t, dt, mass, wall, remaining
else
write (line, "(I9,F14.2,F14.4,13X,F13.2,F15.2)") &
step, t, dt, wall, remaining
end if
call logger%info(" "//trim(line))
end subroutine print_status_line