RE: [Ifeffit] a question about the white line
We very much appreciate Matt's comments on our suggestion suggestion on using a priori theory in fitting the background XAS:
Thus we have attempted to use the theoretical mu_0 from FEFF as an a priori, and spline corrections on top of that. Thus the form of mu_0 would be:
mu_0 = mu^thy_0(E,E_0,Gamma)[1 + lambda(E)]
where the theoretical mu^thy_0 has an adjustable edge position (E_0) and broadening (Gamma), and lambda(E) is the spline correction which includes both instrumental variations with E and theoretical errors.
Matt Newville makes the following observation:
That sounds interesting. But if you include a spline with the calculated mu0(E), how important is the mu^thy_0(E)? Like, how much work do you need to put into mu^thy_0 if you have lambda to pick up the slack?
Certainly if a spline can do a good job of fitting the mu_0, then the current approach is more or less ok. However in systems with strong white lines mu_0 can be strongly peaked and hence very difficult to fit with a few spline points. The broadening function lamda(E) can be constrained to be small. Also, for cases with large whitelines, the location of e0 is difficult to fit - the true e0 can lie well below the edge jump. For example, FEFF8 calculations show that the Re whiteline is almost completely due to the local embedded atomic absorption, whereas the large whiteline in SF6 has a different origin. The difference between these cases is not something that can be determined without the use of a theoretical mu0. Likewise the determination of E0 cannot be done well without theory in such cases.
On the one hand, since a spline is needed, it might imply that you don't really gain much. On the other hand, it might also imply that you could calculate and tabulate a reasonable 'universal background function' for any given absorber-scatterern pair as a starting background curve. Otherwise, it seems to me that the prior information that goes into getting mu0(E) might be roughly equivalent to using Feff to generate a standard chi(k) for autobk.
In our view, mu0 does not depend very much on structure, since it's mostly determined by the local embedded atom potential. For this reason it's calculation would also be quite fast (only phase shifts and the cross-section are needed) compared to a calculation of chi(k) which requires multiple scattering paths.
Anyway, I'd be interested in comparisons of this with autobk with/without a standard chi(k). And, of course, code donations for improved algorithms are always welcome. ;).
Us too! We would also be interested in sharing our code developments, e.g., eventually integrating them into ifeffit if appropriate. Josh Kas John Rehr
Hi John, Josh,
Certainly if a spline can do a good job of fitting the mu_0, then the current approach is more or less ok. However in systems with strong white lines mu_0 can be strongly peaked and hence very difficult to fit with a few spline points. The broadening function lamda(E) can be constrained to be small. Also, for cases with large whitelines, the location of e0 is difficult to fit - the true e0 can lie well below the edge jump.
Oh, maybe I misunderstood. Is lambda(E) in
mu_0 = mu^thy_0(E,E_0,Gamma)[1 + lambda(E)]
just a broadening term or a highly adjustable spline?? I guess the whole question is how much freedom this function has. It definitely sounds interesting to use a theoretical mu_0, especially for challenging white lines, but it's not clear how to best make this accessible to users. I'll probably have to think about this some more, but it would be nice to know the mechanics of how you're doing it, and how well you need to know the structure before you start.
In our view, mu0 does not depend very much on structure, since it's mostly determined by the local embedded atom potential. For this reason it's calculation would also be quite fast (only phase shifts and the cross-section are needed) compared to a calculation of chi(k) which requires multiple scattering paths.
Well, usually a standard for autobk only needs a decent guess of the first shell. Getting a standard does require some prior knowledge of the system and calculation time, but I don't know that it would be a lot more knowledge and time than would be needed for a mu^thy_0(E). Anyway, it would still be interesting to compare these two (autobk using calculated chi(k) v. starting with a mu^thy_0 and massaging it to match data). On the other hand, it sounds as if the mu^thy_0(E) for a few dozen (or few hundreds) challenging systems could be tabulated. That would make it very fast and very simple to use! --Matt
participants (2)
-
John J. Rehr
-
Matt Newville