Calculating dispersion of higher order modes
This page describes how to calculate dispersion curves for an arbitrary mode. The method outlined here is the preferred method for all dispersion calculations, including for the fundamental mode.
Contents
First method
To calculate the dispersion of higher order modes:
- Find the modes at one wavelength lambda_1 using search modes
- identify the bcf file of the mode you want to get the dispersion for
- run a new simulation to find the dispersion of that mode by loading this mode using
load bcf file=
An example of a parameter file for this would be
load bcf file=mymode_C03M0001.bcf start lambda=lambda stop lambda=2.0 start n_width=(1e-4,10) number of steps=200 number of steps between log=20 accuracy goal=1d-13 acceptable accuracy=1d-13 minima_threshold=1d40 dispersion
Look up the different keywords in the user's guide and on the CMU wiki if you are not familiar with them.
Alternative method
You can also find the modes at two close wavelengths (less than 0.1nm apart) and then use load bcf file twice:
load bcf file=modeat1550nm.bcf load bcf file=modeat15501nm.bcf
This will avoid all mode jumping when calculating modes for the second wavelength step.
Warning/Troubleshooting
Degenerate modes
When calculating dispersion of modes part of a degenerate class of symmetry (e.g. modes in class 3 and 4 in C6v), only one of the two degenerate modes will be calculated, and this must be the one of the lowest class.
For example if you want to calculate the dispersion curve of a class 3 or 4 mode, you must use load bcf file with the name of the file corresponding to the mode of class 3, not 4. In such a situation running a dispersion calculation after loading a class 4 mode would simply exit the software without any dispersion being calculated.
Accuracy
For all dispersion calculation using the new version of the software, accuracy goal must be set to as small a value as possible, typically 3e-14 or 1e-13, or for very large structures up to 1e-11.
Low loss
There can be problems (typically the dispersion calculation slows down considerably or stops with a message that the Broyden algorithm was insufficient" when losses are very low (Im(neff)<1e-11). See Dispersion - Dealing with very low loss.