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