The main documentation of the Timer Class contains additional explanation of this code listing.
!
! Author: Michael L. Hall
! P.O. Box 1663, MS-D413, LANL
! Los Alamos, NM 87545
! ph: 505-665-4312
! email: Hall@LANL.gov
!
! Created on: 07/09/01
! CVS Info: $Id: timer.F90,v 1.20 2007/02/21 21:28:28 hall Exp $
module Caesar_Timer_Class
! Global use associations.
use Caesar_Mathematics_Module
use Caesar_Data_Structures_Module
use Caesar_Numbers_Module, only: zero
! Start up with everything untyped and private.
implicit none
private
! Public procedures.
public :: Initialize, Finalize, Valid_State, Initialized
public :: Arithmetic_Mean, Average, Count, Geometric_Mean, Get_CPU_Time, &
Get_Wall_Clock_Time, Harmonic_Mean, Julian_Day, Maximum, Mean, &
Minimum, Name, Output, Reset, Standard_Deviation, Start, Stop, &
Sum, Total, Totally_Positive
interface Initialize
module procedure Initialize_Timer
end interface
interface Finalize
module procedure Finalize_Timer
end interface
interface Valid_State
module procedure Valid_State_Timer
end interface
interface Initialized
module procedure Initialized_Timer
end interface
interface Average
module procedure Get_Arithmetic_Mean_Timer
end interface
interface Get_CPU_Time
module procedure Get_CPU_Time
end interface
interface Get_Wall_Clock_Time
module procedure Get_Wall_Clock_Time
end interface
fortext([Value],[Arithmetic_Mean Count Geometric_Mean Harmonic_Mean
Maximum Minimum Name Standard_Deviation Sum
Totally_Positive],[
interface Value
module procedure expand(Get_Value_Timer)
end interface
])
interface Mean
module procedure Get_Arithmetic_Mean_Timer
end interface
interface Output
module procedure Output_Timer
end interface
interface Reset
module procedure Reset_Timer
end interface
interface Start
module procedure Start_Timer
end interface
interface Stop
module procedure Stop_Timer
end interface
interface Total
module procedure Get_Sum_Timer
end interface
! Public type definitions.
public :: Time_type, Timer_type
type Time_type
! Starting time.
type(real) :: Start
! Timing statistics.
type(Statistics_type) :: Statistics
end type Time_type
type Timer_type
! Initialization status.
type(logical,1) :: Initialized
! Two times to track.
type(Time_type) :: CPU_Time, Wall_Clock_Time
! The name for this timer.
type(character,80) :: Name
! True when the timer is active.
type(logical) :: Running
end type Timer_type
contains
The Timer Class contains the following routines which are listed in separate sections:
end module Caesar_Timer_Class