w90_comms Module

This module handles all of the communications

test whether communicator is initialised; returns true always for serial build

These routines do not synchronise errors. You should not normally use them. If you do use them, you are required to make sure that the error conditions between the MPI processes are correctly synced up on exit from your code.


Uses

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

Used by

  • module~~w90_comms~~UsedByGraph module~w90_comms w90_comms module~w90_boltzwann w90_boltzwann module~w90_boltzwann->module~w90_comms module~w90_error w90_error module~w90_boltzwann->module~w90_error module~w90_utility w90_utility module~w90_boltzwann->module~w90_utility module~w90_dos w90_dos module~w90_boltzwann->module~w90_dos module~w90_error->module~w90_comms module~w90_get_oper w90_get_oper module~w90_get_oper->module~w90_comms module~w90_get_oper->module~w90_error module~w90_kmesh w90_kmesh module~w90_kmesh->module~w90_comms module~w90_kmesh->module~w90_error module~w90_library w90_library module~w90_library->module~w90_comms module~w90_overlap w90_overlap module~w90_overlap->module~w90_comms module~w90_plot_mod w90_plot_mod module~w90_plot_mod->module~w90_comms module~w90_postw90_types w90_postw90_types module~w90_postw90_types->module~w90_comms module~w90_readwrite w90_readwrite module~w90_readwrite->module~w90_comms module~w90_sitesym w90_sitesym module~w90_sitesym->module~w90_comms module~w90_sitesym->module~w90_error module~w90_transport_mod w90_transport_mod module~w90_transport_mod->module~w90_comms module~w90_transport_mod->module~w90_error module~w90_utility->module~w90_comms module~w90_wannierise_mod w90_wannierise_mod module~w90_wannierise_mod->module~w90_comms module~w90_wannierise_mod->module~w90_error proc~berry_get_imf_klist berry_get_imf_klist proc~berry_get_imf_klist->module~w90_comms proc~berry_get_imf_klist->module~w90_postw90_types proc~berry_get_imfgh_klist berry_get_imfgh_klist proc~berry_get_imfgh_klist->module~w90_comms proc~berry_get_imfgh_klist->module~w90_postw90_types proc~berry_get_imfgh_klist->module~w90_utility module~w90_postw90_common w90_postw90_common proc~berry_get_imfgh_klist->module~w90_postw90_common module~w90_wan_ham w90_wan_ham proc~berry_get_imfgh_klist->module~w90_wan_ham proc~berry_get_kdotp berry_get_kdotp proc~berry_get_kdotp->module~w90_comms proc~berry_get_kdotp->module~w90_postw90_types proc~berry_get_kdotp->module~w90_utility proc~berry_get_kdotp->module~w90_wan_ham proc~berry_get_kubo_k berry_get_kubo_k proc~berry_get_kubo_k->module~w90_comms proc~berry_get_kubo_k->module~w90_postw90_types proc~berry_get_kubo_k->module~w90_utility proc~berry_get_kubo_k->module~w90_postw90_common module~w90_spin w90_spin proc~berry_get_kubo_k->module~w90_spin proc~berry_get_kubo_k->module~w90_wan_ham proc~berry_get_sc_klist berry_get_sc_klist proc~berry_get_sc_klist->module~w90_comms proc~berry_get_sc_klist->module~w90_postw90_types proc~berry_get_sc_klist->module~w90_utility proc~berry_get_sc_klist->module~w90_postw90_common proc~berry_get_sc_klist->module~w90_wan_ham proc~berry_get_shc_klist berry_get_shc_klist proc~berry_get_shc_klist->module~w90_comms proc~berry_get_shc_klist->module~w90_postw90_types proc~berry_get_shc_klist->module~w90_utility proc~berry_get_shc_klist->module~w90_postw90_common proc~berry_get_shc_klist->module~w90_wan_ham proc~berry_get_shc_tetrahedron berry_get_shc_tetrahedron proc~berry_get_shc_tetrahedron->module~w90_comms proc~berry_get_shc_tetrahedron->module~w90_error proc~berry_get_shc_tetrahedron->module~w90_postw90_types proc~berry_get_shc_tetrahedron->module~w90_utility proc~berry_get_shc_tetrahedron->module~w90_postw90_common proc~berry_main berry_main proc~berry_main->module~w90_comms proc~berry_main->module~w90_get_oper proc~berry_main->module~w90_postw90_types proc~berry_main->module~w90_utility proc~boltzwann_main boltzwann_main proc~boltzwann_main->module~w90_comms proc~boltzwann_main->module~w90_postw90_types proc~calctdfanddos calcTDFandDOS proc~calctdfanddos->module~w90_comms proc~calctdfanddos->module~w90_get_oper proc~calctdfanddos->module~w90_postw90_types proc~calctdfanddos->module~w90_readwrite proc~calctdfanddos->module~w90_utility proc~calctdfanddos->module~w90_wan_ham proc~clean_ws_translate clean_ws_translate proc~clean_ws_translate->module~w90_comms proc~clean_ws_translate->module~w90_error proc~dis_extract dis_extract proc~dis_extract->module~w90_comms proc~dis_extract->module~w90_error proc~dis_extract->module~w90_sitesym proc~dis_extract_gamma dis_extract_gamma proc~dis_extract_gamma->module~w90_comms proc~dis_extract_gamma->module~w90_error proc~dis_main dis_main proc~dis_main->module~w90_comms proc~dis_main->module~w90_error proc~dis_main->module~w90_sitesym proc~dis_main->module~w90_utility proc~dis_windows_proj dis_windows_proj proc~dis_windows_proj->module~w90_comms proc~dis_windows_proj->module~w90_error proc~dos_get_k dos_get_k proc~dos_get_k->module~w90_comms proc~dos_get_k->module~w90_postw90_types proc~dos_get_k->module~w90_utility proc~dos_get_k->module~w90_spin proc~dos_main dos_main proc~dos_main->module~w90_comms proc~dos_main->module~w90_get_oper proc~dos_main->module~w90_postw90_types proc~dos_main->module~w90_utility proc~dos_main->module~w90_postw90_common proc~dos_main->module~w90_wan_ham proc~geninterp_main geninterp_main proc~geninterp_main->module~w90_comms proc~geninterp_main->module~w90_get_oper proc~geninterp_main->module~w90_postw90_types proc~geninterp_main->module~w90_utility proc~geninterp_main->module~w90_postw90_common proc~geninterp_main->module~w90_wan_ham proc~get_module_kmesh get_module_kmesh proc~get_module_kmesh->module~w90_comms proc~get_module_kmesh->module~w90_error proc~gyrotropic_get_k_list gyrotropic_get_k_list proc~gyrotropic_get_k_list->module~w90_comms proc~gyrotropic_get_k_list->module~w90_postw90_types proc~gyrotropic_get_k_list->module~w90_utility proc~gyrotropic_get_k_list->module~w90_postw90_common proc~gyrotropic_get_k_list->module~w90_spin proc~gyrotropic_get_k_list->module~w90_wan_ham 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_types proc~gyrotropic_get_noa_k->module~w90_utility proc~gyrotropic_get_noa_k->module~w90_postw90_common proc~gyrotropic_get_noa_k->module~w90_spin proc~gyrotropic_main gyrotropic_main proc~gyrotropic_main->module~w90_comms proc~gyrotropic_main->module~w90_get_oper proc~gyrotropic_main->module~w90_postw90_types proc~gyrotropic_main->module~w90_utility proc~hamiltonian_write_hr hamiltonian_write_hr proc~hamiltonian_write_hr->module~w90_comms proc~internal_check_orthonorm internal_check_orthonorm proc~internal_check_orthonorm->module~w90_comms proc~internal_check_orthonorm->module~w90_error proc~internal_slim_m internal_slim_m proc~internal_slim_m->module~w90_comms proc~internal_slim_m->module~w90_error proc~k_path k_path proc~k_path->module~w90_comms proc~k_path->module~w90_get_oper proc~k_path->module~w90_postw90_types proc~k_path->module~w90_utility module~w90_berry w90_berry proc~k_path->module~w90_berry proc~k_path->module~w90_postw90_common proc~k_path->module~w90_spin proc~k_path_print_info k_path_print_info proc~k_path_print_info->module~w90_comms proc~k_path_print_info->module~w90_postw90_types proc~k_slice k_slice proc~k_slice->module~w90_comms proc~k_slice->module~w90_get_oper proc~k_slice->module~w90_postw90_types proc~k_slice->module~w90_utility proc~k_slice->module~w90_berry proc~k_slice->module~w90_postw90_common proc~k_slice->module~w90_spin proc~k_slice->module~w90_wan_ham proc~kslice_print_info kslice_print_info proc~kslice_print_info->module~w90_comms proc~kslice_print_info->module~w90_postw90_types proc~plot_calc_projection plot_calc_projection proc~plot_calc_projection->module~w90_comms proc~plot_calc_projection->module~w90_error proc~plot_read_unk plot_read_unk proc~plot_read_unk->module~w90_comms proc~plot_read_unk->module~w90_error proc~plot_svd_omega_i plot_svd_omega_i proc~plot_svd_omega_i->module~w90_comms proc~plot_svd_omega_i->module~w90_error proc~plot_wannier plot_wannier proc~plot_wannier->module~w90_comms proc~plot_wannier->module~w90_error proc~plot_write_r2mn plot_write_r2mn proc~plot_write_r2mn->module~w90_comms proc~plot_write_r2mn->module~w90_error proc~plot_write_rmn plot_write_rmn proc~plot_write_rmn->module~w90_comms proc~plot_write_rmn->module~w90_error proc~print_error_halt print_error_halt proc~print_error_halt->module~w90_comms proc~prterr prterr proc~prterr->module~w90_comms proc~pw90common_fourier_r_to_k pw90common_fourier_R_to_k proc~pw90common_fourier_r_to_k->module~w90_comms proc~pw90common_fourier_r_to_k->module~w90_postw90_types module~w90_ws_distance w90_ws_distance proc~pw90common_fourier_r_to_k->module~w90_ws_distance proc~pw90common_fourier_r_to_k_new pw90common_fourier_R_to_k_new proc~pw90common_fourier_r_to_k_new->module~w90_comms proc~pw90common_fourier_r_to_k_new->module~w90_postw90_types proc~pw90common_fourier_r_to_k_new->module~w90_ws_distance proc~pw90common_fourier_r_to_k_new_second_d pw90common_fourier_R_to_k_new_second_d proc~pw90common_fourier_r_to_k_new_second_d->module~w90_comms proc~pw90common_fourier_r_to_k_new_second_d->module~w90_postw90_types proc~pw90common_fourier_r_to_k_new_second_d->module~w90_ws_distance proc~pw90common_fourier_r_to_k_new_second_d_tb_conv pw90common_fourier_R_to_k_new_second_d_TB_conv proc~pw90common_fourier_r_to_k_new_second_d_tb_conv->module~w90_comms proc~pw90common_fourier_r_to_k_new_second_d_tb_conv->module~w90_postw90_types proc~pw90common_fourier_r_to_k_new_second_d_tb_conv->module~w90_utility proc~pw90common_fourier_r_to_k_new_second_d_tb_conv->module~w90_ws_distance proc~pw90common_fourier_r_to_k_vec pw90common_fourier_R_to_k_vec proc~pw90common_fourier_r_to_k_vec->module~w90_comms proc~pw90common_fourier_r_to_k_vec->module~w90_postw90_types proc~pw90common_fourier_r_to_k_vec->module~w90_ws_distance proc~pw90common_fourier_r_to_k_vec_dadb pw90common_fourier_R_to_k_vec_dadb proc~pw90common_fourier_r_to_k_vec_dadb->module~w90_comms proc~pw90common_fourier_r_to_k_vec_dadb->module~w90_postw90_types proc~pw90common_fourier_r_to_k_vec_dadb->module~w90_ws_distance proc~pw90common_fourier_r_to_k_vec_dadb_tb_conv pw90common_fourier_R_to_k_vec_dadb_TB_conv proc~pw90common_fourier_r_to_k_vec_dadb_tb_conv->module~w90_comms proc~pw90common_fourier_r_to_k_vec_dadb_tb_conv->module~w90_postw90_types proc~pw90common_fourier_r_to_k_vec_dadb_tb_conv->module~w90_utility proc~pw90common_fourier_r_to_k_vec_dadb_tb_conv->module~w90_ws_distance proc~pw90common_wanint_data_dist pw90common_wanint_data_dist proc~pw90common_wanint_data_dist->module~w90_comms proc~pw90common_wanint_get_kpoint_file pw90common_wanint_get_kpoint_file proc~pw90common_wanint_get_kpoint_file->module~w90_comms proc~pw90common_wanint_get_kpoint_file->module~w90_postw90_types proc~pw90common_wanint_setup pw90common_wanint_setup proc~pw90common_wanint_setup->module~w90_comms proc~pw90common_wanint_setup->module~w90_postw90_types proc~pw90common_wanint_setup->module~w90_ws_distance proc~pw90common_wanint_w90_wannier90_readwrite_dist pw90common_wanint_w90_wannier90_readwrite_dist proc~pw90common_wanint_w90_wannier90_readwrite_dist->module~w90_comms proc~pw90common_wanint_w90_wannier90_readwrite_dist->module~w90_postw90_types proc~read_chkpt read_chkpt proc~read_chkpt->module~w90_comms proc~read_chkpt->module~w90_error proc~read_chkpt->module~w90_readwrite proc~setup_m_loc setup_m_loc proc~setup_m_loc->module~w90_comms proc~setup_m_loc->module~w90_error proc~spin_get_moment spin_get_moment proc~spin_get_moment->module~w90_comms proc~spin_get_moment->module~w90_get_oper proc~spin_get_moment->module~w90_postw90_types proc~spin_get_moment_k spin_get_moment_k proc~spin_get_moment_k->module~w90_comms proc~spin_get_moment_k->module~w90_postw90_types proc~spin_get_moment_k->module~w90_utility proc~spin_get_moment_k->module~w90_postw90_common proc~spin_get_nk spin_get_nk proc~spin_get_nk->module~w90_comms proc~spin_get_nk->module~w90_postw90_types proc~spin_get_nk->module~w90_utility proc~spin_get_nk->module~w90_postw90_common proc~spin_get_s spin_get_S proc~spin_get_s->module~w90_comms proc~spin_get_s->module~w90_postw90_types proc~spin_get_s->module~w90_utility proc~spin_get_s->module~w90_postw90_common proc~tdf_kpt TDF_kpt proc~tdf_kpt->module~w90_comms proc~tdf_kpt->module~w90_postw90_types proc~tdf_kpt->module~w90_utility proc~tdf_kpt->module~w90_spin proc~w90_distribute_kpts w90_distribute_kpts proc~w90_distribute_kpts->module~w90_comms proc~w90_distribute_kpts->module~w90_error proc~w90_input_reader~2 w90_input_reader proc~w90_input_reader~2->module~w90_comms proc~w90_input_reader~2->module~w90_error proc~w90_input_reader~2->module~w90_readwrite module~w90_wannier90_readwrite w90_wannier90_readwrite proc~w90_input_reader~2->module~w90_wannier90_readwrite proc~w90_input_setopt w90_input_setopt proc~w90_input_setopt->module~w90_comms proc~w90_input_setopt->module~w90_error proc~w90_input_setopt->module~w90_overlap proc~w90_input_setopt->module~w90_readwrite proc~w90_input_setopt->module~w90_wannier90_readwrite proc~w90_postw90_readwrite_dealloc w90_postw90_readwrite_dealloc proc~w90_postw90_readwrite_dealloc->module~w90_comms proc~w90_postw90_readwrite_dealloc->module~w90_error proc~w90_postw90_readwrite_read w90_postw90_readwrite_read proc~w90_postw90_readwrite_read->module~w90_comms proc~w90_postw90_readwrite_read->module~w90_error proc~w90_postw90_readwrite_read->module~w90_utility proc~w90_postw90_readwrite_readall w90_postw90_readwrite_readall proc~w90_postw90_readwrite_readall->module~w90_comms proc~w90_postw90_readwrite_readall->module~w90_error proc~w90_postw90_readwrite_readall->module~w90_utility proc~w90_print_info~2 w90_print_info proc~w90_print_info~2->module~w90_comms proc~w90_print_info~2->module~w90_readwrite proc~w90_print_info~2->module~w90_wannier90_readwrite proc~w90_print_timings w90_print_timings proc~w90_print_timings->module~w90_comms proc~w90_readwrite_chkpt_dist w90_readwrite_chkpt_dist proc~w90_readwrite_chkpt_dist->module~w90_comms proc~w90_readwrite_chkpt_dist->module~w90_error proc~w90_readwrite_read_chkpt_header w90_readwrite_read_chkpt_header proc~w90_readwrite_read_chkpt_header->module~w90_comms proc~w90_readwrite_read_chkpt_header->module~w90_error proc~w90_readwrite_read_chkpt_header->module~w90_utility proc~w90_readwrite_read_chkpt_matrices w90_readwrite_read_chkpt_matrices proc~w90_readwrite_read_chkpt_matrices->module~w90_comms proc~w90_readwrite_read_chkpt_matrices->module~w90_error proc~w90_readwrite_read_chkpt_matrices->module~w90_utility proc~w90_readwrite_read_distk w90_readwrite_read_distk proc~w90_readwrite_read_distk->module~w90_comms proc~w90_readwrite_read_distk->module~w90_error proc~w90_readwrite_read_verbosity w90_readwrite_read_verbosity proc~w90_readwrite_read_verbosity->module~w90_comms proc~w90_readwrite_read_verbosity->module~w90_error proc~w90_transport w90_transport proc~w90_transport->module~w90_comms proc~w90_transport->module~w90_transport_mod proc~w90_wannier90_readwrite_read_berry w90_wannier90_readwrite_read_berry proc~w90_wannier90_readwrite_read_berry->module~w90_comms proc~w90_wannier90_readwrite_read_berry->module~w90_error proc~w90_wannier90_readwrite_read_boltzwann w90_wannier90_readwrite_read_boltzwann proc~w90_wannier90_readwrite_read_boltzwann->module~w90_comms proc~w90_wannier90_readwrite_read_boltzwann->module~w90_error proc~w90_wannier90_readwrite_read_dos w90_wannier90_readwrite_read_dos proc~w90_wannier90_readwrite_read_dos->module~w90_comms proc~w90_wannier90_readwrite_read_dos->module~w90_error proc~w90_wannier90_readwrite_read_effective_model w90_wannier90_readwrite_read_effective_model proc~w90_wannier90_readwrite_read_effective_model->module~w90_comms proc~w90_wannier90_readwrite_read_effective_model->module~w90_error proc~w90_wannier90_readwrite_read_energy_range w90_wannier90_readwrite_read_energy_range proc~w90_wannier90_readwrite_read_energy_range->module~w90_comms proc~w90_wannier90_readwrite_read_energy_range->module~w90_error proc~w90_wannier90_readwrite_read_geninterp w90_wannier90_readwrite_read_geninterp proc~w90_wannier90_readwrite_read_geninterp->module~w90_comms proc~w90_wannier90_readwrite_read_geninterp->module~w90_error proc~w90_wannier90_readwrite_read_global_kmesh w90_wannier90_readwrite_read_global_kmesh proc~w90_wannier90_readwrite_read_global_kmesh->module~w90_comms proc~w90_wannier90_readwrite_read_global_kmesh->module~w90_error proc~w90_wannier90_readwrite_read_gyrotropic w90_wannier90_readwrite_read_gyrotropic proc~w90_wannier90_readwrite_read_gyrotropic->module~w90_comms proc~w90_wannier90_readwrite_read_gyrotropic->module~w90_error proc~w90_wannier90_readwrite_read_kslice w90_wannier90_readwrite_read_kslice proc~w90_wannier90_readwrite_read_kslice->module~w90_comms proc~w90_wannier90_readwrite_read_kslice->module~w90_error proc~w90_wannier90_readwrite_read_local_kmesh w90_wannier90_readwrite_read_local_kmesh proc~w90_wannier90_readwrite_read_local_kmesh->module~w90_comms proc~w90_wannier90_readwrite_read_oper w90_wannier90_readwrite_read_oper proc~w90_wannier90_readwrite_read_oper->module~w90_comms proc~w90_wannier90_readwrite_read_oper->module~w90_error proc~w90_wannier90_readwrite_read_pw90_calcs w90_wannier90_readwrite_read_pw90_calcs proc~w90_wannier90_readwrite_read_pw90_calcs->module~w90_comms proc~w90_wannier90_readwrite_read_pw90_calcs->module~w90_error proc~w90_wannier90_readwrite_read_pw90_kpath w90_wannier90_readwrite_read_pw90_kpath proc~w90_wannier90_readwrite_read_pw90_kpath->module~w90_comms proc~w90_wannier90_readwrite_read_pw90_kpath->module~w90_error proc~w90_wannier90_readwrite_read_pw90ham w90_wannier90_readwrite_read_pw90ham proc~w90_wannier90_readwrite_read_pw90ham->module~w90_comms proc~w90_wannier90_readwrite_read_pw90ham->module~w90_error proc~w90_wannier90_readwrite_read_pw90spin w90_wannier90_readwrite_read_pw90spin proc~w90_wannier90_readwrite_read_pw90spin->module~w90_comms proc~w90_wannier90_readwrite_read_pw90spin->module~w90_error proc~w90_wannier90_readwrite_read_scissors_shift w90_wannier90_readwrite_read_scissors_shift proc~w90_wannier90_readwrite_read_scissors_shift->module~w90_comms proc~w90_wannier90_readwrite_read_scissors_shift->module~w90_error proc~w90_wannier90_readwrite_read_smearing w90_wannier90_readwrite_read_smearing proc~w90_wannier90_readwrite_read_smearing->module~w90_comms proc~w90_wannier90_readwrite_read_smearing->module~w90_error proc~w90_wannier90_readwrite_read_spin_hall w90_wannier90_readwrite_read_spin_hall proc~w90_wannier90_readwrite_read_spin_hall->module~w90_comms proc~w90_wannier90_readwrite_read_spin_hall->module~w90_error proc~w90_wannierise~2 w90_wannierise proc~w90_wannierise~2->module~w90_comms proc~w90_wannierise~2->module~w90_error proc~w90_wannierise~2->module~w90_wannierise_mod proc~wann_check_unitarity wann_check_unitarity proc~wann_check_unitarity->module~w90_comms proc~wann_domega wann_domega proc~wann_domega->module~w90_comms proc~wann_domega->module~w90_sitesym proc~wann_main wann_main proc~wann_main->module~w90_comms proc~wann_main->module~w90_sitesym proc~wann_main->module~w90_utility module~w90_hamiltonian w90_hamiltonian proc~wann_main->module~w90_hamiltonian proc~wann_main_gamma wann_main_gamma proc~wann_main_gamma->module~w90_comms proc~wann_main_gamma->module~w90_utility proc~wann_main_gamma->module~w90_wannier90_readwrite proc~wann_omega wann_omega proc~wann_omega->module~w90_comms proc~wann_phases wann_phases proc~wann_phases->module~w90_comms proc~wann_phases->module~w90_utility proc~wham_get_deleig_a wham_get_deleig_a proc~wham_get_deleig_a->module~w90_comms proc~wham_get_deleig_a->module~w90_postw90_types proc~wham_get_deleig_a->module~w90_utility proc~wham_get_eig_deleig wham_get_eig_deleig proc~wham_get_eig_deleig->module~w90_comms proc~wham_get_eig_deleig->module~w90_get_oper proc~wham_get_eig_deleig->module~w90_postw90_types proc~wham_get_eig_deleig->module~w90_utility proc~wham_get_eig_deleig->module~w90_postw90_common proc~wham_get_eig_deleig_tb_conv wham_get_eig_deleig_TB_conv proc~wham_get_eig_deleig_tb_conv->module~w90_comms proc~wham_get_eig_deleig_tb_conv->module~w90_postw90_types 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_comms proc~wham_get_eig_uu_hh_aa_sc->module~w90_get_oper proc~wham_get_eig_uu_hh_aa_sc->module~w90_postw90_types proc~wham_get_eig_uu_hh_aa_sc->module~w90_utility proc~wham_get_eig_uu_hh_aa_sc->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_comms proc~wham_get_eig_uu_hh_aa_sc_tb_conv->module~w90_get_oper proc~wham_get_eig_uu_hh_aa_sc_tb_conv->module~w90_postw90_types proc~wham_get_eig_uu_hh_aa_sc_tb_conv->module~w90_utility proc~wham_get_eig_uu_hh_aa_sc_tb_conv->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_comms proc~wham_get_eig_uu_hh_jjlist->module~w90_get_oper proc~wham_get_eig_uu_hh_jjlist->module~w90_postw90_types proc~wham_get_eig_uu_hh_jjlist->module~w90_utility proc~wham_get_eig_uu_hh_jjlist->module~w90_postw90_common proc~wham_get_occ_mat_list wham_get_occ_mat_list proc~wham_get_occ_mat_list->module~w90_comms proc~wham_get_occ_mat_list->module~w90_postw90_common proc~wigner_seitz_opt_setup wigner_seitz_opt_setup proc~wigner_seitz_opt_setup->module~w90_comms proc~wigner_seitz_opt_setup->module~w90_postw90_types proc~wignerseitz wignerseitz proc~wignerseitz->module~w90_comms proc~wignerseitz->module~w90_postw90_types proc~wignerseitz->module~w90_utility proc~write_chkpt write_chkpt proc~write_chkpt->module~w90_comms proc~write_chkpt->module~w90_error proc~write_chkpt->module~w90_wannier90_readwrite proc~write_kmesh write_kmesh proc~write_kmesh->module~w90_comms proc~write_kmesh->module~w90_error proc~write_kmesh->module~w90_kmesh program~postw90 postw90 program~postw90->module~w90_comms program~postw90->module~w90_boltzwann program~postw90->module~w90_error program~postw90->module~w90_kmesh program~postw90->module~w90_postw90_types program~postw90->module~w90_readwrite program~postw90->module~w90_berry program~postw90->module~w90_dos module~w90_geninterp w90_geninterp program~postw90->module~w90_geninterp module~w90_gyrotropic w90_gyrotropic program~postw90->module~w90_gyrotropic module~w90_kpath w90_kpath program~postw90->module~w90_kpath module~w90_kslice w90_kslice program~postw90->module~w90_kslice program~postw90->module~w90_postw90_common module~w90_postw90_readwrite w90_postw90_readwrite program~postw90->module~w90_postw90_readwrite program~postw90->module~w90_spin program~wannier wannier program~wannier->module~w90_comms program~wannier->module~w90_error program~wannier->module~w90_library program~wannier->module~w90_sitesym module~w90_library_extra w90_library_extra program~wannier->module~w90_library_extra module~w90_berry->module~w90_error module~w90_dos->module~w90_error module~w90_geninterp->module~w90_error module~w90_gyrotropic->module~w90_error module~w90_gyrotropic->module~w90_berry module~w90_hamiltonian->module~w90_error module~w90_kpath->module~w90_error module~w90_kslice->module~w90_error module~w90_library_c w90_library_c module~w90_library_c->module~w90_library module~w90_library_extra->module~w90_library module~w90_postw90_common->module~w90_error module~w90_postw90_readwrite->module~w90_error module~w90_postw90_readwrite->module~w90_postw90_types module~w90_postw90_readwrite->module~w90_readwrite module~w90_spin->module~w90_error module~w90_wan_ham->module~w90_error module~w90_wannier90_readwrite->module~w90_error module~w90_wannier90_readwrite->module~w90_readwrite module~w90_ws_distance->module~w90_error proc~check_and_sort_similar_centres check_and_sort_similar_centres proc~check_and_sort_similar_centres->module~w90_error proc~clear_block clear_block proc~clear_block->module~w90_error proc~dis_proj_froz dis_proj_froz proc~dis_proj_froz->module~w90_error proc~dis_project dis_project proc~dis_project->module~w90_error proc~dis_windows dis_windows proc~dis_windows->module~w90_error proc~get_aa_r get_AA_R proc~get_aa_r->module~w90_postw90_types proc~get_bb_r get_BB_R proc~get_bb_r->module~w90_postw90_types proc~get_cc_r get_CC_R proc~get_cc_r->module~w90_postw90_types proc~get_cc_r->module~w90_utility proc~get_centre_constraint_from_column get_centre_constraint_from_column proc~get_centre_constraint_from_column->module~w90_error proc~get_ff_r get_FF_R proc~get_ff_r->module~w90_postw90_types proc~get_gauge_overlap_matrix get_gauge_overlap_matrix proc~get_gauge_overlap_matrix->module~w90_utility proc~get_hh_r get_HH_R proc~get_hh_r->module~w90_postw90_types proc~get_saa_r get_SAA_R proc~get_saa_r->module~w90_postw90_types proc~get_sbb_r get_SBB_R proc~get_sbb_r->module~w90_postw90_types proc~get_sh_r get_SH_R proc~get_sh_r->module~w90_postw90_types proc~get_shc_r get_SHC_R proc~get_shc_r->module~w90_postw90_types proc~get_ss_r get_SS_R proc~get_ss_r->module~w90_postw90_types proc~group group proc~group->module~w90_error proc~gyrotropic_get_curv_w_k gyrotropic_get_curv_w_k proc~gyrotropic_get_curv_w_k->module~w90_postw90_types proc~gyrotropic_get_noa_bnl_orb gyrotropic_get_NOA_Bnl_orb proc~gyrotropic_get_noa_bnl_orb->module~w90_postw90_types proc~gyrotropic_outprint_tensor gyrotropic_outprint_tensor proc~gyrotropic_outprint_tensor->module~w90_postw90_types proc~hamiltonian_wigner_seitz hamiltonian_wigner_seitz proc~hamiltonian_wigner_seitz->module~w90_utility proc~input_reader_special input_reader_special proc~input_reader_special->module~w90_error proc~input_reader_special->module~w90_readwrite proc~input_reader_special->module~w90_wannier90_readwrite proc~internal_find_u internal_find_u proc~internal_find_u->module~w90_error proc~internal_find_u->module~w90_sitesym proc~internal_find_u_gamma internal_find_u_gamma proc~internal_find_u_gamma->module~w90_error proc~internal_test_convergence~2 internal_test_convergence proc~internal_test_convergence~2->module~w90_error proc~internal_write_header internal_write_header proc~internal_write_header->module~w90_postw90_types proc~k_path_get_points k_path_get_points proc~k_path_get_points->module~w90_postw90_types proc~k_path_get_points->module~w90_utility proc~kmesh_get kmesh_get proc~kmesh_get->module~w90_utility proc~kmesh_write kmesh_write proc~kmesh_write->module~w90_utility proc~master_sort_and_group master_sort_and_group proc~master_sort_and_group->module~w90_error proc~operator_wigner_setup operator_wigner_setup proc~operator_wigner_setup->module~w90_postw90_types proc~overlap_allocate overlap_allocate proc~overlap_allocate->module~w90_error proc~overlap_dealloc overlap_dealloc proc~overlap_dealloc->module~w90_error proc~overlap_project overlap_project proc~overlap_project->module~w90_error proc~overlap_project->module~w90_sitesym proc~overlap_project->module~w90_utility proc~overlap_project_gamma overlap_project_gamma proc~overlap_project_gamma->module~w90_error proc~overlap_project_gamma->module~w90_utility proc~overlap_read overlap_read proc~overlap_read->module~w90_error proc~overlap_rotate overlap_rotate proc~overlap_rotate->module~w90_error proc~overlap_write overlap_write proc~overlap_write->module~w90_error proc~overlaps overlaps proc~overlaps->module~w90_error proc~overlaps->module~w90_overlap proc~plot_bvec plot_bvec proc~plot_bvec->module~w90_error proc~plot_fermi_surface plot_fermi_surface proc~plot_fermi_surface->module~w90_error proc~plot_interpolate_bands plot_interpolate_bands proc~plot_interpolate_bands->module~w90_error proc~plot_interpolate_bands->module~w90_utility proc~plot_interpolate_bands->module~w90_ws_distance proc~plot_main plot_main proc~plot_main->module~w90_error proc~plot_main->module~w90_utility proc~plot_main->module~w90_hamiltonian proc~plot_main->module~w90_ws_distance proc~plot_u_matrices plot_u_matrices proc~plot_u_matrices->module~w90_error proc~plot_write_vdw_data plot_write_vdw_data proc~plot_write_vdw_data->module~w90_error proc~plot_write_vdw_data->module~w90_utility proc~plot_write_xyz plot_write_xyz proc~plot_write_xyz->module~w90_error proc~plot_write_xyz->module~w90_utility proc~r_wz_sc R_wz_sc proc~r_wz_sc->module~w90_utility proc~read_eigvals read_eigvals proc~read_eigvals->module~w90_error proc~read_eigvals->module~w90_readwrite proc~readwrite_get_atoms readwrite_get_atoms proc~readwrite_get_atoms->module~w90_error proc~readwrite_get_atoms->module~w90_utility proc~set_kpoint_distribution set_kpoint_distribution proc~set_kpoint_distribution->module~w90_error proc~sitesym_symmetrize_gradient sitesym_symmetrize_gradient proc~sitesym_symmetrize_gradient->module~w90_error proc~sitesym_symmetrize_gradient->module~w90_utility proc~sitesym_symmetrize_rotation sitesym_symmetrize_rotation proc~sitesym_symmetrize_rotation->module~w90_error proc~sitesym_symmetrize_rotation->module~w90_utility proc~symmetrize_ukirr symmetrize_ukirr proc~symmetrize_ukirr->module~w90_error proc~tetrahedron_integral tetrahedron_integral proc~tetrahedron_integral->module~w90_utility proc~tran_bulk tran_bulk proc~tran_bulk->module~w90_error proc~tran_find_integral_signatures tran_find_integral_signatures proc~tran_find_integral_signatures->module~w90_error proc~tran_get_ht tran_get_ht proc~tran_get_ht->module~w90_error proc~tran_green tran_green proc~tran_green->module~w90_error proc~tran_lcr tran_lcr proc~tran_lcr->module~w90_error proc~tran_lcr_2c2_build_ham tran_lcr_2c2_build_ham proc~tran_lcr_2c2_build_ham->module~w90_error proc~tran_lcr_2c2_sort tran_lcr_2c2_sort proc~tran_lcr_2c2_sort->module~w90_error proc~tran_main tran_main proc~tran_main->module~w90_error proc~tran_main->module~w90_hamiltonian proc~tran_read_htc tran_read_htC proc~tran_read_htc->module~w90_error proc~tran_read_htx tran_read_htX proc~tran_read_htx->module~w90_error proc~tran_read_htxy tran_read_htXY proc~tran_read_htxy->module~w90_error proc~tran_reduce_hr tran_reduce_hr proc~tran_reduce_hr->module~w90_error proc~tran_transfer tran_transfer proc~tran_transfer->module~w90_error proc~utility_diagonalize utility_diagonalize proc~utility_diagonalize->module~w90_error proc~utility_recip_lattice utility_recip_lattice proc~utility_recip_lattice->module~w90_error proc~utility_string_to_coord utility_string_to_coord proc~utility_string_to_coord->module~w90_error proc~utility_w0gauss utility_w0gauss proc~utility_w0gauss->module~w90_error proc~utility_w0gauss_vec utility_w0gauss_vec proc~utility_w0gauss_vec->module~w90_error proc~w90_create_kmesh w90_create_kmesh proc~w90_create_kmesh->module~w90_kmesh proc~w90_disentangle~2 w90_disentangle proc~w90_disentangle~2->module~w90_error proc~w90_disentangle~2->module~w90_overlap proc~w90_get_excl_bands~2 w90_get_excl_bands proc~w90_get_excl_bands~2->module~w90_error proc~w90_get_proj~2 w90_get_proj proc~w90_get_proj~2->module~w90_error proc~w90_plot w90_plot proc~w90_plot->module~w90_plot_mod proc~w90_postw90_readwrite_write w90_postw90_readwrite_write proc~w90_postw90_readwrite_write->module~w90_utility proc~w90_project_overlap~2 w90_project_overlap proc~w90_project_overlap~2->module~w90_error proc~w90_project_overlap~2->module~w90_overlap proc~w90_readwrite_clean_infile w90_readwrite_clean_infile proc~w90_readwrite_clean_infile->module~w90_error proc~w90_readwrite_clear_keywords w90_readwrite_clear_keywords proc~w90_readwrite_clear_keywords->module~w90_error proc~w90_readwrite_dealloc w90_readwrite_dealloc proc~w90_readwrite_dealloc->module~w90_error proc~w90_readwrite_get_block_length w90_readwrite_get_block_length proc~w90_readwrite_get_block_length->module~w90_error proc~w90_readwrite_get_centre_constraints w90_readwrite_get_centre_constraints proc~w90_readwrite_get_centre_constraints->module~w90_error proc~w90_readwrite_get_centre_constraints->module~w90_utility proc~w90_readwrite_get_keyword w90_readwrite_get_keyword proc~w90_readwrite_get_keyword->module~w90_error proc~w90_readwrite_get_keyword_block w90_readwrite_get_keyword_block proc~w90_readwrite_get_keyword_block->module~w90_error proc~w90_readwrite_get_keyword_explicit_kpath w90_readwrite_get_keyword_explicit_kpath proc~w90_readwrite_get_keyword_explicit_kpath->module~w90_error proc~w90_readwrite_get_keyword_kpath w90_readwrite_get_keyword_kpath proc~w90_readwrite_get_keyword_kpath->module~w90_error proc~w90_readwrite_get_keyword_vector w90_readwrite_get_keyword_vector proc~w90_readwrite_get_keyword_vector->module~w90_error proc~w90_readwrite_get_projections w90_readwrite_get_projections proc~w90_readwrite_get_projections->module~w90_error proc~w90_readwrite_get_projections->module~w90_utility proc~w90_readwrite_get_range_vector w90_readwrite_get_range_vector proc~w90_readwrite_get_range_vector->module~w90_error proc~w90_readwrite_get_smearing_index w90_readwrite_get_smearing_index proc~w90_readwrite_get_smearing_index->module~w90_error proc~w90_readwrite_get_vector_length w90_readwrite_get_vector_length proc~w90_readwrite_get_vector_length->module~w90_error proc~w90_readwrite_in_file w90_readwrite_in_file proc~w90_readwrite_in_file->module~w90_error proc~w90_readwrite_in_file->module~w90_utility proc~w90_readwrite_read_algorithm_control w90_readwrite_read_algorithm_control proc~w90_readwrite_read_algorithm_control->module~w90_error proc~w90_readwrite_read_atoms w90_readwrite_read_atoms proc~w90_readwrite_read_atoms->module~w90_error proc~w90_readwrite_read_atoms->module~w90_utility proc~w90_readwrite_read_chkpt w90_readwrite_read_chkpt proc~w90_readwrite_read_chkpt->module~w90_error proc~w90_readwrite_read_chkpt->module~w90_utility proc~w90_readwrite_read_dis_manifold w90_readwrite_read_dis_manifold proc~w90_readwrite_read_dis_manifold->module~w90_error proc~w90_readwrite_read_eigvals w90_readwrite_read_eigvals proc~w90_readwrite_read_eigvals->module~w90_error proc~w90_readwrite_read_exclude_bands w90_readwrite_read_exclude_bands proc~w90_readwrite_read_exclude_bands->module~w90_error proc~w90_readwrite_read_explicit_kpath w90_readwrite_read_explicit_kpath proc~w90_readwrite_read_explicit_kpath->module~w90_error proc~w90_readwrite_read_explicit_kpath_points w90_readwrite_read_explicit_kpath_points proc~w90_readwrite_read_explicit_kpath_points->module~w90_error proc~w90_readwrite_read_fermi_energy w90_readwrite_read_fermi_energy proc~w90_readwrite_read_fermi_energy->module~w90_error proc~w90_readwrite_read_final_alloc w90_readwrite_read_final_alloc proc~w90_readwrite_read_final_alloc->module~w90_error proc~w90_readwrite_read_gamma_only w90_readwrite_read_gamma_only proc~w90_readwrite_read_gamma_only->module~w90_error proc~w90_readwrite_read_kmesh_data w90_readwrite_read_kmesh_data proc~w90_readwrite_read_kmesh_data->module~w90_error proc~w90_readwrite_read_kpath w90_readwrite_read_kpath proc~w90_readwrite_read_kpath->module~w90_error proc~w90_readwrite_read_kpoints w90_readwrite_read_kpoints proc~w90_readwrite_read_kpoints->module~w90_error proc~w90_readwrite_read_lattice w90_readwrite_read_lattice proc~w90_readwrite_read_lattice->module~w90_error proc~w90_readwrite_read_mp_grid w90_readwrite_read_mp_grid proc~w90_readwrite_read_mp_grid->module~w90_error proc~w90_readwrite_read_num_bands w90_readwrite_read_num_bands proc~w90_readwrite_read_num_bands->module~w90_error proc~w90_readwrite_read_num_wann w90_readwrite_read_num_wann proc~w90_readwrite_read_num_wann->module~w90_error proc~w90_readwrite_read_system w90_readwrite_read_system proc~w90_readwrite_read_system->module~w90_error proc~w90_readwrite_read_total_bands w90_readwrite_read_total_bands proc~w90_readwrite_read_total_bands->module~w90_error proc~w90_readwrite_read_units w90_readwrite_read_units proc~w90_readwrite_read_units->module~w90_error proc~w90_readwrite_read_ws_data w90_readwrite_read_ws_data proc~w90_readwrite_read_ws_data->module~w90_error proc~w90_readwrite_set_atoms w90_readwrite_set_atoms proc~w90_readwrite_set_atoms->module~w90_error proc~w90_readwrite_set_atoms->module~w90_utility proc~w90_readwrite_write_win w90_readwrite_write_win proc~w90_readwrite_write_win->module~w90_error proc~w90_set_option_c2d w90_set_option_c2d proc~w90_set_option_c2d->module~w90_readwrite proc~w90_set_option_i1d w90_set_option_i1d proc~w90_set_option_i1d->module~w90_readwrite proc~w90_set_option_i2d w90_set_option_i2d proc~w90_set_option_i2d->module~w90_readwrite proc~w90_set_option_int w90_set_option_int proc~w90_set_option_int->module~w90_readwrite proc~w90_set_option_logical w90_set_option_logical proc~w90_set_option_logical->module~w90_readwrite proc~w90_set_option_r1d w90_set_option_r1d proc~w90_set_option_r1d->module~w90_readwrite proc~w90_set_option_r2d w90_set_option_r2d proc~w90_set_option_r2d->module~w90_readwrite proc~w90_set_option_real w90_set_option_real proc~w90_set_option_real->module~w90_readwrite proc~w90_set_option_text w90_set_option_text proc~w90_set_option_text->module~w90_readwrite proc~w90_wannier90_readwrite_read w90_wannier90_readwrite_read proc~w90_wannier90_readwrite_read->module~w90_utility proc~w90_wannier90_readwrite_read_band_plot w90_wannier90_readwrite_read_band_plot proc~w90_wannier90_readwrite_read_band_plot->module~w90_error proc~w90_wannier90_readwrite_read_bloch_phase w90_wannier90_readwrite_read_bloch_phase proc~w90_wannier90_readwrite_read_bloch_phase->module~w90_error proc~w90_wannier90_readwrite_read_disentangle w90_wannier90_readwrite_read_disentangle proc~w90_wannier90_readwrite_read_disentangle->module~w90_error proc~w90_wannier90_readwrite_read_dist_cutoff w90_wannier90_readwrite_read_dist_cutoff proc~w90_wannier90_readwrite_read_dist_cutoff->module~w90_error proc~w90_wannier90_readwrite_read_explicit_kpts w90_wannier90_readwrite_read_explicit_kpts proc~w90_wannier90_readwrite_read_explicit_kpts->module~w90_error proc~w90_wannier90_readwrite_read_explicit_kpts->module~w90_utility proc~w90_wannier90_readwrite_read_fermi_surface w90_wannier90_readwrite_read_fermi_surface proc~w90_wannier90_readwrite_read_fermi_surface->module~w90_error proc~w90_wannier90_readwrite_read_hamil w90_wannier90_readwrite_read_hamil proc~w90_wannier90_readwrite_read_hamil->module~w90_error proc~w90_wannier90_readwrite_read_one_dim w90_wannier90_readwrite_read_one_dim proc~w90_wannier90_readwrite_read_one_dim->module~w90_error proc~w90_wannier90_readwrite_read_outfiles w90_wannier90_readwrite_read_outfiles proc~w90_wannier90_readwrite_read_outfiles->module~w90_error proc~w90_wannier90_readwrite_read_plot_info w90_wannier90_readwrite_read_plot_info proc~w90_wannier90_readwrite_read_plot_info->module~w90_error proc~w90_wannier90_readwrite_read_post_proc w90_wannier90_readwrite_read_post_proc proc~w90_wannier90_readwrite_read_post_proc->module~w90_error proc~w90_wannier90_readwrite_read_projections w90_wannier90_readwrite_read_projections proc~w90_wannier90_readwrite_read_projections->module~w90_error proc~w90_wannier90_readwrite_read_restart w90_wannier90_readwrite_read_restart proc~w90_wannier90_readwrite_read_restart->module~w90_error proc~w90_wannier90_readwrite_read_special w90_wannier90_readwrite_read_special proc~w90_wannier90_readwrite_read_special->module~w90_utility proc~w90_wannier90_readwrite_read_sym w90_wannier90_readwrite_read_sym proc~w90_wannier90_readwrite_read_sym->module~w90_error proc~w90_wannier90_readwrite_read_transport w90_wannier90_readwrite_read_transport proc~w90_wannier90_readwrite_read_transport->module~w90_error proc~w90_wannier90_readwrite_read_w90_calcs w90_wannier90_readwrite_read_w90_calcs proc~w90_wannier90_readwrite_read_w90_calcs->module~w90_error proc~w90_wannier90_readwrite_read_wann_plot w90_wannier90_readwrite_read_wann_plot proc~w90_wannier90_readwrite_read_wann_plot->module~w90_error proc~w90_wannier90_readwrite_read_wannierise w90_wannier90_readwrite_read_wannierise proc~w90_wannier90_readwrite_read_wannierise->module~w90_error proc~w90_wannier90_readwrite_w90_dealloc w90_wannier90_readwrite_w90_dealloc proc~w90_wannier90_readwrite_w90_dealloc->module~w90_error proc~w90_wannier90_readwrite_write w90_wannier90_readwrite_write proc~w90_wannier90_readwrite_write->module~w90_utility proc~w90_wannier90_readwrite_write_chkpt w90_wannier90_readwrite_write_chkpt proc~w90_wannier90_readwrite_write_chkpt->module~w90_utility proc~wham_get_d_h wham_get_D_h proc~wham_get_d_h->module~w90_utility proc~wham_get_d_h_a wham_get_D_h_a proc~wham_get_d_h_a->module~w90_utility proc~wham_get_d_h_a->module~w90_postw90_common proc~wham_get_d_h_p_value wham_get_D_h_P_value proc~wham_get_d_h_p_value->module~w90_postw90_types proc~wham_get_d_h_p_value->module~w90_utility proc~wham_get_jjp_jjm_list wham_get_JJp_JJm_list proc~wham_get_jjp_jjm_list->module~w90_utility proc~ws_translate_dist ws_translate_dist proc~ws_translate_dist->module~w90_utility proc~dos_get_levelspacing dos_get_levelspacing proc~dos_get_levelspacing->module~w90_postw90_common

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: code_mpi = 4
integer, private, parameter :: mpi_send_tag = 77
integer, private, parameter :: root_id = 0

Interfaces

public interface comms_bcast

  • private subroutine comms_bcast_int(array, size, error, comm)

    Send integar array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_bcast_logical(array, size, error, comm)

    Send logical array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_bcast_real(array, size, error, comm)

    Send real array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_bcast_cmplx(array, size, error, comm)

    Send character array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_bcast_char(array, size, error, comm)

    Send character array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_reduce

  • private subroutine comms_reduce_int(array, size, op, error, comm)

    Reduce integer data to root node

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_reduce_real(array, size, op, error, comm)

    Reduce real data to root node

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_reduce_cmplx(array, size, op, error, comm)

    Reduce complex data to root node

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_allreduce

  • private subroutine comms_allreduce_real(array, size, op, error, comm)

    Reduce real data to all nodes

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_allreduce_cmplx(array, size, op, error, comm)

    Reduce complex data to all nodes

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_gatherv

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

    Gather real data to root node

    Arguments

    Type IntentOptional Attributes Name
    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) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_real_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_real_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_real_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:,:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_real_2_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_cmplx_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_cmplx_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_cmplx_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_cmplx_3_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_gatherv_cmplx_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_scatterv

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

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

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array(:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_scatterv_int_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array(:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_scatterv_int_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array(:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_scatterv_real_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_scatterv_real_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_scatterv_real_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_scatterv_cmplx_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_scatterv_cmplx_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_no_sync_bcast

  • private subroutine comms_no_sync_bcast_int(array, size, error, comm)

    Send integar array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_bcast_logical(array, size, error, comm)

    Send logical array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_bcast_real(array, size, error, comm)

    Send real array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_bcast_cmplx(array, size, error, comm)

    Send character array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_bcast_char(array, size, error, comm)

    Send character array from root node to all nodes

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(inout) :: array
    integer, intent(in) :: size
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_no_sync_send

  • private subroutine comms_no_sync_send_int(array, size, to, error, comm)

    Send integer array to specified node

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_send_logical(array, size, to, error, comm)

    Send logical array to specified node

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_send_real(array, size, to, error, comm)

    Send real array to specified node

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_send_cmplx(array, size, to, error, comm)

    Send complex array to specified node

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_send_char(array, size, to, error, comm)

    Send character array to specified node

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: to
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_no_sync_recv

  • private subroutine comms_no_sync_recv_int(array, size, from, error, comm)

    Receive integer array from specified node

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_recv_logical(array, size, from, error, comm)

    Receive logical array from specified node

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_recv_real(array, size, from, error, comm)

    Receive real array from specified node

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_recv_cmplx(array, size, from, error, comm)

    Receive complex array from specified node

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_recv_char(array, size, from, error, comm)

    Receive character array from specified node

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(inout) :: array
    integer, intent(in) :: size
    integer, intent(in) :: from
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_no_sync_reduce

  • private subroutine comms_no_sync_reduce_int(array, size, op, error, comm)

    Reduce integer data to root node

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_reduce_real(array, size, op, error, comm)

    Reduce real data to root node

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_reduce_cmplx(array, size, op, error, comm)

    Reduce complex data to root node

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_no_sync_allreduce

  • private subroutine comms_no_sync_allreduce_real(array, size, op, error, comm)

    Reduce real data to all nodes

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_allreduce_cmplx(array, size, op, error, comm)

    Reduce complex data to all nodes

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array
    integer, intent(in) :: size
    character(len=*), intent(in) :: op
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_no_sync_gatherv

  • private subroutine comms_no_sync_gatherv_logical(array, localcount, rootglobalarray, counts, displs, error, comm)

    Gather real data to root node

    Arguments

    Type IntentOptional Attributes Name
    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) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_real_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_real_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_real_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:,:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_real_2_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:)

    local array for sending data

    integer, intent(in) :: localcount

    localcount elements will be sent to the root node

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

    array on the root node to which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_cmplx_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_cmplx_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_cmplx_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_cmplx_3_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_gatherv_cmplx_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:,:)
    integer, intent(in) :: localcount
    complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
    integer, intent(in) :: counts(0:)
    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

public interface comms_no_sync_scatterv

  • private subroutine comms_no_sync_scatterv_int_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array(:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_scatterv_int_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array(:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_scatterv_int_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(inout) :: array(:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_scatterv_real_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_scatterv_real_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_scatterv_real_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    real(kind=dp), intent(inout) :: array(:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_scatterv_cmplx_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm
  • private subroutine comms_no_sync_scatterv_cmplx_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=dp), intent(inout) :: array(:,:,:,:)

    local array for getting data

    integer, intent(in) :: localcount

    localcount elements will be fetched from the root node

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

    array on the root node from which data will be sent

    integer, intent(in) :: counts(0:)

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

    integer, intent(in) :: displs(0:)
    type(w90_error_type), intent(out), allocatable :: error
    type(w90_comm_type), intent(in) :: comm

Derived Types

type, public ::  w90_comm_type

Components

Type Visibility Attributes Name Initial
integer, public :: comm = -1

type, private ::  w90stat_type

Components

Type Visibility Attributes Name Initial
integer, public :: stat

Functions

public function valid_communicator(comm)

Arguments

Type IntentOptional Attributes Name
type(w90_comm_type), intent(in) :: comm

Return Value logical

public function mpirank(comm)

Arguments

Type IntentOptional Attributes Name
type(w90_comm_type), intent(in) :: comm

Return Value integer

public function mpisize(comm)

Arguments

Type IntentOptional Attributes Name
type(w90_comm_type), intent(in) :: comm

Return Value integer


Subroutines

public subroutine comms_sync_error(comm, error, ierr)

Arguments

Type IntentOptional Attributes Name
type(w90_comm_type), intent(in) :: comm
type(w90_error_type), intent(inout), allocatable :: error
integer :: ierr

public subroutine comms_array_split(numpoints, counts, displs, comm)

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 Attributes Name
integer, intent(in) :: numpoints

Number of elements of the array to be scattered

integer, intent(inout) :: counts(0:)

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

integer, intent(inout) :: displs(0:)

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

type(w90_comm_type), intent(in) :: comm

public subroutine comms_no_sync_barrier(comm)

A barrier to synchronise all nodes

Arguments

Type IntentOptional Attributes Name
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_bcast_int(array, size, error, comm)

Send integar array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_bcast_real(array, size, error, comm)

Send real array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_bcast_logical(array, size, error, comm)

Send logical array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
logical, intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_bcast_char(array, size, error, comm)

Send character array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_bcast_cmplx(array, size, error, comm)

Send character array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_send_logical(array, size, to, error, comm)

Send logical array to specified node

Arguments

Type IntentOptional Attributes Name
logical, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_send_int(array, size, to, error, comm)

Send integer array to specified node

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_send_char(array, size, to, error, comm)

Send character array to specified node

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_send_real(array, size, to, error, comm)

Send real array to specified node

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_send_cmplx(array, size, to, error, comm)

Send complex array to specified node

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: to
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_recv_logical(array, size, from, error, comm)

Receive logical array from specified node

Arguments

Type IntentOptional Attributes Name
logical, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_recv_int(array, size, from, error, comm)

Receive integer array from specified node

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_recv_char(array, size, from, error, comm)

Receive character array from specified node

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_recv_real(array, size, from, error, comm)

Receive real array from specified node

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_recv_cmplx(array, size, from, error, comm)

Receive complex array from specified node

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
integer, intent(in) :: from
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_reduce_int(array, size, op, error, comm)

Reduce integer data to root node

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_reduce_real(array, size, op, error, comm)

Reduce real data to root node

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_reduce_cmplx(array, size, op, error, comm)

Reduce complex data to root node

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_allreduce_real(array, size, op, error, comm)

Reduce real data to all nodes

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_allreduce_cmplx(array, size, op, error, comm)

Reduce complex data to all nodes

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_real_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_real_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_real_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:,:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_real_2_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_cmplx_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_cmplx_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_cmplx_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_cmplx_3_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_cmplx_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_gatherv_logical(array, localcount, rootglobalarray, counts, displs, error, comm)

Gather real data to root node

Arguments

Type IntentOptional Attributes Name
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) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_real_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_real_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_real_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_cmplx_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_cmplx_4(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_int_1(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array(:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_int_2(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array(:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_no_sync_scatterv_int_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array(:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

public subroutine comms_barrier(error, comm)

A barrier to synchronise all nodes

Arguments

Type IntentOptional Attributes Name
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_bcast_int(array, size, error, comm)

Send integar array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_bcast_real(array, size, error, comm)

Send real array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_bcast_logical(array, size, error, comm)

Send logical array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
logical, intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_bcast_char(array, size, error, comm)

Send character array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_bcast_cmplx(array, size, error, comm)

Send character array from root node to all nodes

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_reduce_int(array, size, op, error, comm)

Reduce integer data to root node

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_reduce_real(array, size, op, error, comm)

Reduce real data to root node

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_reduce_cmplx(array, size, op, error, comm)

Reduce complex data to root node

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_allreduce_real(array, size, op, error, comm)

Reduce real data to all nodes

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_allreduce_cmplx(array, size, op, error, comm)

Reduce complex data to all nodes

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array
integer, intent(in) :: size
character(len=*), intent(in) :: op
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:,:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:)

local array for sending data

integer, intent(in) :: localcount

localcount elements will be sent to the root node

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

array on the root node to which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:,:)
integer, intent(in) :: localcount
complex(kind=dp), intent(inout) :: rootglobalarray(:,:,:,:)
integer, intent(in) :: counts(0:)
integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

Gather real data to root node

Arguments

Type IntentOptional Attributes Name
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) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: array(:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine comms_scatterv_cmplx_3(array, localcount, rootglobalarray, counts, displs, error, comm)

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(inout) :: array(:,:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array(:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array(:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

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

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

Arguments

Type IntentOptional Attributes Name
integer, intent(inout) :: array(:,:,:)

local array for getting data

integer, intent(in) :: localcount

localcount elements will be fetched from the root node

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

array on the root node from which data will be sent

integer, intent(in) :: counts(0:)

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

integer, intent(in) :: displs(0:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm