tran_main Subroutine

public subroutine tran_main()

Uses

  • proc~~tran_main~~UsesGraph proc~tran_main tran_main module~w90_io w90_io proc~tran_main->module~w90_io module~w90_parameters w90_parameters proc~tran_main->module~w90_parameters module~w90_hamiltonian w90_hamiltonian proc~tran_main->module~w90_hamiltonian module~w90_constants w90_constants module~w90_io->module~w90_constants module~w90_parameters->module~w90_io module~w90_parameters->module~w90_constants module~w90_comms w90_comms module~w90_hamiltonian->module~w90_comms module~w90_hamiltonian->module~w90_constants module~w90_comms->module~w90_io module~w90_comms->module~w90_constants

Main transport subroutine

Arguments

None

Calls

proc~~tran_main~~CallsGraph proc~tran_main tran_main proc~tran_cut_hr_one_dim tran_cut_hr_one_dim proc~tran_main->proc~tran_cut_hr_one_dim proc~tran_lcr_2c2_build_ham tran_lcr_2c2_build_ham proc~tran_main->proc~tran_lcr_2c2_build_ham proc~tran_lcr_2c2_sort tran_lcr_2c2_sort proc~tran_main->proc~tran_lcr_2c2_sort proc~hamiltonian_get_hr hamiltonian_get_hr proc~tran_main->proc~hamiltonian_get_hr proc~tran_bulk tran_bulk proc~tran_main->proc~tran_bulk proc~tran_parity_enforce tran_parity_enforce proc~tran_main->proc~tran_parity_enforce proc~tran_get_ht tran_get_ht proc~tran_main->proc~tran_get_ht proc~tran_lcr tran_lcr proc~tran_main->proc~tran_lcr proc~hamiltonian_setup hamiltonian_setup proc~tran_main->proc~hamiltonian_setup proc~tran_reduce_hr tran_reduce_hr proc~tran_main->proc~tran_reduce_hr proc~tran_find_integral_signatures tran_find_integral_signatures proc~tran_main->proc~tran_find_integral_signatures proc~tran_lcr_2c2_build_ham->proc~tran_cut_hr_one_dim proc~tran_lcr_2c2_build_ham->proc~tran_reduce_hr proc~io_date io_date proc~tran_lcr_2c2_build_ham->proc~io_date proc~io_error io_error proc~tran_lcr_2c2_build_ham->proc~io_error proc~io_file_unit io_file_unit proc~tran_lcr_2c2_build_ham->proc~io_file_unit proc~tran_lcr_2c2_sort->proc~tran_cut_hr_one_dim proc~tran_lcr_2c2_sort->proc~tran_reduce_hr proc~master_sort_and_group master_sort_and_group proc~tran_lcr_2c2_sort->proc~master_sort_and_group proc~tran_lcr_2c2_sort->proc~io_error proc~check_and_sort_similar_centres check_and_sort_similar_centres proc~tran_lcr_2c2_sort->proc~check_and_sort_similar_centres proc~sort sort proc~tran_lcr_2c2_sort->proc~sort proc~group group proc~tran_lcr_2c2_sort->proc~group proc~tran_bulk->proc~io_date zgemm zgemm proc~tran_bulk->zgemm proc~tran_transfer tran_transfer proc~tran_bulk->proc~tran_transfer proc~tran_green tran_green proc~tran_bulk->proc~tran_green proc~tran_read_htx tran_read_htX proc~tran_bulk->proc~tran_read_htx proc~tran_bulk->proc~io_file_unit proc~tran_get_ht->proc~io_date proc~tran_get_ht->proc~io_file_unit zgbsv zgbsv proc~tran_lcr->zgbsv proc~tran_read_htc tran_read_htC proc~tran_lcr->proc~tran_read_htc proc~tran_lcr->proc~io_date proc~tran_lcr->zgemm proc~tran_lcr->proc~tran_transfer proc~tran_read_htxy tran_read_htXY proc~tran_lcr->proc~tran_read_htxy proc~tran_lcr->proc~io_error proc~tran_lcr->proc~tran_green proc~tran_lcr->proc~tran_read_htx proc~tran_lcr->proc~io_file_unit proc~hamiltonian_wigner_seitz hamiltonian_wigner_seitz proc~hamiltonian_setup->proc~hamiltonian_wigner_seitz proc~tran_reduce_hr->proc~io_error proc~tran_find_integral_signatures->proc~io_error proc~tran_find_integral_signatures->proc~io_file_unit proc~tran_read_htc->proc~io_file_unit proc~master_sort_and_group->proc~sort proc~master_sort_and_group->proc~group proc~tran_transfer->proc~io_error zaxpy zaxpy proc~tran_transfer->zaxpy zcopy zcopy proc~tran_transfer->zcopy zgesv zgesv proc~tran_transfer->zgesv proc~tran_read_htxy->proc~io_file_unit proc~tran_green->zgemm proc~tran_green->proc~io_error proc~tran_green->zgesv proc~check_and_sort_similar_centres->proc~io_error proc~tran_read_htx->proc~io_file_unit proc~hamiltonian_wigner_seitz->proc~io_error

Called by

proc~~tran_main~~CalledByGraph proc~tran_main tran_main program~wannier wannier program~wannier->proc~tran_main proc~wannier_run wannier_run proc~wannier_run->proc~tran_main

Contents

Source Code


Source Code

  subroutine tran_main()
    !! Main transport subroutine
    !==================================================================!

    use w90_io, only: stdout, io_stopwatch
    use w90_parameters, only: transport_mode, tran_read_ht, timing_level, write_hr, &
      write_xyz
    use w90_hamiltonian, only: hamiltonian_get_hr, hamiltonian_write_hr, hamiltonian_setup

    implicit none

    real(kind=dp), allocatable, dimension(:, :)     :: signatures
    integer                                      :: num_G
    logical                                      :: pl_warning

    if (timing_level > 0) call io_stopwatch('tran: main', 1)

    write (stdout, '(/1x,a)') '*---------------------------------------------------------------------------*'
    write (stdout, '(1x,a)') '|                              TRANSPORT                                    |'
    write (stdout, '(1x,a)') '*---------------------------------------------------------------------------*'
    write (stdout, *)

    if (index(transport_mode, 'bulk') > 0) then
      write (stdout, '(/1x,a/)') 'Calculation of Quantum Conductance and DoS: bulk mode'
      if (.not. tran_read_ht) then
        call hamiltonian_setup()
        call hamiltonian_get_hr()
        if (write_hr) call hamiltonian_write_hr()
        call tran_reduce_hr()
        call tran_cut_hr_one_dim()
        call tran_get_ht()
        if (write_xyz) call tran_write_xyz()
      end if
      call tran_bulk()
    end if

    if (index(transport_mode, 'lcr') > 0) then
      write (stdout, '(/1x,a/)') 'Calculation of Quantum Conductance and DoS: lead-conductor-lead mode'
      if (.not. tran_read_ht) then
        call hamiltonian_setup()
        call hamiltonian_get_hr()
        if (write_hr) call hamiltonian_write_hr()
        call tran_reduce_hr()
        call tran_cut_hr_one_dim()
        write (stdout, *) '------------------------- 2c2 Calculation Type: ------------------------------'
        write (stdout, *) ' '
        call tran_find_integral_signatures(signatures, num_G)
        call tran_lcr_2c2_sort(signatures, num_G, pl_warning)
        if (write_xyz) call tran_write_xyz()
        call tran_parity_enforce(signatures)
        call tran_lcr_2c2_build_ham(pl_warning)
      endif
      call tran_lcr()
    end if

    if (timing_level > 0) call io_stopwatch('tran: main', 2)

  end subroutine tran_main