tem_timeControl_type Derived Type

type, public :: tem_timeControl_type

Definition of a time control.

The control is active in the range of time between min and max. It will trigger its action after a time interval specified in interval. For all time definitions always the one that occurs first is being used.


Inherits

type~~tem_timecontrol_type~~InheritsGraph type~tem_timecontrol_type tem_timeControl_type type~tem_time_type tem_time_type type~tem_timecontrol_type->type~tem_time_type min, max, interval, trigger

Inherited by

type~~tem_timecontrol_type~~InheritedByGraph type~tem_timecontrol_type tem_timeControl_type type~tem_adapt_type tem_adapt_type type~tem_adapt_type->type~tem_timecontrol_type time type~tem_balance_type tem_balance_type type~tem_balance_type->type~tem_timecontrol_type timeControl type~tem_convergenceheader_type tem_convergenceHeader_type type~tem_convergenceheader_type->type~tem_timecontrol_type timeControl type~tem_output_type tem_output_type type~tem_output_type->type~tem_timecontrol_type timeControl type~tem_restartcontrol_type tem_restartControl_type type~tem_restartcontrol_type->type~tem_timecontrol_type timeControl type~tem_simcontrol_type tem_simControl_type type~tem_simcontrol_type->type~tem_timecontrol_type timeControl type~tem_abortcriteria_type tem_abortCriteria_type type~tem_simcontrol_type->type~tem_abortcriteria_type abortCriteria type~tem_surfdata_type tem_surfData_type type~tem_surfdata_type->type~tem_timecontrol_type timeControl type~tem_tracking_config_type tem_tracking_config_type type~tem_tracking_config_type->type~tem_timecontrol_type timeControl type~tem_convergence_type tem_convergence_type type~tem_convergence_type->type~tem_convergenceheader_type header type~tem_general_type tem_general_type type~tem_general_type->type~tem_balance_type balance type~tem_general_type->type~tem_simcontrol_type simControl type~tem_restart_type tem_restart_type type~tem_general_type->type~tem_restart_type restart type~tem_restart_type->type~tem_restartcontrol_type controller type~tem_tracking_type tem_tracking_type type~tem_tracking_type->type~tem_tracking_config_type config type~hvs_output_file_type hvs_output_file_type type~hvs_output_file_type->type~tem_restart_type restart type~tem_abortcriteria_type->type~tem_convergence_type convergence type~tem_tracking_instance_type tem_tracking_instance_type type~tem_tracking_instance_type->type~hvs_output_file_type output_file

Components

Type Visibility Attributes Name Initial
type(tem_time_type), public :: min

Minimal point in time, from where on, this control should be active. Whichever time definition happens first will be used.

type(tem_time_type), public :: max

Maximal point in time, after which the control should not be active anymore. Whichever time definition happens first will be used.

type(tem_time_type), public :: interval

A regular interval at which an action should be triggered between min and max.

type(tem_time_type), public :: trigger

Keep track of the next point in time, at which an action should be triggered by this control.

logical, public :: delay_check = .false.

Configuration flag, whether to use nonblocking allreduces to determine whether an event has triggered across all processes.

Note that this delays the reaction on the trigger by one check interval (given by check_iter in number of iterations).

integer, public :: check_iter = 1

Trigger checking can involve communication and is potentially hurting the performance.

With this setting, the iteration interval at which these trigger updates should be done, can be controlled. Per default each iteration a check is done, but if this is too frequent, it can be increased here. However, it should be noted, that all trigger checks are only done every check_iter iteration.

integer, public :: check_request = MPI_REQUEST_NULL

IAllreduce request handle

logical, public :: globally_triggered

Flag to indicate whether trigger was globally activated

logical, public :: needs_reduce

Flag to indicate if this control object needs a MPI_reduce to determine trigger status.

logical, public :: min_reached = .false.

Flag that indicates whether the minimal point in time specified in min has already been reached.


Source Code

  type tem_timeControl_type
    !> Minimal point in time, from where on, this control should be active.
    !! Whichever time definition happens first will be used.
    type(tem_time_type) :: min

    !> Maximal point in time, after which the control should not be active
    !! anymore. Whichever time definition happens first will be used.
    type(tem_time_type) :: max

    !> A regular interval at which an action should be triggered between
    !! min and max.
    type(tem_time_type) :: interval

    !> Keep track of the next point in time, at which an action should be
    !! triggered by this control.
    type(tem_time_type) :: trigger

    !> Configuration flag, whether to use nonblocking allreduces to determine
    !! whether an event has triggered across all processes.
    !!
    !! Note that this delays the reaction on the trigger by one check interval
    !! (given by check_iter in number of iterations).
    logical :: delay_check = .false.

    !> Trigger checking can involve communication and is potentially hurting
    !! the performance.
    !!
    !! With this setting, the iteration interval at which these trigger
    !! updates should be done, can be controlled.
    !! Per default each iteration a check is done, but if this is too
    !! frequent, it can be increased here.
    !! However, it should be noted, that all trigger checks are only done
    !! every check_iter iteration.
    integer :: check_iter = 1

    !> IAllreduce request handle
    integer :: check_request = MPI_REQUEST_NULL

    !> Flag to indicate whether trigger was globally activated
    logical :: globally_triggered

    !> Flag to indicate if this control object needs a MPI_reduce to determine
    !! trigger status.
    logical :: needs_reduce

    !> Flag that indicates whether the minimal point in time specified in min
    !! has already been reached.
    logical :: min_reached = .false.
  end type tem_timeControl_type