Dielectric Waveguide Mode Calculation using Point Permittivity (dielectricWaveguideModeCalcPP.sdf)


Mode Extraction, Photonic Waveguide, Guided Mode, Semiconductor

Problem Description

This example demonstrates running a quasi-2D simulation of a rectangular dielectric waveguide and extracting the frequency and fields of a guided mode using the filter diagonalization method. The waveguide axis runs parallel to the x-axis, and is surrounded by Silica in the y and z directions. The y and z boundaries are set to absorb radiation. This simulation uses point permittivity as opposed to permittivity averaging, which is done in Dielectric Waveguide Mode Calculation. 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 Dielectric Waveguide 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 Dielectric Waveguide Mode Calculation using Point Permittivity 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.

LENGTH_UNIT: This is chosen to make the size of the system of order unity, as sometimes helps with the CSG construction.

WAVELENGTH_VAC: The estimated vacuum wavelength (frequency divided by the speed of light) for the eigenmode of interest.

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

RESOLUTION: The number of cells per estimated wavelength in the propagation (x) direction.

HALF_BANDWIDTH: The relative amount above and below the estimated frequency of the mode for excitation. Found modes should be in this range to be accurate.

SUPPRESSION_FACTOR: a fall of by this factor is considered zero.

CFL_FACTOR: The time step will be chosen to be this times the limit for numerical stability.

PERMITTIVITY_BACKGROUND: This value of electrical permittivity is assigned to the space outside the waveguide. It is set to Silica.


Derived from the above are other parameters in the simulation. Some examples:

KAY: the estimated wavenumber, given by N_EFF_EST*(TWOPI/(WAVELENGTH_VAC/LENGTH_UNIT)). Here one sees a conversion using LENGTH_UNIT.

PHASE: is calculated as described at the beginning.

HEIGHT_WAVEGUIDE: .22e-6/LENGTH_UNIT: is the actual height scaled by LENGTH_UNIT.

NSTEPS_EXCITE: is the computed number of steps to excite the simulation with the desired frequency content.

Setting up the Broad-band Excitation

As delivered, the system is set up for exciting a broad-band with a delta-function in time. A history (eHist) has been added so that we can see the frequency content of the excitation. A delta current excitation has been selected. This is shown in Fig. 234.

Choosing the delta-function current source

Fig. 234 Choosing the delta-function current source

Running the Broad-band Excitation

After performing the above actions, continue as follows:

  • Proceed to the Run Window by pressing the Run button in the left column of buttons. You will be asked to Save. Click Save upon the request to save.
  • To run the file, click on the Run button in the upper left corner of the right pane. You will see the output of the run in the right pane. The run has completed when you see the output, “Engine completed successfully.” The result is shown in Fig. 235.
Excitation run.

Fig. 235 Run window at the end of a successful run.

Visualizing the Broad-band Excitation

  • Proceed to the Visualize Window by pressing the Visualize button in the left column of buttons.
  • From the Data View dropdown menu select History
  • Set Graphs 1 and 2 to eHist_1 (the y component).
  • Set Graph 3 to <None>.
  • In the both graphs, click FFT.
  • In the upper graph, select the Zoom radio button, and select a box around the lower peak. The result is shown in Fig. 236.
Broad-band excited spectrum.

Fig. 236 Spectrum seen from the broad-band excitation.

Both spectra show that there is a mode at around 190e6 Hz, with many more modes above. We will excite the waveguide with a window of frequencies centered about the lowest mode.

The Narrow-band Excitation

Now return to Setup, for the narrow-band excitation. HALF_BANDWIDTH is set to 0.1, so that the excitation will start to fall off at FREQ_MID +- 10%. To change to the narrow-band simulation, choose window for J1 under currentSource. Under Basic Settings, change steps between dumps to 0. This will make 1 dump at the end of the run. Under Parameters, check the value of NSTEPS_EXCITE. Now on the Run window, set the Number of Steps to somewhere around the value of NSTEPS_EXCITE. The Dump Periodicity should be set to 0. Run the simulation and proceed to the visualization window, setting it up as before. The result is shown in Fig. 237.

Narrow-band excited spectrum.

Fig. 237 Spectrum seen from the narrow-band excitation.

As seen in Fig. 237, our excitation has isolated a single frequency peak, which we can now find precisely using mode extraction.

Mode Extraction by Operator

Mode extraction by operator requires that one have sequences of 3 dumps during the time of free oscillation. To get these, we return to the Setup window, and under Basic Settings, we set dump in groups of to 3 and set steps between dumps to 20.

We next move to the Run window, make sure Dump at Time Zero is unclicked and put in 1 for Restart at Dump Number. We set the Number of Steps to 202 (dumps will be at multiples of 20 + 0, 1, or 2). We then empty out (blank) the Dump Periodicity text box and hit Run.

Once the run finishes and the fields are dumped, proceed to the analysis screen by clicking the Analyze navigation button. Select extractModesViaOperator.py and click Open. Change the following options:

  • electricField: D,DI
  • magneticField: B,BI
  • operator: d2dt2
  • dumpRange: 1:
  • cellSamples: 0:2,25:36:5,25:36:5

Also check Overwrite Existing Files. Run the analyzer by clicking Analyze button in the upper right corner. The analyzer output should resemble Fig. 238.

Mode extraction output

Fig. 238 Output from the mode extraction script.

The output in Fig. 238 shows that Mode 0 (on the first line) has the smallest relative error.

Visualizing the Fundamental Mode

After performing the above actions proceed to the Visualize window by pressing the Visualize button in the left column of buttons. You may need to Reload Data (bottom left). Visualize an eigenmode by following these steps:

  • From the Data View dropdown select Data Overview.
  • Expand Scalar Data, expand EigenD, and select EigenD_1.
  • Below the visualization, select the dump number (0) that corresponds to a mode number with the lowest operator error (Mode 0).

The resulting visualization pane should resemble Fig. 239.

Contours of the Dy component of the guided mode.

Fig. 239 Color map of the Dy component of the guided mode.

One can select other components of the electric field to see how they vary for this eigenmode. The profile of the eigenmode is now saved in a vsh5 file in the folder where the simulation was run. This mode is launched into the waveguide in the Dielectric Waveguide Mode Launch example.

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.