print_status_line Subroutine

private 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.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: step
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in) :: wall
real(kind=wp), intent(in) :: t_end
real(kind=wp), intent(in), optional :: mass
real(kind=wp), intent(in), optional :: mean_S
real(kind=wp), intent(in), optional :: mean_T

Calls

proc~~print_status_line~~CallsGraph proc~print_status_line print_status_line info info proc~print_status_line->info

Called by

proc~~print_status_line~~CalledByGraph proc~print_status_line print_status_line proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~print_status_line proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
character(len=256), private :: line
real(kind=wp), private :: remaining

Source Code

   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