Consistency checks

← 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.

Checks that need no other code: closed forms, limits and conservation laws, the same series summed in extended precision, and independent routes through PyStratify's own physics. Each case plots PyStratify against its reference on the same axes.

Opaque metal film

thickened from 1 to 150 nm, R settles on the bulk Fresnel reflectance

Open in calculator
2040608010012014000.20.40.60.81thickness [nm]R, T
R, PyStratify T, PyStratify |(1 − n)/(1 + n)|², the bulk Fresnel reflectance
RTPyStratifythe bulk Fresnel reflectance, every 5 nm

Source

Source typePlane wave
θ from normal [°]0
λ [nm]600
d min [nm]1
d max [nm]150
d step [nm]1
kpsd 150 nmkpsd 150 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
1Metalconst0.231–150auto
↓Outconst10∞–

Single interface

R for s and p through Brewster's angle, against Fresnel's closed form

Open in calculator
0102030405060708000.20.40.60.81angle of incidence [°]R
Rs, PyStratify Rp, PyStratify Rs, Fresnel closed form Rp, Fresnel closed form
RsRpPyStratifyFresnel closed form, every 2.5°

Source

Source typePlane wave
λ [nm]600
θ min [°]0
θ max [°]89.5
θ step [°]0.5
kpsd 0 nmkpsd 0 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
↓Outconst1.50∞–

Fabry–Pérot slab

R of a free-standing slab against the Airy formula

Open in calculator
40045050055060065070075080000.10.20.30.4λ [nm]R
R, PyStratify R, Airy formula
RPyStratifyAiry formula, every 10 nm

Source

Source typePlane wave
θ from normal [°]0
λ min [nm]400
λ max [nm]800
λ step [nm]2
kpsd 300 nmkpsd 300 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
1Slabconst20300auto
↓Outconst10∞–

Lossless stack

nothing is absorbed, so 1 − R − T must vanish at every angle, beyond critical too

Open in calculator
0102030405060708010⁻¹⁷10⁻¹⁶10⁻¹⁵10⁻¹⁴angle of incidence in glass [°]|1 − R − T|
|1 − R − T|, s polarization |1 − R − T|, p polarization
|1 − R − T|, s polarization|1 − R − T|, p polarization

Source

Source typePlane wave
λ [nm]550
θ min [°]0
θ max [°]89
θ step [°]0.5
kpsd 480 nmkpsd 480 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst1.520∞–
1Hconst2.3080auto
2Lconst1.380120auto
3Hconst2.3080auto
4Lconst1.380120auto
5Hconst2.3080auto
↓Outconst10∞–

Bare substrates: Ψ

Ψ of three substrates against the Fresnel ratio −rp / rs

Open in calculator
102030405060708001020304050angle of incidence [°]Ψ [°]
n = 1.5, PyStratify n = 1.5 + 0.3i, PyStratify n = 0.2 + 3i, PyStratify n = 1.5, −rp / rs from Fresnel n = 1.5 + 0.3i, −rp / rs from Fresnel n = 0.2 + 3i, −rp / rs from Fresnel
n = 1.5n = 1.5 + 0.3in = 0.2 + 3iPyStratify−rp / rs from Fresnel, every 3°

Source

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

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
↓Outconst1.5 · 1.5 · 0.20 · 0.3 · 3∞–

Bare substrates: Δ

Δ of three substrates against the Fresnel ratio −rp / rs

Open in calculator
1020304050607080050100150200angle of incidence [°]Δ [°]
n = 1.5, PyStratify n = 1.5 + 0.3i, PyStratify n = 0.2 + 3i, PyStratify n = 1.5, −rp / rs from Fresnel n = 1.5 + 0.3i, −rp / rs from Fresnel n = 0.2 + 3i, −rp / rs from Fresnel
n = 1.5n = 1.5 + 0.3in = 0.2 + 3iPyStratify−rp / rs from Fresnel, every 3°

Source

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

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
↓Outconst1.5 · 1.5 · 0.20 · 0.3 · 3∞–

Metal stack

R and T against an independent scattering-matrix solution

Open in calculator
0102030405060708000.20.40.60.81angle of incidence [°]R, T
Rs, PyStratify Ts, PyStratify Rp, PyStratify Tp, PyStratify Rs, S-matrix Ts, S-matrix Rp, S-matrix Tp, S-matrix
RsTsRpTpPyStratifyS-matrix, every 3°

Source

Source typePlane wave
λ [nm]600
θ min [°]0
θ max [°]89
θ step [°]1
kpsd 140 nmkpsd 140 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
1Silicaconst1.460100auto
2Metalconst0.05340auto
↓Outconst1.520∞–

Frustrated reflection

light tunnels through an air gap beyond 41.8°: against the scattering-matrix solution

Open in calculator
0102030405060708000.20.40.60.81angle of incidence in glass [°]R, T
Rs, PyStratify Ts, PyStratify Rp, PyStratify Tp, PyStratify Rs, S-matrix Ts, S-matrix Rp, S-matrix Tp, S-matrix
RsTsRpTpPyStratifyS-matrix, every 3°

Source

Source typePlane wave
λ [nm]550
θ min [°]0
θ max [°]89
θ step [°]1
kpsd 530 nmkpsd 530 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst1.50∞–
1Air gapconst10400auto
2n 2const20130auto
↓Outconst1.50∞–

Thick incoherent layer

the incoherent solver against 301 coherent solves averaged over the thick layer's phase

Open in calculator
0102030405060708000.20.40.60.8angle of incidence [°]R, T
Rs, PyStratify Ts, PyStratify Rp, PyStratify Tp, PyStratify Rs, phase average of coherent solves Ts, phase average of coherent solves Rp, phase average of coherent solves Tp, phase average of coherent solves
RsTsRpTpPyStratifyphase average of coherent solves

Source

Source typePlane wave
λ [nm]640
θ min [°]0
θ max [°]80
θ step [°]2.5
kpsd 12200 nmkpsd 12200 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
1Film 1const2.080.0390auto
2Thick layerconst1.470.00112000incoherent
3Film 2const1.820.02110auto
↓Outconst1.560∞–

Three-layer filter

RCWA (meent) with nothing patterned must reproduce the transfer matrix

Open in calculator
40045050055060065070075080000.20.40.60.81λ [nm]R, T
R, PyStratify T, PyStratify R, meent RCWA T, meent RCWA
RTPyStratifymeent RCWA, every 10 nm

Source

Source typePlane wave
θ from normal [°]0
λ min [nm]400
λ max [nm]800
λ step [nm]5
kpsd 300 nmkpsd 300 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
1Hconst2.35095auto
2Lconst1.460110auto
3Hconst2.35095auto
↓Outconst1.50∞–

Absorption per layer

absorption integrated through each layer against the Poynting flux it loses

Open in calculator
400500600700800900100000.10.20.30.40.5λ [nm]absorptance per layer
120 nm n = 2.1 + 0.08i, ∫ density (PyStratify) 250 nm n = 1.46 + 0.01i, ∫ density (PyStratify) 20 nm n = 0.2 + 3.2i, ∫ density (PyStratify) 120 nm n = 2.1 + 0.08i, Poynting difference 250 nm n = 1.46 + 0.01i, Poynting difference 20 nm n = 0.2 + 3.2i, Poynting difference
120 nm n = 2.1 + 0.08i250 nm n = 1.46 + 0.01i20 nm n = 0.2 + 3.2i∫ density (PyStratify)Poynting difference, every 20 nm

Source

Source typePlane wave
θ from normal [°]30
λ min [nm]400
λ max [nm]1000
λ step [nm]10
kpsd 390 nmkpsd 390 nm

Thin films · Plane wave

LabelMaterialnkThickness [nm]Coherence
↓Inconst10∞–
1Layer 1const2.10.08120auto
2Layer 2const1.460.01250auto
3Metalconst0.23.220auto
↓Outconst1.520∞–

Kramers–Kronig

closed-form ε₁ against the numerical Kramers–Kronig transform of ε₂

123456789-20-10010203040E [eV]ε₁
Tauc-Lorentz ε₁, closed form Cody-Lorentz ε₁, closed form Tauc-Lorentz, principal value of ε₂ Cody-Lorentz, principal value of ε₂
Tauc-Lorentz ε₁Cody-Lorentz ε₁closed formprincipal value of ε₂, every 0.25 eV

PyStratify evaluates each model's ε₁ in closed form. The reference rebuilds it from ε₂ alone,

ε1(E)=ε∞+2π P ⁣∫0∞E′ ε2(E′)E′2−E2 dE′\varepsilon_1(E) = \varepsilon_\infty + \frac{2}{\pi}\,\mathrm{P}\!\int_0^\infty \frac{E'\,\varepsilon_2(E')}{E'^2 - E^2}\,dE'

by QUADPACK with a Cauchy weight, split at the kinks, independent of PyStratify's own transform.

Tauc–Lorentz: AA = 120 eV, E0E_0 = 3.6 eV, CC = 2.4 eV, EgE_g = 1.6 eV. Cody–Lorentz: the same with EpE_p = 0.8 eV, EtE_t = 1.8 eV, EuE_u = 0.05 eV. The closed forms every 0.05 eV, the principal value every 0.25 eV.