PyStratify against pyElli

← Verification · Thin films · Plane wave

Under active development. Verification is growing as comparisons are added and rerun: the matrix, its figures and their presentation are not yet in their final form. Spotted an error, or missing a topic? Tell us.

pyElli computes with 2×2 and Berreman 4×4 transfer matrices. Each case computes the same quantity with PyStratify and with pyElli and plots both on the same axes.

Bragg stack

Rs at 30° against pyElli's 2×2 and Berreman 4×4 solvers

Open in calculator
45050055060065070075080085000.20.40.60.81λ [nm]Rs
Rs, PyStratify Rs, pyElli 2×2 Rs, pyElli 4×4
RsRs, pyElli 2×2, every 20 nmRs, pyElli 4×4, every 20 nmPyStratify

Source

Source typePlane wave
θ from normal [°]30
λ min [nm]450
λ max [nm]850
λ step [nm]5
kpsRepeated 10 times×10d 1757 nmkpsRepeated 10 times×10d 1757 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
101AHconst2.35067.3auto
1BLconst1.460108.4auto
↓Outconst1.520∞–

Gold film

Ψ and Δ of 20 nm of gold on glass against pyElli's 4×4 solver

Open in calculator
102030405060708020406080100120140160180angle of incidence [°]angle [°]
Ψ, PyStratify Δ, PyStratify (pyElli's convention) Ψ, pyElli 4×4 Δ, pyElli 4×4
Ψ, PyStratifyΔ, PyStratify (pyElli's convention)Ψ, pyElli 4×4, every 3°Δ, pyElli 4×4, every 3°

Source

Source typePlane wave
λ [nm]633
θ min [°]1
θ max [°]85
θ step [°]1
kpsd 20 nmkpsd 20 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
1Auconst0.272.9320auto
↓Outconst1.520∞–

Tauc–Lorentz model

ε₁ and ε₂ of the same model, written separately in both codes

2004006008001000120014001600-505101520λ [nm]ε
ε₁, PyStratify ε₂, PyStratify ε₁, pyElli ε₂, pyElli
ε₁ε₂PyStratifypyElli, every 50 nm

Both codes evaluate the Tauc–Lorentz model (Jellison & Modine), each from its own source:

ε2(E)=AE0C (E−Eg)2(E2−E02)2+C2E2 1E(E>Eg)\varepsilon_2(E) = \frac{A E_0 C\,(E - E_g)^2}{(E^2 - E_0^2)^2 + C^2 E^2}\,\frac{1}{E} \quad (E > E_g)

zero below the gap, and ε₁ by its closed-form Kramers–Kronig transform. AA = 120 eV, E0E_0 = 3.6 eV, CC = 2.4 eV, EgE_g = 1.6 eV. Agreement checks the formulas and the parameter conventions together.

Drude model

a free-electron metal's ε against pyElli's DrudeEnergy

2004006008001000120014001600-150-100-500λ [nm]ε
ε₁, PyStratify ε₂, PyStratify ε₁, pyElli (sign corrected) ε₂, pyElli
ε₁ε₂PyStratifyε₁, pyElli (sign corrected), every 50 nmε₂, pyElli, every 50 nm

PyStratify's free-electron metal,

ε(E)=−Ep2E2+iΓE,\varepsilon(E) = -\frac{E_p^2}{E^2 + i\Gamma E},

is negative below the plasma energy. pyElli's DrudeEnergy returns A/(E2−iγE)A/(E^2 - i\gamma E), whose real part is positive at every energy, so its curve is drawn as −ε‾-\overline{\varepsilon}, as the test compares it; ε₂ needs no correction. EpE_p = 8.9 eV, Γ\Gamma = 0.07 eV.

Rough Tauc–Lorentz film

Ψ and Δ at 70° against pyElli's 2×2 and 4×4 solvers

400600800100012001400050100150200λ [nm]angle [°]
Ψ, PyStratify Δ, PyStratify Ψ, pyElli (2×2 and 4×4 alternately) Δ, pyElli (2×2 and 4×4 alternately)
ΨΔPyStratifypyElli (2×2 and 4×4 alternately), every 30 nm

Source

Source typePlane wave
θ from normal [°]70
λ min [nm]250
λ max [nm]1450
λ step [nm]10
Bruggeman effective-medium layerkpsd 83 nmBruggeman effective-medium layerkpsd 83 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
Bruggeman25 % air · 75 % film––3auto
1FilmoscillatorTauc–Lorentz–80auto
↓OutoscillatorGreen 2008–∞–

This setup's dispersive media are models the calculator holds only as constant indices here; it opens there approximately.