# FMS

Standard

```FMS rfms [lfms2 minv toler1 toler2 rdirec]
```

Compute full multiple scattering within a sphere of radius rfms centered on the absorbing atom (real space) or for the unit cell of the crystal (k-space). If the FMS card is not present in ‘feff.inp’, the multiple scattering path expansion is used.

rfms

Completely ignored in k-space calculations. This is the cluster radius used in modules ldos and fms but not in pot. It is also the lower limit of pathfinder calculations. The fms module sums all MS paths within the specified cluster. Typically, a converged XANES calculation requires about 50-150 atoms in a cluster, but sometimes more are needed. For EXAFS analysis, one typically calculates to k = 20, but FMS results are not accurate at high energies. Thus if you are running feff9 for EXAFS, you should not use the FMS card.

If the value of RPATH as described in Section 3.5.5 is greater than rfms, the pathfinder will look for paths which extend beyond the cluster used for the FMS and add them to the FMS calculation of the `DOS and XANES:

$G_{tot} = G_{fms} + G_0 t_i G_0 + G_0 t_i G_0 t_j G_0 + \cdots$

where at least one atoms i in the path is outside the FMS cluster and the value of RPATH is the maximum half path length for the ldos, fms and path modules. Note: this approximation may not be accurate and should be used with caution.

The MS expansion sometimes does not converge well in the XANES energy region. Thus one should avoid adding paths for LDOS and XANES, and RPATH should be less than rfms. Adding single scattering paths only (NLEG 2) usually works well to check the convergence of FMS. But adding double scattering (NLEG 3) often leads to very bad results in XANES. Thus RPATH is useful for EXAFS or for XANES only when the path expansion is stable.

lfms2

Optional argument. This is a logical flag that defines how the FMS is done, similar to the flag lfms1 in the SCF card. With the default value of 0 (appropriate for solids), the FMS is calculated for a cluster of size rfms around each representative unique potential. With lfms=1 (appropriate for molecules), FMS is done only once for a cluster of size rfms around the absorbing atom only. The proper use of this flag can lead to a considerable time savings.

For example, if you calculate FMS for a molecule smaller than 40 atoms, there is no need to invert nph + 1 matrices, and lfms1=1 will reduce time for calculations by factor (nph + 1), where nph is the number of unique potentials listed in the POTENTIALS card).

Typically the FMS card will be used with lfms2=0, for example:

```* for XANES and LDOS need about 100 atom cluster
FMS   6.0
* usually use rpath < rfms
RPATH 8.0
* adds 2 leg paths between 6 and 8 Ångstroms
NLEG    2
```

For molecules of less than 30 atoms of radius 4.0 Å we suggest using lfms2=lfms1=1, as in:

```SCF 5.0 1
FMS 5.0 1
RPATH -1
```

minv

Optional. This is an index that defines the FMS algorithm used in the calculations. By default, (minv=0) the FMS matrix inversion is performed using LU decomposition. However, several alternatives have been designed for the FMS algorithm that start to work faster than LU decomposition for clusters of more than 100 atoms. (See the FEFF8.2 reference). We strongly recommend the Lanczos recursion method (minv=2) which is very robust and speeds the calculations by a factor of 3 or more. The Broyden algorithm (minv = 3) is faster, but less reliable, and may fail to converge if the FMS matrix has large eigenvalues.

toler1

Optional. This defines the tolerance to stop recursion and Broyden algorithm. The default value of 0.001 gives results in agreement with LU decomposition to within a linewidth.

toler2

Optional. Sets the matrix element of the Gt matrix to zero if its value is less than toler2 (default 0.001).

rdirec

Optional. Sets the matrix element of the Gt matrix to zero if the distance between atoms is larger than rdirec.

The last two variables can make the matrix Gt very sparse so both recursion and Broyden algorithms work faster. For example for large Si calculations with the Lanczos algorithm, we used:

``` FMS 29.4 0 2 0.001 0.001 40.0
```