tem_status_module Module

This module handles the various status bits and performs the relevant communications. For example if one process ends, this information is stored in a bit and communicated to all other processors.


Uses

  • module~~tem_status_module~~UsesGraph module~tem_status_module tem_status_module module~tem_comm_env_module tem_comm_env_module module~tem_status_module->module~tem_comm_env_module mpi mpi module~tem_status_module->mpi module~tem_comm_env_module->mpi

Used by

  • module~~tem_status_module~~UsedByGraph module~tem_status_module tem_status_module module~tem_convergence_module tem_convergence_module module~tem_convergence_module->module~tem_status_module module~tem_general_module tem_general_module module~tem_general_module->module~tem_status_module module~tem_simcontrol_module tem_simControl_module module~tem_general_module->module~tem_simcontrol_module module~tem_abortcriteria_module tem_abortCriteria_module module~tem_general_module->module~tem_abortcriteria_module module~tem_simcontrol_module->module~tem_status_module module~tem_simcontrol_module->module~tem_convergence_module module~tem_simcontrol_module->module~tem_abortcriteria_module module~tem_tracking_module tem_tracking_module module~tem_tracking_module->module~tem_status_module module~tem_tracking_module->module~tem_simcontrol_module module~tem_abortcriteria_module->module~tem_convergence_module

Variables

Type Visibility Attributes Name Initial
integer, public, parameter :: tem_stat_nFlags = 10

Number of available status flags.

integer, public, parameter :: tem_stat_interval = 1

Indicator for the overall steering interval to being reached.

integer, public, parameter :: tem_stat_steady_state = 2

A steady state condition has been reached.

integer, public, parameter :: tem_stat_run_terminate = 3

The application is to terminate abnormally.

integer, public, parameter :: tem_stat_global_error = 4

Some global error occurred.

integer, public, parameter :: tem_stat_nan_detected = 5

A NaN was detected during the computation.

integer, public, parameter :: tem_stat_nonPhysical = 6

A non-physical state was detected during the computation.

integer, public, parameter :: tem_stat_max_sim = 7

The maximal simulation time has been reached.

integer, public, parameter :: tem_stat_max_iter = 8

The maximal number of iterations has been reached.

integer, public, parameter :: tem_stat_max_clock = 9

The maximall wall-clock time was reached.

integer, public, parameter :: tem_stat_stop_file = 10

A stop file was encountered.


Derived Types

type, public ::  tem_status_type

Define an array to hold all status flags

Components

Type Visibility Attributes Name Initial
integer, public :: check_request = MPI_REQUEST_NULL
logical, public :: bits(tem_stat_nFlags) = .false.
logical, public :: oldbits(tem_stat_nFlags) = .false.

Functions

public function tem_status_run_end(me) result(run_end)

Decide if the simulation run should end based on the status flags.

Arguments

Type IntentOptional Attributes Name
type(tem_status_type), intent(in) :: me

Status to check if the run has to end.

Return Value logical

Result indicating if the run should come to a regular end.

public function tem_status_run_terminate(me) result(run_terminate)

Decide if the simulation run should abnormally terminate based on the status flags.

Arguments

Type IntentOptional Attributes Name
type(tem_status_type), intent(in) :: me

Status to check for an extraordinary termination of the run.

Return Value logical

Result indicating if the run should com to an irregular end.


Subroutines

public subroutine tem_status_clear(me)

Clear (unset) all status bits.

Arguments

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

Status type to initialize.

public subroutine tem_status_dump(me, outUnit)

Write the status in me to outUnit.

Read more…

Arguments

Type IntentOptional Attributes Name
type(tem_status_type), intent(in) :: me

Status to write on outunit.

integer, intent(in) :: outUnit

The file unit to write to.

public subroutine tem_status_communicate(me, comm)

Perform the communication of status bits

Arguments

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

Status to communicate.

integer, intent(in) :: comm

Communicator to use for the MPI reduction operation.

public subroutine tem_status_communicate_delayed(me, comm)

Perform the communication of status bits with a nonblocking allreduce resulting in an delayed communication by one check_iter interval.

Read more…

Arguments

Type IntentOptional Attributes Name
type(tem_status_type), intent(inout) :: me
integer, intent(in) :: comm

Communicator to use for the MPI reduction operation.