PATHS: Path Enumeration

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.