Hi Matt and XAFS community 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? 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). 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. Thank you for your help, Ian Drake
On Saturday 02 August 2003 04:32 pm, Ian Drake wrote:
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.
Well... I don't know what an "RSF" is or what "IM analysis" is, but I think I can suggest a way to isolate the scattering atom phase shift in a way that requires only a small amount of work and can be used with either ifeffit or artemis as they exist today. The second column of the feffNNNN.dat file is the central atom phase shift. The third and fourth are the scattering atoms magnitude and phase. Copy your feffNNNN.dat file of interest to another name, say feff_next_neighbor_no_caps.dat. Edit the new file, replacing the second column with zeros. Read this into ifeffit or artemis and use it as the path for phase correction. In artemis, this is done in the data view using the pull down menu labeled "Path to use for phase correction". Obviously, you should choose your edited path. In artemis, you may need to set the amplitude for this path to zero so that it doesn't really get used in a fit. That said, it's not clear to me how phase correction will really do what you seem to want. It seem unlikely to me that the signal beyond the first shell will magically become clear simply by doing phase correction. If the signal is a superposition of various scatterers before phase correction, it will still be a superposition of various scatterers afterwards. Removing the scattering atom phase shift does not affect the terms in the EXAFS equation that make peaks in a Fourier transform broad, nor does it magically separate signals which contribute similar Fourier components. Understanding how various paths contribute similar Fourier components is the reason that Artemis allows you to easily overplot data with the Fourier transforms of various paths. Then you can inspect the contributions from each path before setting up your fitting model. But if playing tricks with phase correction helps *you*, then great! That is why Artemis allows you to do this. B -- Bruce Ravel ----------------------------------- ravel@phys.washington.edu Code 6134, Building 3, Room 222 Naval Research Laboratory phone: (1) 202 767 5947 Washington DC 20375, USA fax: (1) 202 767 1697 NRL Synchrotron Radiation Consortium (NRL-SRC) Beamlines X11a, X11b, X23b, X24c, U4b National Synchrotron Light Source Brookhaven National Laboratory, Upton, NY 11973 My homepage: http://feff.phys.washington.edu/~ravel EXAFS software: http://feff.phys.washington.edu/~ravel/software/exafs/
Thank you for all the helpful information on phase correction. In light of the confusion in me attempting to do scattering atom phase correction only, I went back and reviewed the two papers I mentioned in more detail. These authors did the "Full" phase correction as you have all suggested. Ian Drake
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
participants (3)
-
Bruce Ravel
-
Ian Drake
-
Matt Newville