leapTimer Module

Time management utility for LEAP


Uses

  • module~~leaptimer~~UsesGraph module~leaptimer leapTimer module~leapkinds leapKinds module~leaptimer->module~leapkinds module~leapparallel leapParallel module~leaptimer->module~leapparallel module~leapparser leapParser module~leaptimer->module~leapparser module~leaputils leapUtils module~leaptimer->module~leaputils iso_fortran_env iso_fortran_env module~leapkinds->iso_fortran_env module~leapparallel->module~leapkinds module~leapparallel->module~leapparser mpi_f08 mpi_f08 module~leapparallel->mpi_f08 module~leapparser->module~leapkinds module~leapcli leapCli module~leapparser->module~leapcli module~leaputils->module~leapkinds module~leaputils->mpi_f08 module~leapcli->module~leapkinds

Used by

  • module~~leaptimer~~UsedByGraph module~leaptimer leapTimer module~cdifs cdifs module~cdifs->module~leaptimer module~collisions collisions module~cdifs->module~collisions module~leapsolver leapSolver module~cdifs->module~leapsolver module~particles_resolved particles_resolved module~cdifs->module~particles_resolved module~immersed_boundaries immersed_boundaries module~cdifs->module~immersed_boundaries module~collisions->module~leaptimer module~particles_point particles_point module~collisions->module~particles_point module~collisions->module~particles_resolved module~collisions->module~immersed_boundaries module~grans grans module~grans->module~leaptimer module~grans->module~collisions module~grans->module~leapsolver module~grans->module~particles_point module~grans->module~particles_resolved module~grans->module~immersed_boundaries module~immersed_boundaries_markers immersed_boundaries_markers module~immersed_boundaries_markers->module~leaptimer module~leapsolver->module~leaptimer module~particles_point->module~leaptimer module~particles_point->module~immersed_boundaries module~particles_resolved->module~leaptimer module~particles_resolved->module~immersed_boundaries program~main main program~main->module~leaptimer program~main->module~cdifs program~main->module~grans program~main->module~leapsolver module~cdifs_advancesolution_smod cdifs_AdvanceSolution_smod module~cdifs_advancesolution_smod->module~cdifs module~cdifs_monitor_smod cdifs_Monitor_smod module~cdifs_monitor_smod->module~cdifs module~cdifs_preparesolver_smod cdifs_PrepareSolver_smod module~cdifs_preparesolver_smod->module~cdifs module~cdifs_writeoutputdata_smod cdifs_WriteOutputData_smod module~cdifs_writeoutputdata_smod->module~cdifs module~cdifs_writerestartdata_smod cdifs_WriteRestartData_smod module~cdifs_writerestartdata_smod->module~cdifs module~grans_advancesolution_smod grans_AdvanceSolution_smod module~grans_advancesolution_smod->module~grans module~grans_module_smod grans_module_smod module~grans_module_smod->module~grans module~grans_preparesolver_smod grans_PrepareSolver_smod module~grans_preparesolver_smod->module~grans module~grans_writeoutputdata_smod grans_WriteOutputData_smod module~grans_writeoutputdata_smod->module~grans module~grans_writerestartdata_smod grans_WriteRestartData_smod module~grans_writerestartdata_smod->module~grans module~immersed_boundaries->module~immersed_boundaries_markers module~immersed_boundaries_solids immersed_boundaries_solids module~immersed_boundaries->module~immersed_boundaries_solids module~immersed_boundaries_solids->module~immersed_boundaries_markers module~nga_smod nga_smod module~nga_smod->module~particles_point

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: TIMER_OBJ_HTBL_SIZE = 20

Derived Types

type, public ::  timer_obj

Time management utility

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: dt

Timestep

logical, public :: finish = .false.

Instructs simulation to end

real(kind=wp), public :: freq_output = huge(1.0_wp)

Frequency of visualization writes

real(kind=wp), public :: freq_write = huge(1.0_wp)

Frequency of restart writes

integer, public :: iter = 0

Current iteration

integer, public :: iter_max = huge(1)

Maximum iterations

real(kind=wp), public :: itertime

Wall clock time at beginning of iteration (in seconds)

real(kind=wp), public :: lasttime

Wall clock time at last update (in seconds)

type(parallel_obj), public, pointer :: parallel

Parallel object

type(parser_obj), public, pointer :: parser

Parser object

real(kind=wp), public :: starttime

Wall clock time at initialization (in seconds)

real(kind=wp), public :: time = 0.0_wp

Time at the n-th timestep

real(kind=wp), public :: time_max = huge(1.0_wp)

Maximum simulation time

real(kind=wp), public :: time_wall = huge(1.0_wp)

Wall time (in hours)

real(kind=wp), public, allocatable :: timing(:)

Timing array

type(hashtbl_obj), private :: tbl

Hash table for timing info

Type-Bound Procedures

procedure, public :: AddTiming => timer_obj_AddTiming
procedure, public :: Done => timer_obj_Done
procedure, public :: EndRun => timer_obj_EndRun
procedure, public :: Finalize => timer_obj_Final
procedure, public :: GetTiming => timer_obj_GetTiming
procedure, public :: Initialize => timer_obj_Init
procedure, public :: StepForward => timer_obj_StepForward
procedure, public :: TimeToWriteOutputData => timer_obj_TimeToWriteOutputData
procedure, public :: TimeToWriteRestartData => timer_obj_TimeToWriteRestartData
procedure, public :: UpdateTiming => timer_obj_UpdateTiming

Functions

private function timer_obj_Done(this) result(res)

Determines whether simulation is over

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

Return Value logical

private function timer_obj_GetTiming(this, name) result(res)

Updates timing info with elapsed time since beginning of current iteration

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

character(len=*), intent(in) :: name

Name of timing data

Return Value real(kind=wp)

Timing

private function timer_obj_TimeToWriteOutputData(this) result(res)

Determine whether it is time to write visualization files

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

Return Value logical

private function timer_obj_TimeToWriteRestartData(this) result(res)

Determine whether it is time to write restart files

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

Return Value logical


Subroutines

private subroutine timer_obj_AddTiming(this, name)

Add timing info

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

character(len=*), intent(in) :: name

Name of timing data

private subroutine timer_obj_EndRun(this)

Change run status to finished

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

private subroutine timer_obj_Final(this)

Finalize

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

private subroutine timer_obj_Init(this, parallel, parser)

Initialize the timer

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

type(parallel_obj), intent(in), target :: parallel

parallel structure from main program

type(parser_obj), intent(in), target :: parser

Input file parsing tool

private subroutine timer_obj_StepForward(this)

Move timer from n to n+1

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

private subroutine timer_obj_UpdateTiming(this, name)

Updates timing info with elapsed time since beginning of current iteration

Arguments

Type IntentOptional Attributes Name
class(timer_obj), intent(inout) :: this

Timer

character(len=*), intent(in) :: name

Name of timing data