tidy3d.KerrNonlinearity#
- class KerrNonlinearity[source]#
Bases:
NonlinearModel
Model for Kerr nonlinearity which gives an intensity-dependent refractive index of the form
. 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 anattr
obj.attrs['foo'] = bar
. Also note that Tidy3D` will raise aTypeError
ifattrs
contain objects that can not be serialized. One can check ifattrs
are serializable by callingobj.json()
.use_complex_fields (bool = False) – Whether to use the old deprecated complex-fields implementation. The default real-field implementation is more physical and is always recommended; this option is only available for backwards compatibility with Tidy3D version < 2.8 and may be removed in a future release.
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).
Notes
This model uses real time-domain fields, so
must be real.This model is equivalent to a
NonlinearSusceptibility
; the relation between the parameters is given below.In these equations,
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 .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
and 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
, we approximate . This approximation is valid when the field is predominantly polarized along one of thex
,y
, orz
axes.Example
>>> kerr_model = KerrNonlinearity(n2=1)
Attributes
Whether the model uses complex fields.
Methods
Inherited Common Usage
- use_complex_fields#
- n2#
- n0#
- property complex_fields#
Whether the model uses complex fields.
- __hash__()#
Hash method.