Keywords:
Mode Extraction, Photonic Waveguide, Guided Mode, Semiconductor
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. 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:
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.
The Dielectric Waveguide example is accessed from within VSimComposer by the following actions:
Constants
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.
Parameters
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.
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. 228.
After performing the above actions, continue as follows:
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 this mode.
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. 231.
As seen in Fig. 231, our excitation has isolated a single frequency peak, which we can now find precisely using mode extraction.
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 immediately 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:
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.
The output in Fig. 232 shows that Mode 0 (on the first line) has the smallest relative error.
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:
The resulting visualization pane should resemble Fig. 233.
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.
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.