4.6. Refractive Indices

4.6.1. Defining the Model

Constant

The simplest case, a constant (wavelength-independent) RefractionIndex, is defined as:

n = ot.RefractionIndex("Constant", n=1.54)

Center Index and Abbe Number

For most materials only a single refractive index \(n_c\) and an Abbe number \(V\) are provided, but not a full \(n(\lambda)\)-curve. Such a material is modelled by:

n = ot.RefractionIndex("Abbe", n=1.5, V=32)

Note that materials with the same \(n_c\), \(V\) can still differ slightly, as many dispersion curves produce these two values. Details on how the model is estimated are located in Section 5.9.1.

You can also specify the wavelength combination, for which n and V are specified:

n = ot.RefractionIndex("Abbe", n=1.5, V=32, lines=ot.presets.spectral_lines.FeC)

Common Index Models

The subsequent equations describe common refractive index models used in typical simulation software. They are taken from [1] and [2]. A comprehensive list of different index models is found in [3].

Generally, all coefficients must be expressed in powers of µm, which is also true for the wavelength input values.

Name

Equation

Cauchy

(4.5)\[n = c_0 + \frac{c_1}{\lambda^2} + \frac{c_2}{\lambda^4} + \frac{c_3}{\lambda^6}\]

Conrady

(4.6)\[n = c_0+ \frac{c_1} {\lambda} + \frac{c_2} {\lambda^{3.5}}\]

Extended

(4.7)\[n^2 = c_0+c_1 \lambda^2+ \frac{c_2} {\lambda^{2}}+ \frac{c_3} {\lambda^{4}}+ \frac{c_4} {\lambda^{6}}+ \frac{c_5} {\lambda^{8}}+ \frac{c_6} {\lambda^{10}}+\frac{c_7} {\lambda^{12}}\]

Extended2

(4.8)\[n^2 = c_0+c_1 \lambda^2+ \frac{c_2} {\lambda^{2}}+ \frac{c_3} {\lambda^{4}}+\frac{c_4} {\lambda^{6}}+\frac{c_5} {\lambda^{8}}+c_6 \lambda^4+c_7 \lambda^6\]

Handbook of Optics 1

(4.9)\[n^2 = c_0+\frac{c_1}{\lambda^2-c_2}-c_3 \lambda^2\]

Handbook of Optics 2

(4.10)\[n^2 = c_0+\frac{c_1 \lambda^2}{\lambda^2-c_2}-c_3 \lambda^2\]

Herzberger

(4.11)\[\begin{split}\begin{align} n =&~ c_0+c_1 L+c_2 L^2+c_3 \lambda^2+c_4 \lambda^4+c_5 \lambda^6 \\ &\text{ with } L= \frac{1} {\lambda^2-0.028 \mathrm{\,µm}^2} \end{align}\end{split}\]

Sellmeier1

(4.12)\[n^2 = 1+\frac{c_0 \lambda^2}{\lambda^2-c_1}+\frac{c_2 \lambda^2} {\lambda^2-c_3}+\frac{c_4 \lambda^2}{\lambda^2-c_5}\]

Sellmeier2

(4.13)\[n^2 = 1+c_0+\frac{c_1 \lambda^2}{\lambda^2-c_2^2}+\frac{c_3}{\lambda^2-c_4^2}\]

Sellmeier3

(4.14)\[n^2 = 1+\frac{c_0 \lambda^2}{\lambda^2-c_1}+\frac{c_2 \lambda^2}{\lambda^2-c_3}+ \frac{c_4 \lambda^2}{\lambda^2-c_5}+\frac{c_6 \lambda^2}{\lambda^2-c_7}\]

Sellmeier4

(4.15)\[n^2 = c_0+\frac{c_1 \lambda^2}{\lambda^2-c_2}+\frac{c_3 \lambda^2}{\lambda^2-c_4}\]

Sellmeier5

(4.16)\[n^2 = 1+\frac{c_0 \lambda^2}{\lambda^2-c_1}+\frac{c_2 \lambda^2}{\lambda^2-c_3}+ \frac{c_4 \lambda^2}{\lambda^2-c_5}+\frac{c_6 \lambda^2}{\lambda^2-c_7}+\frac{c_8 \lambda^2}{\lambda^2-c_9}\]

Schott

(4.17)\[n^2 = c_0+c_1 \lambda^2+\frac{c_2}{ \lambda^{2}}+\frac{c_3} {\lambda^{4}}+\frac{c_4} {\lambda^{6}}+\frac{c_5} {\lambda^{8}}\]

An example of a Schott model material is initialized in the following manner:

n = ot.RefractionIndex("Schott", coeff=[2.13e-06, 1.65e-08, -6.98e-11, 1.02e-06, 6.56e-10, 0.208])

User Data

The "Data" type allows a model definition from a wavelength in nanometers (380.0 - 780.0) and index list. Intermediary values are interpolated linearly.

wls = np.linspace(380, 780, 10)
vals = np.array([1.6, 1.58, 1.55, 1.54, 1.535, 1.532, 1.531, 1.53, 1.529, 1.528])
n = ot.RefractionIndex("Data", wls=wls, vals=vals)

User Function

optrace supports custom user functions for the refractive index with the func-parameter:

n = ot.RefractionIndex("Function", func=lambda wl: 1.6 - 1e-4*wl)

The first parameter must be the wavelength in nanometers, while additional parameters are provided by the func_args parameter.

n = ot.RefractionIndex("Function", func=lambda wl, n0: n0 - 1e-4*wl, func_args=dict(n0=1.6))

4.6.2. Calculating the Index Values

Index values are calculated by calling the object with a wavelength vector. The return value is a vector of the same shape as the input.

>>> n = ot.RefractionIndex("Abbe", n=1.543, V=62.1)
>>> wl = np.linspace(380, 780, 5)
>>> n(wl)
array([1.56237795, 1.54967655, 1.54334454, 1.5397121 , 1.53742915])

4.6.3. Abbe Number

Every RefractionIndex object provides a abbe_number-method:

>>> n = ot.presets.refraction_index.LAF2
>>> n.abbe_number()
44.850483919254984

The function can be called with a different spectral line combination from ot.presets.spectral_lines:

>>> n.abbe_number(ot.presets.spectral_lines.F_eC_)
44.57150709341499

A list of predefined lines can be found in Section 4.8.5. You can also specify a user defined list of three wavelengths:

>>> n.abbe_number([450, 580, 680])
30.59379412865849

To check if a medium is dispersive, call:

>>> print(n.is_dispersive())
True

4.6.4. Loading material catalogues (.agf)

optrace supports importing .agf catalogue files that contain different material definitions. The function ot.load_agf requires a file path and returns a dictionary of media, with the key being the name and the value being the refractive index object.

For instance, a way to load the Schott catalogue and accessing the material N-LAF21 is shown below.

n_schott = ot.load_agf("schott.agf")
n_laf21 = n_schott["N-LAF21"]

Different .agf files are located in this repository or this one.

Information on the file format are available here and and here.

4.6.5. Plotting

See Plotting Refractive Indices.

4.6.6. Presets

optrace provides many material presets, which can be accessed using ot.presets.refractive_index.<name>, where <name> is the material name. The materials are also grouped into lists ot.presets.refractive_index.glasses, ot.presets.refractive_index.plastics, ot.presets.refractive_index.misc.

The following plots visualize the index curves and Abbe plots group-wise.

../_images/glass_presets_n.svg

Fig. 4.21 Refraction index curves for the glass presets.

../_images/glass_presets_V.svg

Fig. 4.22 Abbe diagram for the glass presets.

../_images/plastics_presets_n.svg

Fig. 4.23 Refraction index curves for the plastic presets.

../_images/plastics_presets_V.svg

Fig. 4.24 Abbe diagram for the plastic presets.

../_images/misc_presets_n.svg

Fig. 4.25 Refraction index curves for miscellaneous presets.

../_images/misc_presets_V.svg

Fig. 4.26 Abbe diagram for the miscellaneous presets. Air and Vacuum are modelled non-dispersive and missing in this plot.


References