This module multiple executables with multiple components in each executable. This module multiple executables with multiple components in.
REVISION HISTORY:
2001-Nov-15 -- add PROTEX convention
2001-May-20 -- first prototypeINTERFACE:
module MPH_moduleUSES:
implicit none
include 'mpif.h'
private ! exceptPUBLIC MEMBER FUNCTIONS:
public :: MPH_components
public :: PE_in_component
public :: PE_in_num_comps
public :: MPH_global_id
public :: MPH_comm_join
public :: MPH_redirect_output
public :: MPH_help
public :: MPH_debug
public :: MPH_timer
public :: MPH_total_components
public :: MPH_comp_name
public :: MPH_comp_id
public :: MPH_local_world
public :: MPH_exe_id
public :: MPH_total_num_exe
public :: MPH_num_comps
public :: MPH_local_proc_id
public :: MPH_local_totProcs
public :: MPH_global_proc_id
public :: MPH_global_totProcs
public :: MPH_exe_world
public :: MPH_exe_low_proc_limit
public :: MPH_exe_up_proc_limitPUBLIC DATA MEMBERS:
integer, public :: istatus(MPI_STATUS_SIZE), ierr
integer, public :: MPH_Global_World ! total processor for the whole worldDEFINED PARAMETERS:
integer, parameter :: max_num_comps=10 ! maximum number of components
integer, parameter :: maxProcs_comp=128 ! maximum number of procs per comp
integer, parameter :: max_num_exes=10 ! maximum number of executables
integer, parameter :: N_CHANNELS=10 ! number of channels for timingLOCAL VARIABLES:
type Acomponent
character (len=32) :: name ! component name
integer :: num_process ! number of processors
integer :: process_list (maxProcs_comp)
! global processor_id, increasing order
end type Acomponent
type (Acomponent) :: components (max_num_comps) ! allocate components
integer :: MPI_Acomponent
integer :: local_world (max_num_comps) ! communicator for each component
integer :: local_proc_id (max_num_comps) ! proc id in each component
integer :: local_totProcs (max_num_comps)
! total number of processors in each component
integer :: global_proc_id ! proc id in the whole world
integer :: global_totProcs ! total number of processors
integer :: COMM_master ! communicator for submaster of each component
integer :: total_components ! total number of components
character (len=32) :: component_names (max_num_comps) ! component names
character (len=32) :: name (max_num_comps) ! name array used in setup
integer comp_id (max_num_comps) ! component id of each component
integer :: num_comps (max_num_comps)
! number of components in each executable
integer :: exe_low_proc_limit (max_num_comps)
! lower processor limit of each component
! in each executable world
integer :: exe_up_proc_limit (max_num_comps)
! upper processor limit of each component
! in each executable world
integer :: exe_world_proc_id (max_num_exes)
! processor id in the executable world
integer :: exe_world_totProcs (max_num_exes)
! number of processors in each executable
integer :: exe_world (max_num_exes)
! communicator for each executable
integer :: exe_ids (max_num_comps) ! executable ids
integer :: total_num_exe ! total number of executables
integer :: exe_id ! executable id
integer :: debug_level = 0 ! level of debug
.. for timer ..
real (kind=8) :: init_time = -1.0
real (kind=8) :: last_time, tot_time (0:N_CHANNELS)
\