Calculating the Multiple Scattering Green's function


Once we have the potentials and phase shifts, we can calculate the multiple scattering (MS) Green’s function. This corresponds to the sequence of modules fms, mkgtr, path and genfmt. Or, equivalently, fields 3-5 in the CONTROL card:

CONTROL 0 0 1 1 1 0 * calculate G and nothing else 

There are two ways to calculate the Green’s function. The first method is suitable for near-edge properties and is executed by modules fms and mkgtr. These modules carry out a full multiple scattering XANES/ELNES calculation. In real space calculations this is done for a cluster centered on the absorbing atom. In k-space it is done for a matrix containing only the atoms of the unit cell. Thus all multiple-scattering paths within this system are summed to infinite order. This is useful for XANES and ELNES calculations, but usually cannot be used for EXAFS analysis. FMS loses accuracy beyond k = (lmax + 1)/rmt, which is typically about 4 ̊A−1 since the muffin-tin radius rmt is typically about 1 ̊A. In real-space calculations, the FMS cluster radius must be converged to ensure adequate accuracy. FMS is typically the most time-consuming part of the calculation and slows down significantly with cluster/unit cell size.

The FMS Green’s function is written to file ‘gg.dat’. Its trace can be found in ‘gtr.dat’.

For energies high above the Fermi level or edge threshold, the Path Expansion (PE) is more appropriate. It is executed by modules path and genfmt. Here, instead of summing implicitly over an infinite number of paths, we sum explicitly over a select range of scattering paths. The code uses a constructive algorithm with several path importance filters to explore all significant multiple-scattering paths in order of increasing path length. The paths are determined from the list of atomic coordinates in ‘feff.inp’. An efficient degeneracy checker is used to identify equivalent paths (based on similar geometry, path reversal symmetry, and space inversion symmetry). To avoid roundoff errors, the degeneracy checker is conservative and occasionally treats two degenerate paths as not degenerate. These errors occur in the third or fourth decimal place (less than 0.001 Ang) but are fail-safe; that is, no paths will be lost. All paths which are completely inside the FMS cluster are automatically excluded from the paths list, if specified by the FMS card.

The criteria used in filtering are based on increasingly accurate estimates of each path’s amplitude. The earliest filters, the pathfinder heap and keep filters, are applied as the paths are being searched for. A plane wave filter, based on the plane wave approximation (plus a curved wave correction for multiple-scattering paths) and accurate to about 30%, is applied after the paths have been enumerated and sorted. Finally, an accurate curved wave filter is applied to all remaining paths.

In the event of a k-space calculation, the rdinp module will generate a large real-space list of atom coordinates from the unit cell information in ‘feff.inp’. This list will be used for the path and genfmt modules, which always work in real space, as this is the optimal space for treating the extended spectrum.

The list of all paths can be found in file ‘paths.dat’. You can manually edit this list.

For each path the code calculates the effective scattering amplitude and the total scattering phase shift along with other XAFS parameters using the scattering matrix algorithm of Rehr and Albers. This requires only the scattering phase shifts (module xsph) and the paths (module path) as input.

It is possible to combine the two strategies. E.g. the following input

FMS 4.0
RPATH 10.0

tells feff to calculate a XANES spectrum by doing Full Multiple Scattering up to a radius of 4. ̊Aaround the aborber (summing all paths to infinite order within this radius), and adding Path Expansion contributions from paths extending beyond this radius but no longer than 10. ̊A. Although this is possible, we do not recommend it. We recommend the combination FMS + XANES for near-edge spectra, and EXAFS + RPATH for extended spectra.

developer's resources