tidy3d.KerrNonlinearity

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:
  • n2 (float = 0) – [units = um^2 / W]. Nonlinear refractive index in the Kerr nonlinearity.

  • n0 (Optional[float] = 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).

Notes

This model uses real time-domain fields, so \(\n_2\) must be real.

This model is equivalent to a NonlinearSusceptibility; the relation between the parameters is given below.

\[\begin{split}P_{NL} = \varepsilon_0 \chi_3 |E|^2 E \\ n_2 = \frac{3}{4 n_0^2 \varepsilon_0 c_0} \chi_3\end{split}\]

In these equations, \(n_0\) means the real part of the linear refractive index of the medium.

To simulate nonlinear loss, consider instead using a TwoPhotonAbsorption model, which implements a more physical dispersive loss of the form \(\chi_{TPA} = i \frac{c_0 n_0 \beta}{\omega} I\).

The nonlinear constitutive relation is solved iteratively; it may not converge for strong nonlinearities. Increasing tidy3d.NonlinearSpec.num_iters can help with convergence.

For complex fields (e.g. when using Bloch boundary conditions), the nonlinearity is applied separately to the real and imaginary parts, so that the above equation holds when both \(E\) and \(P_{NL}\) are replaced by their real or imaginary parts. The nonlinearity is only applied to the real-valued fields since they are the physical fields.

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

n2

n0

n2#
n0#