kslice_print_info Subroutine

private subroutine kslice_print_info(plot_fermi_lines, fermi_lines_color, plot_curv, plot_morb, plot_shc, stdout, pw90_berry, fermi_energy_list, error, comm)

Uses

  • proc~~kslice_print_info~~UsesGraph proc~kslice_print_info kslice_print_info module~w90_comms w90_comms proc~kslice_print_info->module~w90_comms module~w90_constants w90_constants proc~kslice_print_info->module~w90_constants module~w90_postw90_types w90_postw90_types proc~kslice_print_info->module~w90_postw90_types module~w90_comms->module~w90_constants module~w90_error_base w90_error_base module~w90_comms->module~w90_error_base module~w90_postw90_types->module~w90_comms module~w90_postw90_types->module~w90_constants

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: plot_fermi_lines
logical, intent(in) :: fermi_lines_color
logical, intent(in) :: plot_curv
logical, intent(in) :: plot_morb
logical, intent(in) :: plot_shc
integer, intent(in) :: stdout
type(pw90_berry_mod_type), intent(in) :: pw90_berry
real(kind=dp), intent(in), allocatable :: fermi_energy_list(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

Calls

proc~~kslice_print_info~~CallsGraph proc~kslice_print_info kslice_print_info proc~set_error_input set_error_input proc~kslice_print_info->proc~set_error_input proc~comms_sync_error comms_sync_error proc~set_error_input->proc~comms_sync_error proc~set_base_error set_base_error proc~set_error_input->proc~set_base_error

Called by

proc~~kslice_print_info~~CalledByGraph proc~kslice_print_info kslice_print_info proc~k_slice k_slice proc~k_slice->proc~kslice_print_info program~postw90 postw90 program~postw90->proc~k_slice

Source Code

  subroutine kslice_print_info(plot_fermi_lines, fermi_lines_color, plot_curv, plot_morb, &
                               plot_shc, stdout, pw90_berry, fermi_energy_list, error, comm)
    !================================================!

    use w90_constants, only: dp
    use w90_postw90_types, only: pw90_berry_mod_type
    use w90_comms, only: w90_comm_type

    type(pw90_berry_mod_type), intent(in) :: pw90_berry
    real(kind=dp), allocatable, intent(in) :: fermi_energy_list(:)
    type(w90_error_type), allocatable, intent(out) :: error
    type(w90_comm_type), intent(in) :: comm
    integer, intent(in) :: stdout
    logical, intent(in) :: plot_fermi_lines, fermi_lines_color, plot_curv, plot_morb, plot_shc

    integer :: fermi_n

    write (stdout, '(/,/,1x,a)') &
      'Properties calculated in module  k s l i c e'
    write (stdout, '(1x,a)') &
      '--------------------------------------------'

    fermi_n = 0
    if (allocated(fermi_energy_list)) fermi_n = size(fermi_energy_list)
    if (plot_fermi_lines) then
      if (fermi_n /= 1) then
        call set_error_input(error, 'Must specify one Fermi level when kslice_task=fermi_lines', &
                             comm)
        return
      end if
      select case (fermi_lines_color)
      case (.false.)
        write (stdout, '(/,3x,a)') '* Fermi lines'
      case (.true.)
        write (stdout, '(/,3x,a)') '* Fermi lines coloured by spin'
      end select
      write (stdout, '(/,7x,a,f10.4,1x,a)') &
        '(Fermi level: ', fermi_energy_list(1), 'eV)'
    end if

    if (plot_curv) then
      if (pw90_berry%curv_unit == 'ang2') then
        write (stdout, '(/,3x,a)') '* Negative Berry curvature in Ang^2'
      elseif (pw90_berry%curv_unit == 'bohr2') then
        write (stdout, '(/,3x,a)') '* Negative Berry curvature in Bohr^2'
      end if
      if (fermi_n /= 1) then
        call set_error_input(error, 'Must specify one Fermi level when kslice_task=curv', comm)
        return
      end if
    elseif (plot_morb) then
      write (stdout, '(/,3x,a)') '* Orbital magnetization k-space integrand in eV.Ang^2'
      if (fermi_n /= 1) then
        call set_error_input(error, 'Must specify one Fermi level when kslice_task=morb', comm)
        return
      end if
    elseif (plot_shc) then
      if (pw90_berry%curv_unit == 'ang2') then
        write (stdout, '(/,3x,a)') '* Berry curvature-like term ' &
          //'of spin Hall conductivity in Ang^2'
      elseif (pw90_berry%curv_unit == 'bohr2') then
        write (stdout, '(/,3x,a)') '* Berry curvature-like term ' &
          //'of spin Hall conductivity in Bohr^2'
      end if
      if (fermi_n /= 1) then
        call set_error_input(error, 'Must specify one Fermi level when kslice_task=shc', comm)
        return
      end if
    end if

  end subroutine kslice_print_info