hamiltonian_setup Subroutine

public subroutine hamiltonian_setup()

Uses

  • proc~~hamiltonian_setup~~UsesGraph proc~hamiltonian_setup hamiltonian_setup module~w90_constants w90_constants proc~hamiltonian_setup->module~w90_constants module~w90_parameters w90_parameters proc~hamiltonian_setup->module~w90_parameters module~w90_io w90_io proc~hamiltonian_setup->module~w90_io module~w90_parameters->module~w90_constants module~w90_parameters->module~w90_io module~w90_io->module~w90_constants

Allocate arrays and setup data

Arguments

None

Calls

proc~~hamiltonian_setup~~CallsGraph proc~hamiltonian_setup hamiltonian_setup proc~hamiltonian_wigner_seitz hamiltonian_wigner_seitz proc~hamiltonian_setup->proc~hamiltonian_wigner_seitz proc~io_error io_error proc~hamiltonian_wigner_seitz->proc~io_error

Called by

proc~~hamiltonian_setup~~CalledByGraph proc~hamiltonian_setup hamiltonian_setup proc~wann_main wann_main proc~wann_main->proc~hamiltonian_setup proc~plot_main plot_main proc~plot_main->proc~hamiltonian_setup proc~tran_main tran_main proc~tran_main->proc~hamiltonian_setup program~wannier wannier program~wannier->proc~wann_main program~wannier->proc~plot_main program~wannier->proc~tran_main proc~wannier_run wannier_run proc~wannier_run->proc~wann_main proc~wannier_run->proc~plot_main proc~wannier_run->proc~tran_main

Contents

Source Code


Source Code

  subroutine hamiltonian_setup()
    !! Allocate arrays and setup data
    !============================================!

    use w90_constants, only: cmplx_0
    use w90_io, only: io_error
    use w90_parameters, only: num_wann, num_kpts, bands_plot, transport, &
      bands_plot_mode, transport_mode

    implicit none

    integer :: ierr

    if (ham_have_setup) return

    !
    ! Determine whether to use translation
    !
    if (bands_plot .and. (index(bands_plot_mode, 'cut') .ne. 0)) use_translation = .true.
    if (transport .and. (index(transport_mode, 'bulk') .ne. 0)) use_translation = .true.
    if (transport .and. (index(transport_mode, 'lcr') .ne. 0)) use_translation = .true.
    !
    ! Set up Wigner-Seitz vectors
    !
    call hamiltonian_wigner_seitz(count_pts=.true.)
    !
    allocate (irvec(3, nrpts), stat=ierr)
    if (ierr /= 0) call io_error('Error in allocating irvec in hamiltonian_setup')
    irvec = 0
    !
    allocate (ndegen(nrpts), stat=ierr)
    if (ierr /= 0) call io_error('Error in allocating ndegen in hamiltonian_setup')
    ndegen = 0
    !
    allocate (ham_r(num_wann, num_wann, nrpts), stat=ierr)
    if (ierr /= 0) call io_error('Error in allocating ham_r in hamiltonian_setup')
    ham_r = cmplx_0
    !
    allocate (ham_k(num_wann, num_wann, num_kpts), stat=ierr)
    if (ierr /= 0) call io_error('Error in allocating ham_k in hamiltonian_setup')
    ham_k = cmplx_0
    !
    ! Set up the wigner_seitz vectors
    !
    call hamiltonian_wigner_seitz(count_pts=.false.)
    !
    allocate (wannier_centres_translated(3, num_wann), stat=ierr)
    if (ierr /= 0) call io_error('Error allocating wannier_centres_translated in hamiltonian_setup')
    wannier_centres_translated = 0.0_dp

    ham_have_setup = .true.

    return
  end subroutine hamiltonian_setup