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)
\