Microring Resonator Mode Calculation (microringResonatorModeCalc.sdf)


Mode Solver, Microring Resonator, Unidirectional Mode Launcher, MAL, Guided Mode, Photonic Device, Semiconductor

Problem Description

This example demonstrates running a quasi-2D simulation of a dielectric waveguide and extracting the frequency and fields of a guided mode using the filter diagonalization method. This is a quasi-2D simulation of the microringResonator example. The purpose of this example is to calculate the guided mode profile for the microringResonator example. After the mode profile is calculated one can interpolate the profile to the microringResonator example which will propagate the profile.

The waveguide axis runs parallel to the x-axis, and is surrounded by cladding in the y and z directions. The cladding terminates at the y and z simulation boundaries, which are set to perfect conductors (reflecting boundaries). The x simulation boundaries are phase-shifting; i.e., fields on the +x boundary are set to the values of the fields on the -x boundary multiplied by \(e^{i \phi}\).

Eigenmodes in such a simulation have the form:

\[\mathbf{E}(\mathbf{x},t) = \mathbf{E}(y,z) e^{i(k x - \omega t)}\]

where the wavenumbers \(k\) that may be simulated are given by \(k L_x = \phi + 2\pi n\), where \(n\) is any integer and \(L_x\) is the length of the simulation in the x direction (in this case, two grid cells; or \(L_x = 2 \Delta x\)). Since we will be searching for the lowest-frequency guided modes, we can safely assume \(n = 0\) and set \(\phi = k L_x\) for a desired \(k\).

The “modal index” or “effective index of refraction” of a waveguide mode is given by \(\bar{n} = k / k_0\) where \(k_0 = \omega / c\). If the waveguide has index of refraction \(n_w\) and the cladding \(n_c < n_w\), then a guided mode will have a modal index in the range, \(n_c < \bar{n} < n_w\).

This simulation can be performed with a VSimEM license.

Opening the Simulation

The Microring Resonator Mode Calculation example is accessed from within VSimComposer by the following actions:

  • Select the NewFrom Example… menu item in the File menu.
  • In the resulting Examples window expand the VSim for Electromagnetics option.
  • Expand the Photonics option.
  • Select Microring Resonator Mode and press the Choose button.
  • In the resulting dialog, create a New Folder if desired, and press the Save button to create a copy of this example.

Simulation Properties

This example contains a number of Constants defined to make the simulation easily modifiable. The user should avoid altering constants not mentioned below.

General Simulation Parameters:

RESOLUTION: Specifies the coarseness/fineness of the simulation grid. The cell size is set to be this number multiplied by the smallest simulation feature, i.e., the smaller of the fiber radius or the simulated longitudinal wavelength.

WAVEL_RESOLVE: Specifies wavelength that is used to calculate the grid spacing (DX,DY,DZ). This should be a wavelength between WAVEL_MIN and WAVEL_MAX`.

LENGTH_UNIT: Specifies the length-scale of the simulation. The fiber radius and box size are divided by this number.

Target eigenmode parameters:

NEFF_GUESS: The estimated modal index of the eigenmode of interest; it should have a value between \(n_c\) and \(n_w\).

The following excitation parameters specify the frequency-domain characteristics of the current excitation inside the waveguide. Eigenmode extraction works well when only a few modes are present in the simulation; so we excite a narrow band in frequency space (or wavelength space) containing the frequencies (wavelengths) of our eigenmode(s) of interest. The shape of the frequency window is a flat top with Gaussian tails.

Excitation parameters:

WAVEL_MIN: The lower bound of the flat-top portion of the excitation window in wavelength space.

WAVEL_MAX: The upper bound of the flat-top portion of the excitation window in wavelength space.

Mode extraction is a multi-stage process. Initially, an approximation of the spectrum should be obtained via manual inspection of an FFT of the fields resulting from a delta function excitation. Then, an excitation should be crafted that excludes irrelevant modes from an extraction simulation. Finally, the extraction simulation should be excited (without dumping fields), then restarted with dump settings appropriate for the mode extraction analyzer.

The following parameters help the user choose an appropriate set of options in the Basic Settings section related to simulation run time and field dump settings (e.g. “number of steps”, “steps between dumps”, etc.). depending on the type of analysis.

Basic Settings helpers:

NSTEPS_EXCITE: This is the number of time steps required to encompass the entire simulation excitation. When running the excitation part of the simulation, the “number of steps” should be strictly larger than this parameter.

NSTEPS_EXTRACT: This is the number of time steps required to encompass the entire simulation extraction. When running the extraction part of the simulation, the “number of steps” should be strictly larger than this parameter.

NSTEPSPERDUMP_EXTRACT: This is the number of time steps per dump required for the mode extraction analysis script.

NOTE: When dumping fields for this example, the “dump in groups of” should always be set to 3. This can be accomplished by going to “basic settings” and changing “dump in groups of” to 3.

In the 2D View tab of the right pane of the Setup Window, the device is visible with a smaller grid encompassing the lower left section of the input waveguide.

Setup Window

Fig. 244 Setup Window for the Microring Resonator Device example.

Expanding the Materials section of the Simulation tree shows that the simulation includes silicon and silica. This was created by importing a material from the Database tab of the right pane of the Setup Window.

Perform an Exploratory Simulation

An exploratory simulation is one in which the user wishes to discover the approximate frequencies (or wavelengths) of eigenmodes in a simulation. Such a simulation consists of a wide-band (or short-time) excitation in which we collect the field values (via the EFieldInWaveguide field History; c.f. Setup -> Histories -> EFieldInWaveguide) and subsequent FFT analysis.

In the Setup Window, set up a delta-function (in time) excitation by navigating to: Field Dynamics -> CurrentDistributions -> currentSource; then right-clicking on J1(x, y, z, t) and Assign SpaceTimeFunction to deltaFunc.

Choosing a current source

Fig. 245 Choosing a current source

Finally, run the simulation by clicking the Run button on the left navigation column and then pressing the Run button in the upper left corner of the right pane.

When the simulation finishes, proceed to the visualization screen by clicking the Visualize button on the left navigation column. In the Data View dropdown, select History, then select FFT on the eHist_0 plot, seen in Fig. 246.

Setup Window

Fig. 246 Setup Window for the Cylindrical Dielectric Fiber geometries.

In the next section, we use the location of the peaks (which are in frequency space) to set up a mode extraction simulation.

Perform extract modes simulation

In this part, we alter the exploratory simulation performed above to extract the lowest-frequency modes identified in the FFT. Navigate back to the Setup Window.

First, set up a simulation excitation with a narrow frequency band. In the Setup Window, navigate to: Field Dynamics -> CurrentDistributions -> currentSource; then right-click on J1(x, y, z, t) and Assign SpaceTimeFunction to gaussFreqWindow. Then, set the following constants, which were determined by choosing frequency bounds that contain the FFT peaks of interest, then converting frequency to wavelength via \(c = f \lambda\).

Now, inspect the NSTEPS_EXCITE parameter and set the following Basic Settings:

  • number of steps: At least NSTEPS_EXCITE
  • steps between dumps: 0 (turns off dumping)

Run the simulation.

After the simulation run completes, navigate back to the Setup window to prepare the field-dumping portion of the mode extraction simulation. Set the following Basic Settings:

  • number of steps: At least NSTEPS_EXTRACT.
  • steps between dumps: NSTEPSPERDUMP_EXTRACT
  • dump in groups of: 3

Now, click the Run button on the left navigation column. The field-dumping portion of the mode extraction simulation must be run as a restart. Set “Restart at Dump Number” to 1. Run the simulation.

Extracting the Modes with an Analyzer

Once the run finishes and the fields are dumped, proceed to the analysis screen by clicking the Analyze navigation button. In the “Choose an analyzer” dropdown, select extractModesViaOperator.py. Change the following options to

  • electricField: D,DI
  • magneticField: B,BI
  • dumpRange: 2:
  • cellSamples: ::10,::10,::10

Also check “Overwrite Existing Files”. Run the analyzer by clicking Analyze button in the upper right corner. The analyzer output should resemble the following image.

Mode extraction output

Fig. 247 Output from the mode extraction script.

Visualizing the results

After performing the above actions proceed to the Visualize window by pressing the Visualize button in the left column of buttons. Visualize an eigenmode by following these steps:

  • Near the top left corner of the window, make sure Data View is set to Data Overview.
  • Expand Scalar Data, expand D, and select EigenD_1
  • Below the visualization, select the dump number that corresponds to a mode number with the lowest operator error (refer to the analyzer output). The large field values in the visualization that appears should be mostly confined to the waveguide (center of the simulation domain).

Select the EigenD_1 for another interesting guided mode field pattern:

Mode extraction output

Fig. 248 Output from the mode extraction script.

Further Experiments

One can run a full convergence study of eigenmode frequencies by altering the RESOLUTION parameter in the Setup Window and re-running the simulation and mode extraction script. The simulation grid cell size is set to the RESOLUTION value times the smallest width of the rectangular waveguide.