2.17. Refractive index calculation

2.17.1. Model

To compute the both imaginary and real parts of the complex refractive index, it is sufficient to know the real and imaginary part of dielectric function.

The refractive index can be expressed in terms of the dielectric function as:

\[(n+ i k)^2 = \epsilon_1 + i \epsilon_2\]

where \(n\) is the refractive index, \(k\) is the extinction coefficient, \(\epsilon_1\) and \(\epsilon_2\) are the real and imaginary parts of the dielectric function, respectively.

\[\begin{split}n = \frac{1}{2}(\varepsilon_1 + \sqrt{\varepsilon_1^2 + \varepsilon_2^2}) \\ k = \frac{1}{2}(\varepsilon_1 + \sqrt{\varepsilon_1^2 + \varepsilon_2^2}) - \varepsilon_1\end{split}\]

The imaginary part of the dielectric function can be calculated from the electronic band structure using Fermi’s golden rule (for more details see Optical spectra). The real part of the dielectric function can be obtained from the imaginary part using the Kramers-Kronig relation.

\[\varepsilon_1(\omega) = 1 + \frac{2}{\pi} P \int_0^{\infty} \frac{\omega' \varepsilon_2(\omega')}{\omega'^2 - \omega^2} d\omega'\]

where \(P\) denotes the Cauchy principal value.

The Kramers-Kronig relations is non-local, meaning that the value of \(\varepsilon_1\) at a given frequency depends on the values of \(\varepsilon_2\) at all frequencies. At the same time, the energy window of the calculation of \(\varepsilon_2\) is limited by the number of bands included in the calculation. Therefore to obtain adequate values of \(\varepsilon_1\) at low frequencies, it is necessary to approximate \(\varepsilon_2\) at the higher frequencies.

The typical shape of the imaginary part of the dielectric function of a semiconductor is a direct transition onset, followed by few peaks at higher energies and a tail that decays to zero (see figure Figure 2.17.1.1).

../_images/models_refractive_index_dielectric_function_example.svg

Figure 2.17.1.1 Example of the imaginary part of the dielectric function of GaAs.

A simple approximation is delta functions at the energy of the peaks with the constant box in in the tail region. Then the total imaginary part of the dielectric function that will be used in the Kramers-Kronig relation is:

(2.17.1.1)\[\varepsilon_2(E) = \varepsilon_2^{calc}(E) + \sum_i A_i \delta(E - E_i) + B \mathbf{1}_{[E_a,E_b]}(x)\]

where \(\varepsilon_2^{calc}(E)\) is the calculated imaginary part of the dielectric function, \(A_i\) and \(E_i\) are the amplitude and energy of the delta functions, \(B\) is the value for the constant part of approximation, \(\mathbf{1}\) is the indicator function, and \([E_a,E_b]\) is the energy range of the constant part. By default \(E_a\) is set to the maximum energy of the calculated imaginary part of the dielectric function, and \(B\) is set to the value of \(\varepsilon_2^{calc}(E_a)\).

2.17.2. Alternative way of calculating the change of refractive index

For some devices, such as phase modulators, the change of refractive index with respect to the unbiased case is more important than the absolute value of refractive index. In this case, the change can be directly calculated using the equation

\[\Delta n (\omega) = \frac{c}{\pi} P \int_{\omega_1}^{\omega_2} \frac{\Delta \alpha(\omega')}{\omega'^2 - \omega^2} d\omega'\]

where \(\Delta \alpha\) is the change of absorption coefficient with respect to the unbiased case, and \(c\) is the speed of light, and \(\omega_1\) and \(\omega_2\) are the lower and upper limits of the energy range of the calculation of \(\Delta \alpha\). This approach is not implemented in nextnano software directly, but can be computed using nextnanopy with the python script available upon request.

2.17.3. Implementation and usage

To compute the refractive index, the kramers_kronig section should be added to the optics{quantum_spectra} section of the input file.

optics{
    quantum_spectra{
        ...
        kramers_kronig{
            im_epsilon_rescale = ... # optional, default = 1.0
            delta_static_epsilon = ... # optional, default = 0.0
            delta_position = ... # optional
            delta2_static_epsilon = ... # optional, default = 0.0
            delta2_position = ... # optional
            delta3_static_epsilon = ... # optional, default = 0.0
            delta3_position = ... # optional
            ...
        }
    }
}

The parameters of the kramers_kronig section (notation as in equation (2.17.1.1)) are:

  • im_epsilon_rescale - a scaling factor for \(B\)

  • im_epsilon_extension - the energy range of the constant part \(E_a-E_b\)

  • delta_position, delta2_position, delta3_position - the position of the delta functions \(E_i\)

  • delta_static_epsilon, delta2_static_epsilon, delta3_static_epsilon - the amplitude of the delta functions \(A_i\)


This page is based on the nextnano GmbH collaboration in the scope of the SiPho-G Project aiming at development of ultrahigh-speed optical components for next-generation photonic integrated circuits, and it is funded by the European Union’s Horizon 2020 research and innovation program under the grant agreement No 101017194.

../_images/SiPho-G.png


Last update: 2025-09-10