Simulating nonlinear effects in waveguides often requires long simulation times and propagation lengths. The 2.5D FDTD Propagator can simulate wave propagation over long distances efficiently, while still being able to accurately capture the interplay between the linear and nonlinear effects
To study the transient response of a ring modulator due to an input electrical signal, we change the refractive index of the ring as a function of time using MODE advanced material model. For this example, we will use a very simple step function for the index, but one can see that it is very straight forward to extend this to more complex time domain functions.
In ring_resonator_step_index.lms, we will start with a SOI ring resonator similar to MODE getting started example. We first run a broadband simulation without any nonlinear materials to find the location of the resonance peaks in this device. Note that the "default" source in the object tree should be enabled, and its wavelength range should be 1.545um to 1.575um. Also, the "CW" source should be disabled and the parameter delta_eps=0 of the "step_index" material should be zero. Once the simulation finishes running, we can plot the transmission for the through and drop ports as shown in the figure below.
We will use the resonance peak at around 1.5507um, and set a CW source at this wavelength. In the simulation file, enable the CW source and disable the default broadband source. For tips on how to define CW sources, please see CW Normalization. Once the simulation finishes running, right-click on the time monitor at the through port to visualize the electric field as a function of time. You should see that after the initial transient part, the signal saturates to ~0, as expected for this wavelength. The script remove_high_f.lsf can be used to remove the high frequency components to get a cleaner signal, as shown below.
To study the response of the ring modulator as it is suddenly brought out of resonance by an input electrical signal, we need to implement a change in the refractive index of the ring. To do this, we have to build a plugin material model which modifies the time domain update equations in order to apply this change in permittivity over a time step function. In the example file stepindex.cpp (available in advanced material model), one can see that it is straightforward to implement this in the calculate function:
float StepIndexMaterialPlugin::calculate(int axis, float U, float V, float E, float* storage)
storage += 1.f; // update time step
bool change_index = (storage > time_start) && (storage < time_stop);
// update permittivity if t is between time_start and time_stop
return change_index ? V/(U+delta_eps) : V/U;
This will lead to a change in the permittivity of the ring by "delta_eps" from "time_start" to "time_stop".
To use this plugin material, you will have to download the .dll file (available in advanced material model) and save it to the C:\Program Files\Lumerical\MODE\bin\plugins\materials directory. Once the .dll file is in the correct directory, you should be able to add this material into the material database and change the relevant parameters.
Once the simulation finishes running, you can right-click on the time_through monitor again to plot the modulated time signal, or use remove_high_f.lsf to remove the high frequency oscillations. The modulated time signal is shown below, and one can see the "overshooting" behavior at the leading edge as the ring comes out of resonance due to the sudden change in the refractive index.