gyrotropic_outprint_tensor Subroutine

private subroutine gyrotropic_outprint_tensor(stdout, seedname, pw90_gyrotropic, fermi_energy_list, f_out_name, arrEf, arrEf1D, arrEfW, units, comment, symmetrize)

Uses

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

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: stdout
character(len=50), intent(in) :: seedname
type(pw90_gyrotropic_type), intent(in) :: pw90_gyrotropic
real(kind=dp), intent(in), allocatable :: fermi_energy_list(:)
character(len=30), intent(in) :: f_out_name
real(kind=dp), intent(in), optional :: arrEf(:,:,:)
real(kind=dp), intent(in), optional :: arrEf1D(:)
real(kind=dp), intent(in), optional :: arrEfW(:,:,:,:)
character(len=30), intent(in), optional :: units
character(len=120), intent(in), optional :: comment
logical, intent(in), optional :: symmetrize

Calls

proc~~gyrotropic_outprint_tensor~~CallsGraph proc~gyrotropic_outprint_tensor gyrotropic_outprint_tensor proc~gyrotropic_outprint_tensor_w gyrotropic_outprint_tensor_w proc~gyrotropic_outprint_tensor->proc~gyrotropic_outprint_tensor_w

Called by

proc~~gyrotropic_outprint_tensor~~CalledByGraph proc~gyrotropic_outprint_tensor gyrotropic_outprint_tensor proc~gyrotropic_main gyrotropic_main proc~gyrotropic_main->proc~gyrotropic_outprint_tensor program~postw90 postw90 program~postw90->proc~gyrotropic_main

Source Code

  subroutine gyrotropic_outprint_tensor(stdout, seedname, pw90_gyrotropic, fermi_energy_list, &
                                        f_out_name, arrEf, arrEF1D, arrEfW, units, comment, &
                                        symmetrize)
    !================================================!

    use w90_postw90_types, only: pw90_gyrotropic_type

    implicit none

    ! arguments
    real(kind=dp), allocatable, intent(in) :: fermi_energy_list(:)
    type(pw90_gyrotropic_type), intent(in) :: pw90_gyrotropic

    integer, intent(in) :: stdout

    real(kind=dp), intent(in), optional :: arrEf(:, :, :)
    real(kind=dp), intent(in), optional :: arrEfW(:, :, :, :)
    real(kind=dp), intent(in), optional :: arrEf1D(:)
    character(len=30), intent(in) :: f_out_name
    character(len=50), intent(in) :: seedname
    character(len=30), intent(in), optional :: units
    character(len=120), intent(in), optional :: comment

    logical, optional, intent(in) :: symmetrize

    ! local variables
    character(len=120)  :: file_name
    integer             :: i, file_unit, fermi_n
    logical             :: lsym

    lsym = .true.
    if (present(symmetrize)) then
      if (.not. symmetrize) lsym = .false.
    end if

    file_name = trim(seedname)//"-gyrotropic-"//trim(f_out_name)//".dat"
    file_name = trim(file_name)
    write (stdout, '(/,3x,a)') '* '//file_name
    open (newunit=file_unit, FILE=file_name, STATUS='UNKNOWN', FORM='FORMATTED')

    if (present(comment)) write (file_unit, *) "#"//trim(comment)
    if (present(units)) write (file_unit, *) "# in units of [ "//trim(units)//" ] "

    fermi_n = size(fermi_energy_list)
    if (present(arrEf)) then
      call gyrotropic_outprint_tensor_w(fermi_energy_list, fermi_n, file_unit, 0.0_dp, arr33N=arrEf, symmetrize=lsym)
    elseif (present(arrEfW)) then
      do i = 1, pw90_gyrotropic%nfreq
        call gyrotropic_outprint_tensor_w(fermi_energy_list, fermi_n, file_unit, real(pw90_gyrotropic%freq_list(i)), &
                                          arr33N=arrEfW(:, :, :, i), symmetrize=lsym)
      end do
    elseif (present(arrEf1D)) then
      call gyrotropic_outprint_tensor_w(fermi_energy_list, fermi_n, file_unit, 0.0_dp, arrN=arrEf1D)
    end if

    close (file_unit)

  end subroutine gyrotropic_outprint_tensor