Speeding up the calculation


Iterative summing

To simplify the notations for summing equation (12), we can rewrite it using matrices and arrays,

(42)
where, for the 2nd order R-A approximation (6x6 matrix size)
(43)

The relationship between the element subscripts and Rehr-Albers expansion indices [l' = (m' n'), l = (m n)] is listed in Tables 5 - 8. Because the F elements converge for large r roughly as (r') -(|m'|+2n') (r)- (|m|+2n), we can easily see, in this notation, there are only one element in each above array or matrix (, G1 and F11) for zeroth Rehr-Albers expansion order, equivalent to the asymptotic high-energy limit and to the point-scattering approximation. We only need to keep the first three elements in the and G arrays and a (3x3) matrix in F up to first Rehr-Albers expansion order. For the full calculations, Rehr and Albers have demonstrated that in practice it seems sufficient to retain terms only to second order, i.e. the (6x6) matrix, in most cases.

 
l' = (m', n') (0,0) (1,0) (-1,0) (0,1) (2,0) (-2,0)
Ln=(l,m) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0)

Table 5. The relationship between the subscripts of the factor elements and the Rehr-Albers expansion indices.


  F1x F2x F3x F4x F5x F6x
l' = (m',n') (0,0) (1,0) (-1,0) (0,1) (2,0) (-2,0)

Table 6. The relationship between the subscripts of the scattering amplitude matrix elements and the Rehr-Albers expansion indices.


  Fx1 Fx2 Fx3 Fx4 Fx5 Fx6
l = (m,n) (0,0) (1,0) (-1,0) (0,1) (2,0) (-2,0)

Table 7. The relationship between the subscripts of the scattering amplitude matrix elements and the Rehr-Albers expansion indices.


  G1 G2 G3 G4 G5 G6
l = (m,n) (0,0) (1,0) (-1,0) (0,1) (2,0) (-2,0)
Lf=(l,m) (lf,mf) (lf,mf) (lf,mf) (lf,mf) (lf,mf) (lf,mf)

Table 8. The relationship between the subscripts of the G factor elements and the Rehr-Albers expansion indices.


From equation (42), we see that the number of array or matrix multiplications dominates the total calculation time. For the (n-1)-th scattering order term, the number of terms in the summation is proportional to Nn-2 times the number of emitters, and times the number of Lf=(lf,mf) combinations, where N is the number of atoms in question. This procedure takes much time, even when using pathcut.

We have therefore introduced an iterative summing method, which makes the calculation time be proportional to N3. For the commonly used 6th to 8th scattering order, such a method can cut down the computation time enormously. To that end, we rewrite the equation (42) into a forward summing version as

(44)
or in a backward summing version as
(45)

The calculation time will be proportional to Nk·Nmi·(msorder-2)· Na3 for forward summing and Nk·Nd·(msorder-2)· Na3 for backward summing, where Nk is the number of photoelectron energies to be simulated, Nmi = (2li+1) the number of possible magnetic quantum numbers, Nd the number of photoelectron exit angles, msorder the multiple scattering order, and Na the number of atoms in the cluster.

Searching the symmetries

The most time-saving contribution which Rehr and Albers made is the derivation of the separable representation of the scattering event, i.e. equation (26). Let's rewrite it as

(46)

Thus, the energy-dependent scattering factor fll' (r,r',b) now depends only on the bond lengths and the scattering angle b (which is equivalent to arccos(r,r')),

(47)

This form considerably reduces the number of independent computations of the scattering matrices. Furthermore the only additional angle needed for each element in the calculation is the combinations of a and g at each scattering site.

The most time-consuming computation in each path is that of equation (47). There are N3 choices of r and r', where N is the number of atoms in the cluster. That means we have to compute N3 scattering events fll' (r,r',b). However, in practice, in a crystalline surface with its periodic and other symmetries, many events fll' have the same r, r' and b values (the absolute orientation of the vectors r, r' does not matter). Therefore, there will be many identical results for fll' (r,r',b). So, we can investigate all the scattering events, and calculate only once the identical events. In our program, we further pre-calculate for a preselected series of r and b values, respectively, then use interpolation to produce their values in the computation of fll' (r,r',b).


Return to Van Hove home page