Materials description

Brief description of dispersion of light by optical materials and how it is implemented in PAOS.

In PAOS, this is handled by the class Material.

Light dispersion

In optics, dispersion is the phenomenon in which the phase velocity of a wave depends on its frequency:

\[v={\frac {c}{n}}\]

where \(c\) is the speed of light in a vacuum and \(n\) is the refractive index of the dispersive medium. Physically, dispersion translates in a loss of kinetic energy through absorption. The absorption by the dispersive medium is different at different wavelengths, changing the angle of refraction of different colors of light as seen in the spectrum produced by a dispersive Prism and in chromatic aberration of Thick lens.

This can be seen in geometric optics from Snell’s law:

\[\frac{sin(\theta_2)}{sin(\theta_1)} = \frac{n_1}{n_2}\]

that describes the relationship between the angle of incidence \(\theta_1\) and refraction \(\theta_2\) of light passing through a boundary between an isotropic medium with refractive index \(n_1\) and another with \(n_2\).

For air and optical glasses, for visible and infra-red light refraction indices \(n\) decrease with increasing \(\lambda\) (normal dispersion), i.e.

\[\frac{d n}{d \lambda} < 0\]

while for ultraviolet the opposite behaviour is typically the case (anomalous dispersion).

See later in Supported materials for the dispersion behaviour of supported optical materials in PAOS.

Sellmeier equation

The Sellmeier equation is an empirical relationship for the dispersion of light in a particular transparent medium such as an optical glass in function of wavelength. In its original form (Sellmeier, 1872) it is given as

(51)\[n^{2}(\lambda )=1+\sum _{i}{\frac {K_{i}\lambda ^{2}}{\lambda ^{2}-L_{i}}}\]

where \(n\) is the refractive index, \(\lambda\) is the wavelength and \(K_i\) and \(\sqrt{L_i}\) are the Sellmeier coefficients, determined from experiments.

Physically, each term of the sum represents an absorption resonance of strength \(K_i\) at wavelength \(\sqrt{L_i}\). Close to each absorption peak, a more precise model of dispersion is required to avoid non-physical values.

PAOS implements the Sellmeier 1 equation (Zemax OpticStudio \(^{©}\) notation) to estimate the index of refraction relative to air for a particular optical glass at the glass reference temperature and pressure

(52)\[\begin{split}T_{ref} = 20^{\circ} C \\ P_{ref} = 1 \ \textrm{atm}\end{split}\]

This form of the original equation consists of only three terms and is given as

(53)\[n^{2}(\lambda )=1+{\frac {K_{1}\lambda ^{2}}{\lambda ^{2}-L_{1}}}+{\frac {K_{2}\lambda ^{2}}{\lambda ^{2}-L_{2}}}+{\frac {K_{3}\lambda ^{2}}{\lambda ^{2}-L_{3}}}\]

The resulting refracting index should deviate by less than \(10^{-6}\) from the actual refractive index which is order of the homogeneity of a glass sample (see e.g. Optical properties).

Example

Code example to use Material to estimate and plot the index of refraction of borosilicate crown glass (known as BK7) for a range of wavelengths from the visible to the infra-red.

import numpy as np
import matplotlib.pyplot as plt

from paos.util.material import Material

wl = np.linspace(0.5, 8.0, 100)
mat = Material(wl=wl)

glass = 'BK7'
material = mat.materials[glass]
sellmeier = mat.sellmeier(material['sellmeier'])

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(1,1,1)
ax.plot(wl, sellmeier)
ax.set_title(f'{glass} refractive index')
ax.set_ylabel('Sellmeier')
ax.set_xlabel(r'Wavelength [$\mu$m]')
plt.grid()
plt.show()
../../_images/index_0_0.png

Temperature and refractive index

Changes in the temperature of the dispersive medium affect the refractive index. The temperature coefficient of refractive index is defined as the deviation \(dn/dT\) from the curve and depends from both wavelength and temperature.

The temperature coefficient values can be given as absolute (as measured under vacuum) and relative (as measured at ambient air (dry air at standard pressure).

PAOS estimates the air reference index of refraction as

(54)\[n_{ref} = 1.0 + 1.0 \cdot 10^{-8} \left(6432.8 + \frac{2949810 \lambda^2}{146 \lambda^2 - 1} + 25540 \frac{\lambda^2}{41 \lambda^2 - 1}\right)\]

where \(\lambda\) is in units of micron, at the reference temperature \(T = 15 ^{\circ} C\) and standard pressure. Under different temperatures and pressures, PAOS rescales this reference index using this formula

(55)\[n_{air} = 1 + \frac{P \left(n_{ref} - 1\right)} {1.0 + 3.4785 \cdot 10^{-3} (T - 15)}\]

The absolute temperature coefficient for a different medium can be calculated from the relative index as (see e.g. Optical properties).

(56)\[\frac{d n}{d T}, \textrm{absolute} = \frac{d n}{d T}, \textrm{relative} + n \left(\frac{d n}{d T}, \textrm{air}\right)\]

PAOS calculates the refractive index of an optical material at a given pressure and temperature as

(57)\[n(\Delta T) = \frac{n^2 - 1}{2 n} D_0 \Delta T + n\]

where \(\Delta T\) is given by the difference between the material operative temperature \(T_{oper}\) and the reference temperature \(T_{ref}\), \(n\) is the refractive index as estimated using (53) and \(D_0\) is a temperature constant of the material.

Example

Code example to use Material to estimate the index of refraction of borosilicate crown glass (known as BK7) for a given wavelength at reference and operating temperature.

from paos.util.material import Material

wl = 1.95  # micron
Tref, Tambient = 20.0, -223.0
mat = Material(wl, Tambient=Tambient)
glass = 'BK7'
nmat0, nmat = mat.nmat(glass)

from IPython.display import display, Latex
display(Latex("\\textrm{Index of refraction at } T_{ref} = %0.1f:\\newline n_{%s, 0} = %0.4f " % (Tref, glass, nmat0)))
display(Latex("\\textrm{Index of refraction at } T_{amb} = %0.1f:\\newline n_{%s, 0} = %0.4f " % (Tambient, glass, nmat)))
\[\textrm{Index of refraction at } T_{ref} = 20.0:\newline n_{BK7, 0} = 1.4956\]
\[\textrm{Index of refraction at } T_{amb} = -223.0:\newline n_{BK7, 0} = 1.4955\]

Pressure and refractive index

Note also that PAOS can easily model systems used in a vacuum by changing the air pressure to zero.

Example

Same code example as before, but ambient pressure is set to zero.

mat = Material(wl, Tambient=Tambient, Pambient=0.0)
nmat0, nmat = mat.nmat(glass)

from IPython.display import display, Latex
display(Latex("\\textrm{Index of refraction at } T_{ref} = %0.1f:\\newline n_{%s, 0} = %0.4f " % (Tref, glass, nmat0)))
display(Latex("\\textrm{Index of refraction at } T_{amb} = %0.1f:\\newline n_{%s, 0} = %0.4f " % (Tambient, glass, nmat)))
\[\textrm{Index of refraction at } T_{ref} = 20.0:\newline n_{BK7, 0} = 1.4952\]
\[\textrm{Index of refraction at } T_{amb} = -223.0:\newline n_{BK7, 0} = 1.4951\]

Note the non-negligible difference in the resulting refractive indexes.

Supported materials

PAOS supports a variety of optical materials (list is still updating), among which:

  1. CAF2 (calcium fluoride)

  2. SAPPHIRE (mainly aluminium oxide (\(\alpha-Al_2 O_3\)) )

  3. ZNSE (zinc selenide)

  4. BK7 (borosilicate crown glass)

  5. SF11 (a dense-flint glass)

  6. BAF2 (barium flouride)

The relevant ones for the Ariel space mission are all of them except BAF2. A detailed description of the optical properties of these materials is beyond the scope of this documentation. However, for reference, Fig. 25 reports their transmission range (from Thorlabs, Optical Substrates).

../../_images/Optical_Substrate_thorlabs.png

Fig. 25 Transmission range of optical substrates (Thorlabs)

Example

Code example to use Material to print all available optical materials.

from paos.util.material import Material

mat = Material(wl=1.95)
print('Supported materials: ')
print(*mat.materials.keys(), sep = "\n")
Supported materials: 
CAF2
SAPPHIRE
ZNSE
BK7
SF6
SF11
BAF2

Example

Code example to use Material to plot the refractive index for all available optical materials, at their operating and reference temperature.

from paos.util.material import Material

mat = Material(wl=np.linspace(0.5, 8.0, 100))
mat.plot_relative_index(material_list=mat.materials.keys())
../../_images/index_4_0.png