Skip to content

Example: Indices of refraction tests

Leandro Acquaroli edited this page Nov 27, 2019 · 8 revisions

Here we perform some tests for several indices of refraction supported by ThinFilmsTools.jl.

The complete code of this example can be found here.

First, we load the modules:

using Plots, LaTeXStrings
pyplot()
using ThinFilmsTools

Sellmeier equation

We use the Sellmeier equation to reproduce the indices of refraction of several glasses:

lg = ["BK7" "Sapphire (OW)" "Sapphire (EW)" "Fused Silica" "MgF2"]
plt = plot();
λ = float.(0.2:0.001:1.6)
B₁ = [1.03961212, 1.43134930, 1.5039759, 0.696166300, 0.48755108]
B₂ = [0.231792344, 0.65054713, 0.55069141, 0.407942600, 0.39875031]
B₃ = [1.01046945, 5.3414021, 6.5927379, 0.897479400, 0.897479400]
C₁ = [6.00069867e-3, 5.2799261e-3, 5.48041129e-3, 4.67914826e-3, 0.001882178]
C₂ = [2.00179144e-2, 1.42382647e-2, 1.47994281e-2, 1.35120631e-2, 0.008951888]
C₃ = [103.560653, 325.017834, 402.89514, 97.9340025, 566.13559]
for i in eachindex(B₁)
    n = RI.sellmeier([B₁[i], B₂[i], B₃[i], C₁[i], C₂[i], C₃[i]], λ)
    plot!(plt, λ.*1e3, real.(n), label=lg[i]);
end
xaxis!("Wavelength [nm]")
yaxis!("Sellmeier index of refraction")
gui()

Sellmeier

Drude-Lorentz model

The Drude-Lorentz dispersion model is tested for several materials, taken the values from here:

AlGaN

ħω = 0.6:0.01:4
x = [
     [1.0], # ϵinf
     [1.0, 13.7, 7.22, 0.127], # f1, ħωₚ1, ħω₀1, Γ1
]
n = RI.drude_lorentz(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Drude-Lorentz AlGaN index of refraction")
gui()

DrudeLorentz AlGaN

SiO2

ħω = 0.6:0.01:5
x = [
     [1.0], # ϵinf
     [1.0, 12.7, 12, 0.1], # f1, ħωₚ1, ħω₀1, Γ1
]
n = RI.drude_lorentz(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Drude-Lorentz SiO2 index of refraction")
gui()

DrudeLorentz SiO2

CuPc

ħω = 0.6:0.01:5
x = [
     [1.8], # ϵinf
     [1.34, 1.686, 1.686, 0.31], # f1, ħωₚ1, ħω₀1, Γ1
     [0.152, 3.541, 3.541, 0.292], # f2, ħωₚ2, ħω₀2, Γ2
]
n = RI.drude_lorentz(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Drude-Lorentz CuPc index of refraction")
gui()

DrudeLorentz CuPc

Tauc-Lorentz

For the Tauc-Lorentz parameterization of the dielectric function, we use the values from Appl. Phys. Lett. 69 (3), 15 July 1996 and Erratum.

a-Si(II)

ħω = 0.8:0.01:5.9
x = [
     [1.15, 1.2],
     [122, 3.45, 2.54], # A1, E01, Γ1
]
n = RI.tauc_lorentz(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Tauc-Lorentz a-Si(II) index of refraction")
gui()

Tauc-Lorentz a-Si

Si3N4

ħω = 1.5:0.01:6
x = [
     [3.10, 4.5],
     [59.2, 6.78, 0.49], # A1, E01, Γ1
]
n = RI.tauc_lorentz(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Tauc-Lorentz Si3N4 index of refraction")
gui()

Tauc-Lorentz Si3N4

Forouhi-Bloomer

We test the model for two materials with different numbers of oscillators, and take the parameters from Physical Review B, 38, 1865 (1988):

SiC, 1 term

ħω = 0:0.01:15
x = [
     [1.680, 2.5],
     [0.25926, 14.359, 53.747], # first oscillator
]
n = RI.forouhi_bloomer(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Forouhi-Bloomer SiC index of refraction (1 term)")
gui()

Forouhi-Bloomer SiC-1

SiC, 2 terms

ħω = 0:0.01:15
x = [
     [1.337, 2.5],
     [0.18028, 14.222, 52.148], # first oscillator
     [0.10700, 19.397, 99.605], # second oscillator
]
n = RI.forouhi_bloomer(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Forouhi-Bloomer SiC index of refraction (2 terms)")
gui()

Forouhi-Bloomer SiC-2

SiC, 4 terms

ħω = 0:0.01:15
x = [
     [1.353, 2.5],
     [0.00108, 13.227, 43.798], # first oscillator
     [0.19054, 14.447, 53.860], # second oscillator
     [0.00646, 19.335, 94.105], # third oscillator
     [0.05366, 21.940, 125.443], # fourth oscillator
]
n = RI.forouhi_bloomer(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Forouhi-Bloomer SiC index of refraction (4 terms)")
gui()

Forouhi-Bloomer SiC-4

InAs, 4 terms

ħω = 0:0.01:8
x = [
     [1.691, 0.3],
     [0.18463, 5.277, 7.504], # first oscillator
     [0.00941, 9.130, 20.934], # second oscillator
     [0.05242, 9.865, 25.172], # third oscillator
     [0.03467, 13.956, 50.062], # fourth oscillator
]
n = RI.forouhi_bloomer(x, ħω)
plot(ħω, [real.(n) imag.(n)], label=["n = ℜ{N}" "k = ℑ{N}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Forouhi-Bloomer InAs index of refraction (4 terms)")
gui()

Forouhi-Bloomer InAs-4

Cody-Lorentz

We test this function using the parameters from J. Appl. Phys., 92, No. 5, 2424 (2002).

Dipole option

ħω = 1.0:0.01:5
x = [
     [1.0, 1.35, 1.5, 0.7, 0.055], # ϵinf, Eg, Et, Ep, Eu
     [60, 3.7, 2.7], # first oscillator, A1, E01, Γ1
]
n = RI.cody_lorentz(x, ħω)
ϵ = n.^2
plot(ħω, [real.(ϵ) imag.(ϵ)], label=["ϵ₁ = ℜ{ϵ}" "ϵ₂ = ℑ{ϵ}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Cody-Lorentz a-Si(H) dielectric function")
gui()

Cody-Lorentz aSiH

Momentum option

ħω = 1.0:0.01:5
x = [
     [1.0, 1.35, 1.5, 0.7, 0.055], # ϵinf, Eg, Et, Ep, Eu
     [60, 3.7, 2.7], # first oscillator, A1, E01, Γ1
]
n = RI.cody_lorentz(x, ħω; cme=:momentum)
ϵ = n.^2
plot(ħω, [real.(ϵ) imag.(ϵ)], label=["ϵ₁ = ℜ{ϵ}" "ϵ₂ = ℑ{ϵ}"], line=([:solid :dashdot]))
xaxis!("Energy [eV]")
yaxis!("Cody-Lorentz a-Si(H) dielectric function")
gui()

Cody-Lorentz aSiH momentum

Clone this wiki locally