Experimental Material Model

Overview

The ExperimentalMaterial describes the frequency-dependent refractive index of a material using experimental data. This model relies on the user input of measurement data that can be done by:

  • Passing an array of values and wavelengths when instantiating the class.

  • Reading from a text file with columns (wl, n, k) or (wl, eps_real, eps_imag)

  • Importing from RefractiveIndex.info based on shelf/book/page values.

Examples

Instantiating from Permittivity Array Data

In this case the values are by default permittivity values.

from pyOptiShared.Material import ExperimentalMaterial

wavelength = [1500, 1550, 1600]
values = [1.3, 1.31, 1.32]

material = ExperimentalMaterial("my_material", wavelength, values)

wavelength = [1515, 1560, 1590]
print(material.eps(wavelength))
print(np.square(material.index(wavelength)))

Instantiating from Permittivity Text File

In this case the values are by default permittivity values defined in a text file.

Content of the my_material.txt:

wl  epsr    epsi
1500    1.2 0.0001
1510    1.21 0.00011
1520    1.22 0.00012
1530    1.23 0.00013
1540    1.24 0.00014
1550    1.25 0.00015
import numpy as np
from pyOptiShared.Material import ExperimentalMaterial

material = ExperimentalMaterial("my_material")

material.LoadText("my_material")

wavelength = [1510, 1520, 1550]
print(material.eps(wavelength))
print(np.square(material.index(wavelength)))

Instantiating from RefractiveIndex.info

This examples shows how load the information from RefractiveIndex.info to set the permittivity values of material defined by shelf/book/page values. This values can be consulted directly on RefractiveIndex.info webpage.

import numpy as np
from pyOptiShared.Material import ExperimentalMaterial

material = ExperimentalMaterial("my_material")

material.SetFromRefDotInfo(shelf="main", book="SiO2", page="Malitson", wavelength_unit=1e-9)

print(material.eps([1500, 1550, 1600]))
print(np.square(material.index([1500, 1550, 1600])))