performs a variety of transport calculations
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(lib_common_type), | intent(inout) | :: | common_data | |||
| integer, | intent(in) | :: | istdout | |||
| integer, | intent(in) | :: | istderr | |||
| integer, | intent(out) | :: | ierr |
subroutine w90_transport(common_data, istdout, istderr, ierr) !! performs a variety of transport calculations use w90_comms, only: mpirank, comms_sync_error use w90_error_base, only: w90_error_type use w90_transport_mod, only: tran_main implicit none ! arguments integer, intent(in) :: istdout, istderr integer, intent(out) :: ierr type(lib_common_type), intent(inout) :: common_data ! because of ham_logical ! local variables type(w90_error_type), allocatable :: error ierr = 0 ! fixme(jj) what are our preconditions? ! currently tran_main is entirely serial if (mpirank(common_data%comm) == 0) then call tran_main(common_data%atom_data, common_data%dis_manifold, & common_data%fermi_energy_list, common_data%ham_logical, common_data%kpt_latt, & common_data%output_file, common_data%real_space_ham, common_data%tran, & 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%u_matrix, common_data%u_matrix_opt, common_data%eigval, & common_data%real_lattice, common_data%wannier_centres_translated, & common_data%irvec, common_data%mp_grid, common_data%ndegen, & common_data%shift_vec, common_data%nrpts, common_data%num_bands, & common_data%num_kpts, common_data%num_wann, common_data%rpt_origin, & common_data%band_plot%mode, common_data%have_disentangled, & common_data%lsitesymmetry, common_data%seedname, istdout, common_data%timer, & error, common_data%comm) 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 end subroutine w90_transport