abeles - Pure python reflectivity calculator



Reflectometry as a function of kz for a set of slabs.

Optical matrix form of the reflectivity calculation.

O.S. Heavens, Optical Properties of Thin Solid Films

This is a pure python implementation of reflectometry provided for convenience when a compiler is not available. The refl1d application uses reflmodule to compute reflectivity.

refl1d.abeles.refl(kz, depth, rho, irho=0, sigma=0, rho_index=None)[source]

Reflectometry as a function of kz for a set of slabs.


kzfloat[n] | Å-1

Scattering vector \(2\pi\sin(\theta)/\lambda\). This is \(\tfrac12 Q_z\).

depthfloat[m] | Å

thickness of each layer. The thickness of the incident medium and substrate are ignored.

rho, irhofloat[n, k] | 10-6-2

real and imaginary scattering length density for each layer for each kz Note: absorption cross section mu = 2 irho/lambda

sigmafloat[m-1] | Å

interfacial roughness. This is the roughness between a layer and the subsequent layer. There is no interface associated with the substrate. The sigma array should have at least m-1 entries, though it may have m with the last entry ignored.


index into rho vector for each kz

Slabs are ordered with the surface SLD at index 0 and substrate at index -1, or reversed if kz < 0.