Page 1 of 1

TIMEEV does not write out dielectric function for IEPSILON>1

Posted: Sun Aug 02, 2026 3:43 am
by ashwin_r

When running ALGO=TIMEEV, only the 11 component of the dielectric tensor is written out. Specifically, IEPSILON=1 produces the expected output for the dielectric tensor; IEPSILON=2,3 write out all zeros; IEPSILON=4 writes out the 11 component correctly and then all zeros.

I believe this is due to a bug in SUBROUTINE XML_EPSILON_E_DIR where EPSILON(:,:,:) is passed correctly but then declared internally as COMPLEX(q) :: EPSILON(1:NEDOS,3) when it should be COMPLEX(q) :: EPSILON(1:NEDOS,3,3) to be consistent with the declaration in time_propagation.F. Thereafter, the arrays should be written out as:

! cap values to avoid ****** output
DO N=1,Nedos
tmp(1)= E(N)
DO I=DIR_MIN,DIR_MAX
tmp(2+I-DIR_MIN)= MIN(AIMAG(EPSILON(N,I,I)),99999._q)
ENDDO
CALL XML_ROW_DATA( tmp(1:2+DIR_MAX-DIR_MIN), form='(F10.4,1X)')
ENDDO

and similarly for the real part.

This bug affects VASP 6.6.0 and 6.6.1 (possibly prior versions too but I did not check those).

Also, is there a reason that the off-diagonal components are not computed when using TIMEEV?


Re: TIMEEV does not write out dielectric function for IEPSILON>1

Posted: Wed Aug 05, 2026 7:16 am
by henrique_miranda

Thank you very much for your bug report.
You correctly identified the problem and your solution also seems correct.

The good news is that if you compiled your version of VASP with hdf5 support you can still read the full information from vaspout.h5.

As for your second question regarding the off-diagonal components, in principle there is no fundamental reason why those are not implemented and we will look into adding that feature.