tem_timeControl_check Subroutine

public subroutine tem_timeControl_check(me, now, comm, triggered)

This routine checks if the control has triggered, and if so updates it.

It takes care of communication as well. A reduction of the trigger status might be needed, depending on the time definitions in the trigger. This communication is done with the MPI communicator comm, and all processes calling this routine should be members of comm. The communication is only done, if necessary. If the trigger became active since the last check or update, the triggered argument will be set to true.

If this should be done in combination with other status communications to avoid unnecessary synchronisation points, the separate routines tem_timeControl_triggered and tem_timeControl_update have to be used instead.

Arguments

Type IntentOptional Attributes Name
type(tem_timeControl_type), intent(inout) :: me

Time control settings to check.

type(tem_time_type), intent(in) :: now

Current time to check the control against.

integer, intent(in) :: comm

Communicator to use in the reduction.

logical, intent(out) :: triggered

Result of the check, indicating if the time control was triggered now.


Calls

proc~~tem_timecontrol_check~~CallsGraph proc~tem_timecontrol_check tem_timeControl_check proc~tem_timecontrol_globaltriggered tem_timeControl_globalTriggered proc~tem_timecontrol_check->proc~tem_timecontrol_globaltriggered proc~tem_timecontrol_update tem_timeControl_update proc~tem_timecontrol_check->proc~tem_timecontrol_update mpi_allreduce mpi_allreduce proc~tem_timecontrol_globaltriggered->mpi_allreduce mpi_iallreduce mpi_iallreduce proc~tem_timecontrol_globaltriggered->mpi_iallreduce mpi_wait mpi_wait proc~tem_timecontrol_globaltriggered->mpi_wait proc~tem_timecontrol_triggered tem_timeControl_triggered proc~tem_timecontrol_globaltriggered->proc~tem_timecontrol_triggered proc~tem_timecontrol_update->proc~tem_timecontrol_triggered proc~tem_time_ge_trigger tem_time_ge_trigger proc~tem_timecontrol_triggered->proc~tem_time_ge_trigger proc~tem_time_gt_trigger tem_time_gt_trigger proc~tem_timecontrol_triggered->proc~tem_time_gt_trigger proc~tem_time_never tem_time_never proc~tem_timecontrol_triggered->proc~tem_time_never

Called by

proc~~tem_timecontrol_check~~CalledByGraph proc~tem_timecontrol_check tem_timeControl_check proc~tem_convergence_check tem_convergence_check proc~tem_convergence_check->proc~tem_timecontrol_check proc~tem_tracking_has_triggered tem_tracking_has_triggered proc~tem_tracking_has_triggered->proc~tem_timecontrol_check proc~tem_tracker tem_tracker proc~tem_tracker->proc~tem_tracking_has_triggered

Source Code

  subroutine tem_timeControl_check(me, now, comm, triggered)
    ! -------------------------------------------------------------------- !
    !> Time control settings to check.
    type(tem_timeControl_type), intent(inout) :: me

    !> Current time to check the control against.
    type(tem_time_type), intent(in) :: now

    !> Communicator to use in the reduction.
    integer, intent(in) :: comm

    !> Result of the check, indicating if the time control was triggered now.
    logical, intent(out) :: triggered
    ! -------------------------------------------------------------------- !
    ! -------------------------------------------------------------------- !

    triggered = tem_timeControl_globalTriggered(me, now, comm)

    call tem_timeControl_update(me, now, triggered)

  end subroutine tem_timeControl_check