w90_wannierise Subroutine

public subroutine w90_wannierise(common_data, istdout, istderr, ierr)

Uses

  • proc~~w90_wannierise~2~~UsesGraph proc~w90_wannierise~2 w90_wannierise module~w90_comms w90_comms proc~w90_wannierise~2->module~w90_comms module~w90_error w90_error proc~w90_wannierise~2->module~w90_error module~w90_error_base w90_error_base proc~w90_wannierise~2->module~w90_error_base module~w90_wannierise_mod w90_wannierise_mod proc~w90_wannierise~2->module~w90_wannierise_mod module~w90_comms->module~w90_error_base module~w90_constants w90_constants module~w90_comms->module~w90_constants module~w90_error->module~w90_comms module~w90_error->module~w90_error_base module~w90_wannierise_mod->module~w90_comms module~w90_wannierise_mod->module~w90_error module~w90_wannierise_mod->module~w90_constants

Arguments

Type IntentOptional Attributes Name
type(lib_common_type), intent(inout) :: common_data
integer, intent(in) :: istdout
integer, intent(in) :: istderr
integer, intent(out) :: ierr

Calls

proc~~w90_wannierise~2~~CallsGraph proc~w90_wannierise~2 w90_wannierise proc~comms_sync_error comms_sync_error proc~w90_wannierise~2->proc~comms_sync_error proc~mpirank mpirank proc~w90_wannierise~2->proc~mpirank proc~prterr prterr proc~w90_wannierise~2->proc~prterr proc~set_error_fatal set_error_fatal proc~w90_wannierise~2->proc~set_error_fatal proc~wann_main wann_main proc~w90_wannierise~2->proc~wann_main proc~wann_main_gamma wann_main_gamma proc~w90_wannierise~2->proc~wann_main_gamma proc~prterr->proc~mpirank interface~comms_no_sync_bcast comms_no_sync_bcast proc~prterr->interface~comms_no_sync_bcast interface~comms_no_sync_recv comms_no_sync_recv proc~prterr->interface~comms_no_sync_recv interface~comms_no_sync_send comms_no_sync_send proc~prterr->interface~comms_no_sync_send proc~mpisize mpisize proc~prterr->proc~mpisize proc~set_error_fatal->proc~comms_sync_error proc~set_base_error set_base_error proc~set_error_fatal->proc~set_base_error proc~wann_main->proc~mpirank proc~wann_main->proc~set_error_fatal interface~comms_allreduce comms_allreduce proc~wann_main->interface~comms_allreduce proc~hamiltonian_setup hamiltonian_setup proc~wann_main->proc~hamiltonian_setup proc~internal_test_convergence internal_test_convergence proc~wann_main->proc~internal_test_convergence proc~io_stopwatch_start io_stopwatch_start proc~wann_main->proc~io_stopwatch_start proc~io_stopwatch_stop io_stopwatch_stop proc~wann_main->proc~io_stopwatch_stop proc~io_wallclocktime io_wallclocktime proc~wann_main->proc~io_wallclocktime proc~wann_main->proc~mpisize proc~set_error_alloc set_error_alloc proc~wann_main->proc~set_error_alloc proc~set_error_dealloc set_error_dealloc proc~wann_main->proc~set_error_dealloc proc~sitesym_symmetrize_gradient sitesym_symmetrize_gradient proc~wann_main->proc~sitesym_symmetrize_gradient proc~sitesym_symmetrize_rotation sitesym_symmetrize_rotation proc~wann_main->proc~sitesym_symmetrize_rotation proc~utility_frac_to_cart utility_frac_to_cart proc~wann_main->proc~utility_frac_to_cart proc~utility_zgemm utility_zgemm proc~wann_main->proc~utility_zgemm proc~wann_check_unitarity wann_check_unitarity proc~wann_main->proc~wann_check_unitarity proc~wann_domega wann_domega proc~wann_main->proc~wann_domega proc~wann_omega wann_omega proc~wann_main->proc~wann_omega proc~wann_phases wann_phases proc~wann_main->proc~wann_phases proc~wann_spread_copy wann_spread_copy proc~wann_main->proc~wann_spread_copy zgees zgees proc~wann_main->zgees zgemm zgemm proc~wann_main->zgemm zgemv zgemv proc~wann_main->zgemv zheev zheev proc~wann_main->zheev proc~wann_main_gamma->proc~mpirank proc~wann_main_gamma->proc~internal_test_convergence proc~wann_main_gamma->proc~io_stopwatch_start proc~wann_main_gamma->proc~io_stopwatch_stop proc~io_time io_time proc~wann_main_gamma->proc~io_time proc~wann_main_gamma->proc~set_error_alloc proc~wann_main_gamma->proc~set_error_dealloc proc~wann_main_gamma->proc~utility_frac_to_cart proc~wann_main_gamma->proc~utility_zgemm proc~wann_main_gamma->proc~wann_check_unitarity proc~wann_omega_gamma wann_omega_gamma proc~wann_main_gamma->proc~wann_omega_gamma proc~wann_main_gamma->proc~wann_phases proc~wann_main_gamma->proc~wann_spread_copy proc~comms_allreduce_cmplx comms_allreduce_cmplx interface~comms_allreduce->proc~comms_allreduce_cmplx proc~comms_allreduce_real comms_allreduce_real interface~comms_allreduce->proc~comms_allreduce_real proc~comms_no_sync_bcast_char comms_no_sync_bcast_char interface~comms_no_sync_bcast->proc~comms_no_sync_bcast_char proc~comms_no_sync_bcast_cmplx comms_no_sync_bcast_cmplx interface~comms_no_sync_bcast->proc~comms_no_sync_bcast_cmplx proc~comms_no_sync_bcast_int comms_no_sync_bcast_int interface~comms_no_sync_bcast->proc~comms_no_sync_bcast_int proc~comms_no_sync_bcast_logical comms_no_sync_bcast_logical interface~comms_no_sync_bcast->proc~comms_no_sync_bcast_logical proc~comms_no_sync_bcast_real comms_no_sync_bcast_real interface~comms_no_sync_bcast->proc~comms_no_sync_bcast_real proc~comms_no_sync_recv_char comms_no_sync_recv_char interface~comms_no_sync_recv->proc~comms_no_sync_recv_char proc~comms_no_sync_recv_cmplx comms_no_sync_recv_cmplx interface~comms_no_sync_recv->proc~comms_no_sync_recv_cmplx proc~comms_no_sync_recv_int comms_no_sync_recv_int interface~comms_no_sync_recv->proc~comms_no_sync_recv_int proc~comms_no_sync_recv_logical comms_no_sync_recv_logical interface~comms_no_sync_recv->proc~comms_no_sync_recv_logical proc~comms_no_sync_recv_real comms_no_sync_recv_real interface~comms_no_sync_recv->proc~comms_no_sync_recv_real proc~comms_no_sync_send_char comms_no_sync_send_char interface~comms_no_sync_send->proc~comms_no_sync_send_char proc~comms_no_sync_send_cmplx comms_no_sync_send_cmplx interface~comms_no_sync_send->proc~comms_no_sync_send_cmplx proc~comms_no_sync_send_int comms_no_sync_send_int interface~comms_no_sync_send->proc~comms_no_sync_send_int proc~comms_no_sync_send_logical comms_no_sync_send_logical interface~comms_no_sync_send->proc~comms_no_sync_send_logical proc~comms_no_sync_send_real comms_no_sync_send_real interface~comms_no_sync_send->proc~comms_no_sync_send_real proc~hamiltonian_setup->proc~set_error_alloc proc~hamiltonian_wigner_seitz hamiltonian_wigner_seitz proc~hamiltonian_setup->proc~hamiltonian_wigner_seitz proc~internal_test_convergence->proc~set_error_alloc proc~internal_test_convergence->proc~set_error_dealloc proc~set_error_alloc->proc~comms_sync_error proc~set_error_alloc->proc~set_base_error proc~set_error_dealloc->proc~comms_sync_error proc~set_error_dealloc->proc~set_base_error proc~sitesym_symmetrize_gradient->proc~set_error_fatal proc~sitesym_symmetrize_gradient->proc~utility_zgemm proc~sitesym_symmetrize_rotation->proc~set_error_fatal proc~sitesym_symmetrize_rotation->proc~utility_zgemm proc~utility_zgemm->zgemm proc~wann_check_unitarity->proc~set_error_fatal proc~wann_check_unitarity->proc~io_stopwatch_start proc~wann_check_unitarity->proc~io_stopwatch_stop proc~wann_domega->proc~mpirank proc~wann_domega->interface~comms_allreduce proc~wann_domega->proc~io_stopwatch_start proc~wann_domega->proc~io_stopwatch_stop proc~wann_domega->proc~set_error_alloc proc~wann_domega->proc~set_error_dealloc proc~wann_domega->proc~sitesym_symmetrize_gradient proc~wann_omega->proc~mpirank proc~wann_omega->interface~comms_allreduce proc~wann_omega->proc~io_stopwatch_start proc~wann_omega->proc~io_stopwatch_stop proc~wann_omega->proc~set_error_alloc proc~wann_omega->proc~set_error_dealloc proc~wann_omega_gamma->proc~io_stopwatch_start proc~wann_omega_gamma->proc~io_stopwatch_stop proc~wann_omega_gamma->proc~set_error_alloc proc~wann_omega_gamma->proc~set_error_dealloc proc~wann_phases->interface~comms_allreduce proc~wann_phases->proc~io_stopwatch_start proc~wann_phases->proc~io_stopwatch_stop proc~utility_inv3 utility_inv3 proc~wann_phases->proc~utility_inv3 proc~comms_allreduce_cmplx->proc~comms_sync_error proc~comms_no_sync_allreduce_cmplx comms_no_sync_allreduce_cmplx proc~comms_allreduce_cmplx->proc~comms_no_sync_allreduce_cmplx proc~comms_allreduce_real->proc~comms_sync_error proc~comms_no_sync_allreduce_real comms_no_sync_allreduce_real proc~comms_allreduce_real->proc~comms_no_sync_allreduce_real proc~hamiltonian_wigner_seitz->proc~set_error_fatal proc~hamiltonian_wigner_seitz->proc~io_stopwatch_start proc~hamiltonian_wigner_seitz->proc~io_stopwatch_stop proc~hamiltonian_wigner_seitz->proc~set_error_alloc proc~hamiltonian_wigner_seitz->proc~set_error_dealloc proc~utility_metric utility_metric proc~hamiltonian_wigner_seitz->proc~utility_metric

Called by

proc~~w90_wannierise~2~~CalledByGraph proc~w90_wannierise~2 w90_wannierise proc~w90_wannierise w90_wannierise proc~w90_wannierise->proc~w90_wannierise~2 program~wannier wannier program~wannier->proc~w90_wannierise~2

Source Code

  subroutine w90_wannierise(common_data, istdout, istderr, ierr)
    ! perform MLWF algorithm

    use w90_comms, only: mpirank, comms_sync_error
    use w90_error_base, only: w90_error_type
    use w90_error, only: set_error_fatal
    use w90_wannierise_mod, only: wann_main, wann_main_gamma

    implicit none

    ! arguments
    integer, intent(in) :: istdout, istderr
    integer, intent(out) :: ierr
    type(lib_common_type), intent(inout) :: common_data

    ! local variables
    type(w90_error_type), allocatable :: error

    ierr = 0

    if (.not. associated(common_data%m_matrix_local)) then
      call set_error_fatal(error, 'Error: m_matrix_local not set for call to w90_wannierise()', common_data%comm)
    else if (.not. associated(common_data%u_matrix)) then
      call set_error_fatal(error, 'Error: u_matrix not set for w90_wannierise()', common_data%comm)
    end if
    if (allocated(error)) then
      call prterr(error, ierr, istdout, istderr, common_data%comm)
      return
    end if

    if (common_data%gamma_only) then
      if (mpirank(common_data%comm) == 0) then
        call wann_main_gamma(common_data%kmesh_info, common_data%wann_control, common_data%omega, &
                             common_data%print_output, common_data%wannier_data, &
                             common_data%m_matrix_local, common_data%u_matrix, &
                             common_data%real_lattice, common_data%num_kpts, common_data%num_wann, &
                             istdout, common_data%timer, error, common_data%comm)
        if (allocated(error)) then
          call prterr(error, ierr, istdout, istderr, common_data%comm)
          return
        end if
      end if
      call comms_sync_error(common_data%comm, error, 0) ! this is necessary after root's excursion alone
      if (allocated(error)) then
        call prterr(error, ierr, istdout, istderr, common_data%comm)
        return
      end if
    else
      call wann_main(common_data%ham_logical, common_data%kmesh_info, common_data%kpt_latt, &
                     common_data%wann_control, common_data%omega, common_data%sitesym, &
                     common_data%print_output, common_data%wannier_data, common_data%ws_region, &
                     common_data%w90_calculation, common_data%ham_k, common_data%ham_r, &
                     common_data%m_matrix_local, common_data%u_matrix, common_data%real_lattice, &
                     common_data%wannier_centres_translated, common_data%irvec, &
                     common_data%mp_grid, common_data%ndegen, common_data%nrpts, &
                     common_data%num_kpts, common_data%num_proj, common_data%num_wann, &
                     common_data%optimisation, common_data%rpt_origin, common_data%band_plot%mode, &
                     common_data%tran%mode, common_data%lsitesymmetry, istdout, common_data%timer, &
                     common_data%dist_kpoints, error, common_data%comm)
    end if
    if (allocated(error)) then
      call prterr(error, ierr, istdout, istderr, common_data%comm)
      return
    end if
  end subroutine w90_wannierise