tidy3d.KerrNonlinearity#

class KerrNonlinearity[source]#

Bases: NonlinearModel

Model for Kerr nonlinearity which gives an intensity-dependent refractive index of the form \(n = n_0 + n_2 I\). The expression for the nonlinear polarization is given below.

Parameters:
  • attrs (dict = {}) โ€“ Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, attrs are mutable. For example, the following is allowed for setting an attr obj.attrs['foo'] = bar. Also note that Tidy3D` will raise a TypeError if attrs contain objects that can not be serialized. One can check if attrs are serializable by calling obj.json().

  • n2 (Union[tidycomplex, ComplexNumber] = 0) โ€“ [units = um^2 / W]. Nonlinear refractive index in the Kerr nonlinearity.

  • n0 (Union[tidycomplex, ComplexNumber, NoneType] = None) โ€“ Complex linear refractive index of the medium, computed for instance using โ€˜medium.nk_modelโ€™. If not provided, it is calculated automatically using the central frequencies of the simulation sources (as long as these are all equal).

Note

\[P_{NL} = \varepsilon_0 c_0 n_0 \operatorname{Re}(n_0) n_2 |E|^2 E\]

Note

The fields in this equation are complex-valued, allowing a direct implementation of the Kerr nonlinearity. In contrast, the model NonlinearSusceptibility implements a chi3 nonlinear susceptibility using real-valued fields, giving rise to Kerr nonlinearity as well as third-harmonic generation and other effects. The relationship between the parameters is given by \(n_2 = \frac{3}{4} \frac{1}{\varepsilon_0 c_0 n_0 \operatorname{Re}(n_0)} \chi_3\). The additional factor of \(\frac{3}{4}\) comes from the usage of complex-valued fields for the Kerr nonlinearity and real-valued fields for the nonlinear susceptibility.

Note

Different field components do not interact nonlinearly. For example, when calculating \(P_{NL, x}\), we approximate \(|E|^2 \approx |E_x|^2\). This approximation is valid when the E field is predominantly polarized along one of the x, y, or z axes.

Example

>>> kerr_model = KerrNonlinearity(n2=1)

Attributes

complex_fields

Whether the model uses complex fields.

attrs

Methods

Inherited Common Usage

n2#
n0#
property complex_fields#

Whether the model uses complex fields.

__hash__()#

Hash method.