abeles - Pure python reflectivity calculator

refl 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.calc(kz, depth, rho, irho, sigma)[source]
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.

kz : float[n] | Å-1
Scattering vector \(2\pi\sin(\theta)/\lambda\). This is \(\tfrac12 Q_z\).
depth : float[m] | Å
thickness of each layer. The thickness of the incident medium and substrate are ignored.
rho, irho : float[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
sigma : float[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.
rho_index : int[m]
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.