[Ifeffit] Re: Phase Correction using IFEFFIT

Matt Newville newville at cars.uchicago.edu
Mon Aug 4 13:25:53 CDT 2003


Hi Ian,

> I am interested in the details of how IFEFFIT handles phase correction.  I 
> asked a similar question in April, but have only now begun to address its 
> use in my work.  In your response to my April question, you described how 
> to do a central atom phase shift (without a FEFF path) and a combined 
> central-atom and scattering-atom phase-shift (using a particular FEFF path).
> 
> In the case of the combined central-atom/scattering-atom phase-shift, is 
> the Chi(k) multiplied by exp(i*Phase(Central-atom)) and 
> exp(i*Phase(scatterer)) before FFT?  

The phase-shift corrections all multiply chi(k) by
exp[i*phase_corrections(k)].  With fftf() there is the option to
call the 'real, measured' chi(k) as either the real part of the
complex chi(k) or as the imaginary part of the complex chi(k):  
calling it the real part is the default, but for using these
corrections as you intend, it might be important to keep this
straight.  The chi(k) to be Fourier transformed is:

   chi_to_FFT(k) = (chi(k),0) * exp(i*phase_correction(k))

The 'central atom phase shift' sets phase_correction to the 
central-atom part only.  This is a fine thing to do for 'cleaning 
up' the FTs, especially when you don't know the scatterers.  This
can be done with 
 fftf(real=data.chi,..., pc_edge=26)

where you only have to specify Z.

The 'full phase shift' requires a feff.dat file, and corrects both 
central-atom and scattering-atom phase-shifts from that file:
 fftf(real=data.chi,...,pc_feff_path=my_feff0001.dat)

If you have a different phase shift (phase(k)) you want to apply, 
you can do that too:
 fftf(real=data.chi,..., phase_array=my.phase_shift)

More on this below....

> If this is true, how can I correct for the scattering atom phase
> shift "only" as has been described by Lee and Beni (Phys. Rev.B,
> 15, 1977, pg 2862) and Vaarkamp (Cat. Today, 39, (1998), pg 271).

There are two possibilities: 

1. use the pc_feff_path above, but edit the feff.dat file to set the 
central-atom phase-shift to zero:  that's the second column in 
feff.dat, the one labeled 'real[2*phc]'

2. read in the path from Feff, use get_path() to get the scattering 
phase-shift, interpolate onto the data k-grid, and specify the phase
array as the 'phase_array' in fftf():

  read_data(file=my_chi.dat, type=chi, group=data)
  path(1, feff0001.dat)
  get_path(1, do_arrays, group= f1)
  set feff.phase_shift = interp(f1.k, f1.phase, data.k)

  fftf(real=data.chi, k=data.k, ..., phase_array=feff.phase_shift)

Note that get_path(I, do_arrays) creates arrays from the columns of
the feff.dat files:  $GROUP.phase is the scattering phase shift,
$GROUP.caps is the central atom phase shift.  Also, note that you 
need to interpolate this to the same k-grid as the chi(k) data.

> At this time, my particular interest is in attempting to identify clearly 
> next-nearest neighbors in the RSF before attempting to do fitting.  It is 
> my hope that a positive identification of the next-nearest neighbor by 
> means of IM analysis/ and or k-weighting will add validity to my final 
> fitting results.

Hmm, I thought you'd want to use the full phase shift for this.  
Are you sure you want just the scattering part?  I'll try to look at
the Lee&Beni and Vaarkamp papers over the next few days.

For what it's worth, I think using phase-shifted FTs to try to
determine the species/near-neighbor-distance is a fine thing to do.
That is, if you have the phase shift and distance right, then
Re[chi(R)] will be zero at the near neighbor distance (note that
whether it's Re[chi(R_0)]=0 or Im[chi(R_0)]=0 depends on the FT
convention used).  That can be used to help identify whether there
is a good isolated shell, and can help to guess the species and
distance.  It's not exactly a complete analysis, but it does seem
like a fine thing to do.  Again, I thought you'd want to use the
full phase shift for this, but it is possible to get just the
scattering part.

--Matt






More information about the Ifeffit mailing list