[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: convolution with "corrections"




Dear Feffdevelopers:

This message is a reply to Gilles Hug's report and Matt Newville's comments
about problems or possible (?) bugs,  using the FEFF8 CORRECTION card
(e.g. CORRECTION  Vr  Vi), with Vr=0 and Vr=1  to add 1 eV of broadening to
the calculated Si K-edge XANES spectrum. Our investigation reveals several
interesting points:

1) We could not at first reproduce Gilles' bug (that is, a negative shift in
the energy of the edge) on our computers. This turned out to be due largely,
we think, to a bad feff.inp file used by Gilles for the Si lattice. This
particular input file had a very unphysical value of the lattice constant for
the Si crystal, a = 6.485.  This value differs substantially from the
value a = 5.43 given both in Ashcroft and Mermin and in the current
atoms database [see Ravel's atoms WWW pages:
http://feff.phys.washington.edu/~ravel/software/atoms/ ]. 

   This bad input file seems to have been replicated and propagated for
years. The same bad input file was largely responsible for what we thought
was a lack of agreement between experiment and the theory used in FEFF
for Si. Also some old versions of the atoms document for Bruce Ravel's
atoms code had that value (a = 6.485) in the Si diamond lattice example 
atoms.inp file. The upshot of all this is CAVEAT feff.inp and atoms.inp! 

2) Using unphysical lattice constants, either too short or too long, leads
to unphysical behavior in the potentials and phase shifts, and hence
spurious behavior also in the spectra. Indeed, using the suspect input file
with the unphysical value a=6.485, we could reproduce the strange shift
in the edge reported by Gilles with CORRECTIONS 0 1.

Even though we don't trust that particular input file, the strange edge
shift with Vr=0 does suggest that the current algorithm for the CORRECTIONS
card could be buggy. After all, FEFF should work, for example, even at very
high pressures where the lattice constants differ substantially from 
normal conditions.  If anyone has another example where the strange behavior
noted by Gilles occurs with the CORRECTIONS card, we would like to know it.

3) To address this situation, we modified the algorithm used by the CORRECTION
card to handle even such pathological cases better. In the new algorithm, we
first perform calculations with vicorr=0, and then carry out an accurate
Lorentzian convolution of the result.  Tests showed that the results using
EXCHANGE 0  0  1 and CORRECTION  0 1 now agree within a linewidth, even
for the bad Si input file with a=6.485.

We also tested the CORRECTIONS card with EXCHANGE 0 1 0 and CORRECTION 1 0
and verified that they too agree within a linewidth. Thus one can be fairly
confident that the new algorithm should likely be valid within a few eV
of the edge.

4) Comments: This new algorithm is designed to work with an arbitrarily spaced
energy grid. Thus we agree with Matt that an accurately done convolution
does give good results, although an evenly spaced grid does not appear
to be essential.  However, the algorithm for real shifts Vr in the CORRECTION
card must make use of an interpolation to data below the edge when Vr > 0,
to take into account states below the edge.  The interpolation step is dangerous,
and can only be done approximately, since there can be regions with large
LDOS just below the edge from the occupied valence bands.  It is for that
reason that we always felt that the CORRECTIONS card had to be used with
caution, as it is hard to guess when it might fail.  The previous CORRECTIONS
card algorithm used both interpolation and convolution for both real and
imaginary parts; this appeared to work adequately in previous tests, but
evidently fails at least for Gilles' case.

We hope to release the latest experimental version feff8.20x7 to feff-developers
(where this bug is fixed) during this week, and to release the official version
of feff8.2 to users in early summer.

Best wishes,
A. Ankudinov and J.J. Rehr