Source code for elli.dispersions.sellmeier

# Encoding: utf-8
"""Sellmeier dispersion."""

import numpy.typing as npt

from .base_dispersion import Dispersion


[docs] class Sellmeier(Dispersion): r"""Sellmeier dispersion. Single parameters: -- Repeated parameters: :A: Coefficient for n\ :sup:`2` contribution. Defaults to 0. :B: Resonance wavelength. Defaults to 0. Unit in µm\ :sup:`2`. Output: .. math:: \varepsilon(\lambda) = 1 + \sum_j \boldsymbol{A}_j \cdot \lambda^2 /(\lambda^2 - \boldsymbol{B}_j) With :math:`j` as the index of the respective oscillator. """ single_params_template = {} rep_params_template = {"A": 0, "B": 0} def dielectric_function(self, lbda: npt.ArrayLike) -> npt.NDArray: lbda = lbda / 1e3 return 1 + sum( c.get("A") * lbda**2 / (lbda**2 - c.get("B")) for c in self.rep_params )