real(dp) function get_total_time(proc_timer, t_elapsed)
!= Return the (current) total time for a given timed procedure.
!= By default this does not include the elapsed time of the current
!= run of proc_timer's routine, so if proc_timer is active then
!= the default call to get_total_time returns the time dpent in
!= proc_timer%timer_name up to the most recent call.
!= In:
!= proc_timer: the timer object of the procedure. Must be intialised by
!= set_timer.
!= t_elapsed(optional): include the elapsed time. Warning: involves an
!= additional call to etime, so will affect performance if
!= called large numbers (10s of millions) of times.
type(timer) :: proc_timer
logical, optional :: t_elapsed
real(dp) :: t
if (time_at_all) then
if (.not. associated(proc_timer%store)) then
call warning_neci('get_total_time.', 'proc_timer not intialised: '//adjustl(proc_timer%timer_name))
get_total_time = -1000.0_dp ! Helpfully return insane value, so it is obvious something went wrong. ;-)
else
get_total_time = proc_timer%store%sum_time_cpu
if (present(t_elapsed)) then
if (t_elapsed) then
t = MPI_WTIME()
get_total_time = get_total_time + t - proc_timer%store%time_cpu
end if
end if
end if
end if
end function get_total_time