Optical Eigenmode Solver for Dielectric Waveguides


Above: Example of optical mode profile calculated with modesolver


  • Complete, documented source code is provided
  • Includes scalar, semivectorial and full-vector versions
  • Full vector version can determine all three field components of both H and E
  • Supports anisotropic materials, with non-diagonal permittivity matrices(Caveat: one principal axis must point in z-direction.)
  • Allows non-uniform mesh sizes (both full-vector and semivectorial)
  • Incorporates perfectly-matched boundary conditions, using complex coordinate stretching
  • Provides tools for describing all of the most common rectangular waveguides
  • Many examples provided

A screenshot of typical output from the program is available here.


The software and associated utilities are written entirely as MATLAB scripts (m-files). To install, create a directory and unzip all of the files into it. It is recommended that you add this directory and the “tools” subdirectory to your MATLAB path so that you can invoke the modesolver from other directories.

modesolver-2011-04-22 (34 KB)


For details about the algorithm used in this modesolver, please refer to (or cite!) our article published in the Journal of Lightwave Technology:

A. B. Fallahkhair, K. S. Li and T. E. Murphy, “Vector Finite Difference Modesolver for Anisotropic Dielectric Waveguides“, J. Lightwave Technol. 26(11), 1423-1431, (2008).