tran_read_htX Subroutine

private subroutine tran_read_htX(nxx, h_00, h_01, h_file)

Uses

  • proc~~tran_read_htx~~UsesGraph proc~tran_read_htx tran_read_htX module~w90_constants w90_constants proc~tran_read_htx->module~w90_constants module~w90_io w90_io proc~tran_read_htx->module~w90_io module~w90_io->module~w90_constants

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: nxx
real(kind=dp), intent(out) :: h_00(nxx,nxx)
real(kind=dp), intent(out) :: h_01(nxx,nxx)
character(len=50), intent(in) :: h_file

Calls

proc~~tran_read_htx~~CallsGraph proc~tran_read_htx tran_read_htX proc~io_file_unit io_file_unit proc~tran_read_htx->proc~io_file_unit

Called by

proc~~tran_read_htx~~CalledByGraph proc~tran_read_htx tran_read_htX proc~tran_lcr tran_lcr proc~tran_lcr->proc~tran_read_htx proc~tran_bulk tran_bulk proc~tran_bulk->proc~tran_read_htx proc~tran_main tran_main proc~tran_main->proc~tran_lcr proc~tran_main->proc~tran_bulk 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_read_htX(nxx, h_00, h_01, h_file)
    !============================================!

    use w90_constants, only: dp
    use w90_io, only: stdout, io_file_unit, io_error, maxlen

    implicit none

    integer, intent(in) ::  nxx
    real(kind=dp), intent(out) :: h_00(nxx, nxx), h_01(nxx, nxx)
    character(len=50), intent(in) :: h_file
    !
    integer :: i, j, nw, file_unit
    character(len=maxlen) :: dummy

    file_unit = io_file_unit()

    open (unit=file_unit, file=h_file, form='formatted', &
          status='old', action='read', err=101)

    write (stdout, '(/a)', advance='no') ' Reading H matrix from '//h_file//'  : '

    read (file_unit, '(a)', err=102, end=102) dummy
    write (stdout, '(a)') trim(dummy)

    read (file_unit, *, err=102, end=102) nw
    if (nw .ne. nxx) call io_error('wrong matrix size in transport: read_htX')
    read (file_unit, *) ((h_00(i, j), i=1, nxx), j=1, nxx)
    read (file_unit, *, err=102, end=102) nw
    if (nw .ne. nxx) call io_error('wrong matrix size in transport: read_htX')
    read (file_unit, *, err=102, end=102) ((h_01(i, j), i=1, nxx), j=1, nxx)

    close (unit=file_unit)

    return

101 call io_error('Error: Problem opening input file '//h_file)
102 call io_error('Error: Problem reading input file '//h_file)

  end subroutine tran_read_htX