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