w90_comms Module

This module handles all of the communications

JRY subroutine comms_gatherv_logical(array,localcount,rootglobalarray,counts,displs) !! Gather real data to root node implicit none


Uses

  • module~~w90_comms~~UsesGraph module~w90_comms w90_comms module~w90_constants w90_constants module~w90_comms->module~w90_constants module~w90_io w90_io module~w90_comms->module~w90_io module~w90_io->module~w90_constants

Used by

  • module~~w90_comms~~UsedByGraph module~w90_comms w90_comms program~postw90 postw90 program~postw90->module~w90_comms module~w90_kmesh w90_kmesh program~postw90->module~w90_kmesh module~w90_geninterp w90_geninterp program~postw90->module~w90_geninterp module~w90_postw90_common w90_postw90_common program~postw90->module~w90_postw90_common module~w90_boltzwann w90_boltzwann program~postw90->module~w90_boltzwann proc~gyrotropic_get_noa_k gyrotropic_get_NOA_k proc~gyrotropic_get_noa_k->module~w90_comms proc~gyrotropic_get_noa_k->module~w90_postw90_common module~w90_kmesh->module~w90_comms proc~k_path k_path proc~k_path->module~w90_comms proc~k_path->module~w90_postw90_common module~w90_wannierise w90_wannierise module~w90_wannierise->module~w90_comms proc~get_shc_r get_SHC_R proc~get_shc_r->module~w90_comms proc~get_shc_r->module~w90_postw90_common proc~get_cc_r get_CC_R proc~get_cc_r->module~w90_comms proc~get_cc_r->module~w90_postw90_common proc~wannier_setup wannier_setup proc~wannier_setup->module~w90_comms proc~wannier_setup->module~w90_kmesh proc~get_ff_r get_FF_R proc~get_ff_r->module~w90_comms proc~get_ff_r->module~w90_postw90_common proc~wannier_run wannier_run proc~wannier_run->module~w90_comms proc~wannier_run->module~w90_kmesh proc~wannier_run->module~w90_wannierise module~w90_overlap w90_overlap proc~wannier_run->module~w90_overlap module~w90_disentangle w90_disentangle proc~wannier_run->module~w90_disentangle module~w90_hamiltonian w90_hamiltonian proc~wannier_run->module~w90_hamiltonian module~w90_overlap->module~w90_comms proc~k_slice k_slice proc~k_slice->module~w90_comms proc~k_slice->module~w90_postw90_common proc~gyrotropic_main gyrotropic_main proc~gyrotropic_main->module~w90_comms proc~gyrotropic_main->module~w90_postw90_common proc~overlap_read overlap_read proc~overlap_read->module~w90_comms proc~dos_main dos_main proc~dos_main->module~w90_comms proc~dos_main->module~w90_postw90_common proc~berry_print_progress berry_print_progress proc~berry_print_progress->module~w90_comms module~w90_geninterp->module~w90_comms module~w90_geninterp->module~w90_postw90_common module~w90_disentangle->module~w90_comms proc~param_memory_estimate param_memory_estimate proc~param_memory_estimate->module~w90_comms program~w90chk2chk w90chk2chk program~w90chk2chk->module~w90_comms proc~overlap_allocate overlap_allocate proc~overlap_allocate->module~w90_comms proc~get_bb_r get_BB_R proc~get_bb_r->module~w90_comms proc~get_bb_r->module~w90_postw90_common proc~get_aa_r get_AA_R proc~get_aa_r->module~w90_comms proc~get_aa_r->module~w90_postw90_common proc~get_ss_r get_SS_R proc~get_ss_r->module~w90_comms proc~get_ss_r->module~w90_postw90_common proc~param_dist param_dist proc~param_dist->module~w90_comms program~w90spn2spn w90spn2spn program~w90spn2spn->module~w90_comms proc~spin_get_moment spin_get_moment proc~spin_get_moment->module~w90_comms proc~spin_get_moment->module~w90_postw90_common proc~overlap_project overlap_project proc~overlap_project->module~w90_comms module~w90_postw90_common->module~w90_comms proc~get_hh_r get_HH_R proc~get_hh_r->module~w90_comms proc~get_hh_r->module~w90_postw90_common module~w90_boltzwann->module~w90_comms module~w90_boltzwann->module~w90_postw90_common proc~berry_main berry_main proc~berry_main->module~w90_comms proc~berry_main->module~w90_postw90_common proc~k_path_print_info k_path_print_info proc~k_path_print_info->module~w90_comms module~w90_hamiltonian->module~w90_comms proc~param_chkpt_dist param_chkpt_dist proc~param_chkpt_dist->module~w90_comms program~wannier wannier program~wannier->module~w90_comms program~wannier->module~w90_kmesh program~wannier->module~w90_wannierise program~wannier->module~w90_overlap program~wannier->module~w90_disentangle program~wannier->module~w90_hamiltonian proc~tran_cut_hr_one_dim tran_cut_hr_one_dim proc~tran_cut_hr_one_dim->module~w90_hamiltonian proc~tran_lcr_2c2_sort tran_lcr_2c2_sort proc~tran_lcr_2c2_sort->module~w90_hamiltonian proc~dos_get_levelspacing dos_get_levelspacing proc~dos_get_levelspacing->module~w90_postw90_common proc~check_and_sort_similar_centres check_and_sort_similar_centres proc~check_and_sort_similar_centres->module~w90_hamiltonian proc~tran_lcr_2c2_build_ham tran_lcr_2c2_build_ham proc~tran_lcr_2c2_build_ham->module~w90_hamiltonian proc~spin_get_moment_k spin_get_moment_k proc~spin_get_moment_k->module~w90_postw90_common proc~plot_main plot_main proc~plot_main->module~w90_hamiltonian proc~plot_fermi_surface plot_fermi_surface proc~plot_fermi_surface->module~w90_hamiltonian proc~get_gauge_overlap_matrix get_gauge_overlap_matrix proc~get_gauge_overlap_matrix->module~w90_postw90_common proc~tran_write_xyz tran_write_xyz proc~tran_write_xyz->module~w90_hamiltonian proc~tran_find_integral_signatures tran_find_integral_signatures proc~tran_find_integral_signatures->module~w90_hamiltonian proc~wham_get_eig_deleig_tb_conv wham_get_eig_deleig_TB_conv proc~wham_get_eig_deleig_tb_conv->module~w90_postw90_common proc~fourier_q_to_r fourier_q_to_R proc~fourier_q_to_r->module~w90_postw90_common proc~berry_get_sc_klist berry_get_sc_klist proc~berry_get_sc_klist->module~w90_postw90_common proc~wann_main wann_main proc~wann_main->module~w90_hamiltonian proc~wham_get_eig_deleig wham_get_eig_deleig proc~wham_get_eig_deleig->module~w90_postw90_common proc~wham_get_eig_uu_hh_aa_sc_tb_conv wham_get_eig_UU_HH_AA_sc_TB_conv proc~wham_get_eig_uu_hh_aa_sc_tb_conv->module~w90_postw90_common proc~wham_get_eig_uu_hh_aa_sc wham_get_eig_UU_HH_AA_sc proc~wham_get_eig_uu_hh_aa_sc->module~w90_postw90_common proc~gyrotropic_get_k_list gyrotropic_get_k_list proc~gyrotropic_get_k_list->module~w90_postw90_common proc~tran_reduce_hr tran_reduce_hr proc~tran_reduce_hr->module~w90_hamiltonian proc~berry_get_imfgh_klist berry_get_imfgh_klist proc~berry_get_imfgh_klist->module~w90_postw90_common proc~wham_get_eig_uu_hh_jjlist wham_get_eig_UU_HH_JJlist proc~wham_get_eig_uu_hh_jjlist->module~w90_postw90_common proc~berry_get_shc_klist berry_get_shc_klist proc~berry_get_shc_klist->module~w90_postw90_common proc~master_sort_and_group master_sort_and_group proc~master_sort_and_group->module~w90_hamiltonian proc~plot_interpolate_bands plot_interpolate_bands proc~plot_interpolate_bands->module~w90_hamiltonian proc~spin_get_s spin_get_S proc~spin_get_s->module~w90_postw90_common proc~wham_get_d_h_a wham_get_D_h_a proc~wham_get_d_h_a->module~w90_postw90_common proc~wham_get_occ_mat_list wham_get_occ_mat_list proc~wham_get_occ_mat_list->module~w90_postw90_common proc~spin_get_nk spin_get_nk proc~spin_get_nk->module~w90_postw90_common proc~tran_main tran_main proc~tran_main->module~w90_hamiltonian proc~berry_get_kubo_k berry_get_kubo_k proc~berry_get_kubo_k->module~w90_postw90_common

Contents


Variables

TypeVisibility AttributesNameInitial
logical, public, save:: on_root

Are we the root node

integer, public, save:: num_nodes

Number of nodes

integer, public, save:: my_node_id

ID of this node

integer, public, parameter:: root_id =0

ID of the root node

integer, private, parameter:: mpi_send_tag =77

Interfaces

public interface comms_bcast

  • private subroutine comms_bcast_int(array, size)

    Send integar array from root node to all nodes

    Arguments

    Type IntentOptional AttributesName
    integer, intent(inout) :: array
    integer, intent(in) :: size
  • private subroutine comms_bcast_logical(array, size)

    Send logical array from root node to all nodes

    Arguments

    Type IntentOptional AttributesName
    logical, intent(inout) :: array
    integer, intent(in) :: size
  • private subroutine comms_bcast_real(array, size)

    Send real array from root node to all nodes

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
  • private subroutine comms_bcast_cmplx(array, size)

    Send character array from root node to all nodes

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
  • private subroutine comms_bcast_char(array, size)

    Send character array from root node to all nodes

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(inout) :: array
    integer, intent(in) :: size

public interface comms_send

  • private subroutine comms_send_int(array, size, to)

    Send integer array to specified node

    Arguments

    Type IntentOptional AttributesName
    integer, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
  • private subroutine comms_send_logical(array, size, to)

    Send logical array to specified node

    Arguments

    Type IntentOptional AttributesName
    logical, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
  • private subroutine comms_send_real(array, size, to)

    Send real array to specified node

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
  • private subroutine comms_send_cmplx(array, size, to)

    Send complex array to specified node

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
  • private subroutine comms_send_char(array, size, to)

    Send character array to specified node

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to

public interface comms_recv

  • private subroutine comms_recv_int(array, size, from)

    Receive integer array from specified node

    Arguments

    Type IntentOptional AttributesName
    integer, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
  • private subroutine comms_recv_logical(array, size, from)

    Receive logical array from specified node

    Arguments

    Type IntentOptional AttributesName
    logical, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
  • private subroutine comms_recv_real(array, size, from)

    Receive real array from specified node

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
  • private subroutine comms_recv_cmplx(array, size, from)

    Receive complex array from specified node

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
  • private subroutine comms_recv_char(array, size, from)

    Receive character array from specified node

    Arguments

    Type IntentOptional AttributesName
    character(len=*), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from

public interface comms_reduce

  • private subroutine comms_reduce_int(array, size, op)

    Reduce integer data to root node

    Arguments

    Type IntentOptional AttributesName
    integer, intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
  • private subroutine comms_reduce_real(array, size, op)

    Reduce real data to root node

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
  • private subroutine comms_reduce_cmplx(array, size, op)

    Reduce complex data to root node

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op

public interface comms_allreduce

  • private subroutine comms_allreduce_real(array, size, op)

    Reduce real data to all nodes

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
  • private subroutine comms_allreduce_cmplx(array, size, op)

    Reduce complex data to all nodes

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op

public interface comms_gatherv

  • private subroutine comms_gatherv_logical(array, localcount, rootglobalarray, counts, displs)

    Gather real data to root node

    Arguments

    Type IntentOptional AttributesName
    logical, intent(inout) :: array

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

    logical, intent(inout) :: rootglobalarray

    array on the root node to which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_real_1(array, localcount, rootglobalarray, counts, displs)

    Gather real data to root node (for arrays of rank 1)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout), dimension(:):: array

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

    real(kind=dp), intent(inout), dimension(:):: rootglobalarray

    array on the root node to which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_real_2(array, localcount, rootglobalarray, counts, displs)

    Gather real data to root node (for arrays of rank 2)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout), dimension(:, :):: array

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

    real(kind=dp), intent(inout), dimension(:, :):: rootglobalarray

    array on the root node to which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_real_3(array, localcount, rootglobalarray, counts, displs)

    Gather real data to root node (for arrays of rank 3)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout), dimension(:, :, :):: array

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

    real(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray

    array on the root node to which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_real_2_3(array, localcount, rootglobalarray, counts, displs)

    Gather real data to root node (for arrays of rank 2 and 3, respectively)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout), dimension(:, :):: array

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

    real(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray

    array on the root node to which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_cmplx_1(array, localcount, rootglobalarray, counts, displs)

    Gather complex data to root node (for arrays of rank 1)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout), dimension(:):: array
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout), dimension(:):: rootglobalarray
    integer, intent(in), dimension(num_nodes):: counts
    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_cmplx_2(array, localcount, rootglobalarray, counts, displs)

    Gather complex data to root node (for arrays of rank 2)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout), dimension(:, :):: array
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout), dimension(:, :):: rootglobalarray
    integer, intent(in), dimension(num_nodes):: counts
    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_cmplx_3(array, localcount, rootglobalarray, counts, displs)

    Gather complex data to root node (for arrays of rank 3)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout), dimension(:, :, :):: array
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray
    integer, intent(in), dimension(num_nodes):: counts
    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_cmplx_3_4(array, localcount, rootglobalarray, counts, displs)

    Gather complex data to root node (for arrays of rank 3 and 4, respectively)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout), dimension(:, :, :):: array
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout), dimension(:, :, :, :):: rootglobalarray
    integer, intent(in), dimension(num_nodes):: counts
    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_gatherv_cmplx_4(array, localcount, rootglobalarray, counts, displs)

    Gather complex data to root node (for arrays of rank 4)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout), dimension(:, :, :, :):: array
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout), dimension(:, :, :, :):: rootglobalarray
    integer, intent(in), dimension(num_nodes):: counts
    integer, intent(in), dimension(num_nodes):: displs

public interface comms_scatterv

  • private subroutine comms_scatterv_int_1(array, localcount, rootglobalarray, counts, displs)

    Scatter integer data from root node (array of rank 1)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(inout), dimension(:):: array

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

    integer, intent(inout), dimension(:):: rootglobalarray

    array on the root node from which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_scatterv_int_2(array, localcount, rootglobalarray, counts, displs)

    Scatter integer data from root node (array of rank 2)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(inout), dimension(:, :):: array

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

    integer, intent(inout), dimension(:, :):: rootglobalarray

    array on the root node from which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_scatterv_int_3(array, localcount, rootglobalarray, counts, displs)

    Scatter integer data from root node (array of rank 3)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(inout), dimension(:, :, :):: array

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

    integer, intent(inout), dimension(:, :, :):: rootglobalarray

    array on the root node from which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_scatterv_real_1(array, localcount, rootglobalarray, counts, displs)

    Scatter real data from root node (array of rank 1)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout), dimension(:):: array

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

    real(kind=dp), intent(inout), dimension(:):: rootglobalarray

    array on the root node from which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_scatterv_real_2(array, localcount, rootglobalarray, counts, displs)

    Scatter real data from root node (array of rank 2)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout), dimension(:, :):: array

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

    real(kind=dp), intent(inout), dimension(:, :):: rootglobalarray

    array on the root node from which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_scatterv_real_3(array, localcount, rootglobalarray, counts, displs)

    Scatter real data from root node (array of rank 3)

    Arguments

    Type IntentOptional AttributesName
    real(kind=dp), intent(inout), dimension(:, :, :):: array

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

    real(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray

    array on the root node from which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs
  • private subroutine comms_scatterv_cmplx_4(array, localcount, rootglobalarray, counts, displs)

    Scatter complex data from root node (array of rank 4)

    Arguments

    Type IntentOptional AttributesName
    complex(kind=dp), intent(inout), dimension(:, :, :, :):: array

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

    complex(kind=dp), intent(inout), dimension(:, :, :, :):: rootglobalarray

    array on the root node from which data will be sent

    integer, intent(in), dimension(num_nodes):: counts

    how data should be partitioned, see MPI documentation or function comms_array_split

    integer, intent(in), dimension(num_nodes):: displs

Subroutines

public subroutine comms_setup()

Set up communications

Arguments

None

public subroutine comms_setup_vars()

Set up variables related to communicators This should be called also in library mode

Arguments

None

public subroutine comms_array_split(numpoints, counts, displs)

Given an array of size numpoints, we want to split on num_nodes nodes. This function returns two arrays: count and displs.

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: numpoints

Number of elements of the array to be scattered

integer, intent(out), dimension(0:num_nodes - 1):: counts

Array (of size num_nodes) with the number of elements of the array on each node

integer, intent(out), dimension(0:num_nodes - 1):: displs

Array (of size num_nodes) with the displacement relative to the global array

public subroutine comms_end()

Called to finalise the comms

Arguments

None

public subroutine comms_barrier()

A barrier to synchronise all nodes

Arguments

None

private subroutine comms_bcast_int(array, size)

Send integar array from root node to all nodes

Arguments

Type IntentOptional AttributesName
integer, intent(inout) :: array
integer, intent(in) :: size

private subroutine comms_bcast_real(array, size)

Send real array from root node to all nodes

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size

private subroutine comms_bcast_logical(array, size)

Send logical array from root node to all nodes

Arguments

Type IntentOptional AttributesName
logical, intent(inout) :: array
integer, intent(in) :: size

private subroutine comms_bcast_char(array, size)

Send character array from root node to all nodes

Arguments

Type IntentOptional AttributesName
character(len=*), intent(inout) :: array
integer, intent(in) :: size

private subroutine comms_bcast_cmplx(array, size)

Send character array from root node to all nodes

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size

private subroutine comms_send_logical(array, size, to)

Send logical array to specified node

Arguments

Type IntentOptional AttributesName
logical, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to

private subroutine comms_send_int(array, size, to)

Send integer array to specified node

Arguments

Type IntentOptional AttributesName
integer, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to

private subroutine comms_send_char(array, size, to)

Send character array to specified node

Arguments

Type IntentOptional AttributesName
character(len=*), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to

private subroutine comms_send_real(array, size, to)

Send real array to specified node

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to

private subroutine comms_send_cmplx(array, size, to)

Send complex array to specified node

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to

private subroutine comms_recv_logical(array, size, from)

Receive logical array from specified node

Arguments

Type IntentOptional AttributesName
logical, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from

private subroutine comms_recv_int(array, size, from)

Receive integer array from specified node

Arguments

Type IntentOptional AttributesName
integer, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from

private subroutine comms_recv_char(array, size, from)

Receive character array from specified node

Arguments

Type IntentOptional AttributesName
character(len=*), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from

private subroutine comms_recv_real(array, size, from)

Receive real array from specified node

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from

private subroutine comms_recv_cmplx(array, size, from)

Receive complex array from specified node

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from

private subroutine comms_reduce_int(array, size, op)

Reduce integer data to root node

Arguments

Type IntentOptional AttributesName
integer, intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op

private subroutine comms_reduce_real(array, size, op)

Reduce real data to root node

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op

private subroutine comms_reduce_cmplx(array, size, op)

Reduce complex data to root node

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op

private subroutine comms_allreduce_real(array, size, op)

Reduce real data to all nodes

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op

private subroutine comms_allreduce_cmplx(array, size, op)

Reduce complex data to all nodes

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op

private subroutine comms_gatherv_real_1(array, localcount, rootglobalarray, counts, displs)

Gather real data to root node (for arrays of rank 1)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout), dimension(:):: array

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

real(kind=dp), intent(inout), dimension(:):: rootglobalarray

array on the root node to which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_real_2(array, localcount, rootglobalarray, counts, displs)

Gather real data to root node (for arrays of rank 2)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout), dimension(:, :):: array

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

real(kind=dp), intent(inout), dimension(:, :):: rootglobalarray

array on the root node to which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_real_3(array, localcount, rootglobalarray, counts, displs)

Gather real data to root node (for arrays of rank 3)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout), dimension(:, :, :):: array

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

real(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray

array on the root node to which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_real_2_3(array, localcount, rootglobalarray, counts, displs)

Gather real data to root node (for arrays of rank 2 and 3, respectively)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout), dimension(:, :):: array

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

real(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray

array on the root node to which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_cmplx_1(array, localcount, rootglobalarray, counts, displs)

Gather complex data to root node (for arrays of rank 1)

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout), dimension(:):: array
integer, intent(in) :: localcount
complex(kind=dp), intent(inout), dimension(:):: rootglobalarray
integer, intent(in), dimension(num_nodes):: counts
integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_cmplx_2(array, localcount, rootglobalarray, counts, displs)

Gather complex data to root node (for arrays of rank 2)

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout), dimension(:, :):: array
integer, intent(in) :: localcount
complex(kind=dp), intent(inout), dimension(:, :):: rootglobalarray
integer, intent(in), dimension(num_nodes):: counts
integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_cmplx_3(array, localcount, rootglobalarray, counts, displs)

Gather complex data to root node (for arrays of rank 3)

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout), dimension(:, :, :):: array
integer, intent(in) :: localcount
complex(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray
integer, intent(in), dimension(num_nodes):: counts
integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_cmplx_3_4(array, localcount, rootglobalarray, counts, displs)

Gather complex data to root node (for arrays of rank 3 and 4, respectively)

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout), dimension(:, :, :):: array
integer, intent(in) :: localcount
complex(kind=dp), intent(inout), dimension(:, :, :, :):: rootglobalarray
integer, intent(in), dimension(num_nodes):: counts
integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_cmplx_4(array, localcount, rootglobalarray, counts, displs)

Gather complex data to root node (for arrays of rank 4)

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout), dimension(:, :, :, :):: array
integer, intent(in) :: localcount
complex(kind=dp), intent(inout), dimension(:, :, :, :):: rootglobalarray
integer, intent(in), dimension(num_nodes):: counts
integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_gatherv_logical(array, localcount, rootglobalarray, counts, displs)

Gather real data to root node

Arguments

Type IntentOptional AttributesName
logical, intent(inout) :: array

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

logical, intent(inout) :: rootglobalarray

array on the root node to which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_scatterv_real_1(array, localcount, rootglobalarray, counts, displs)

Scatter real data from root node (array of rank 1)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout), dimension(:):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

real(kind=dp), intent(inout), dimension(:):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_scatterv_real_2(array, localcount, rootglobalarray, counts, displs)

Scatter real data from root node (array of rank 2)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout), dimension(:, :):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

real(kind=dp), intent(inout), dimension(:, :):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_scatterv_real_3(array, localcount, rootglobalarray, counts, displs)

Scatter real data from root node (array of rank 3)

Arguments

Type IntentOptional AttributesName
real(kind=dp), intent(inout), dimension(:, :, :):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

real(kind=dp), intent(inout), dimension(:, :, :):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_scatterv_cmplx_4(array, localcount, rootglobalarray, counts, displs)

Scatter complex data from root node (array of rank 4)

Arguments

Type IntentOptional AttributesName
complex(kind=dp), intent(inout), dimension(:, :, :, :):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

complex(kind=dp), intent(inout), dimension(:, :, :, :):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_scatterv_int_1(array, localcount, rootglobalarray, counts, displs)

Scatter integer data from root node (array of rank 1)

Arguments

Type IntentOptional AttributesName
integer, intent(inout), dimension(:):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

integer, intent(inout), dimension(:):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_scatterv_int_2(array, localcount, rootglobalarray, counts, displs)

Scatter integer data from root node (array of rank 2)

Arguments

Type IntentOptional AttributesName
integer, intent(inout), dimension(:, :):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

integer, intent(inout), dimension(:, :):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs

private subroutine comms_scatterv_int_3(array, localcount, rootglobalarray, counts, displs)

Scatter integer data from root node (array of rank 3)

Arguments

Type IntentOptional AttributesName
integer, intent(inout), dimension(:, :, :):: array

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

integer, intent(inout), dimension(:, :, :):: rootglobalarray

array on the root node from which data will be sent

integer, intent(in), dimension(num_nodes):: counts

how data should be partitioned, see MPI documentation or function comms_array_split

integer, intent(in), dimension(num_nodes):: displs