Frequently, waveguides in integrated optics are formed by an etching process. The resulting refractive index profile shows sharp discontinuities with regions of constant permittivity in between. Depending on the etching technique, these areas are more or less of a rectangular shape. The wave-matching-method (WMM) is an approach for calculating the guided modes of such structures numerically.
It is motivated by the common strategy for solving the mode problem for multilayer slab waveguides: First, on each region with constant refractive index a set of plausible solutions to the basic wave equation is selected. Then the boundary conditions for dielectric interfaces combine fields on adjacent regions to a system of linear equations. Finally, its nonvanishing solutions yield propagation constants and mode profiles. Analogously, the present approach may be regarded as an attempt to establish a similar procedure for two transverse dimensions. Given a reasonable ansatz of trial fields, the algorithm tries to find best solutions in terms of a least squares expression for the remaining mismatch on the dielectric boundaries.
The procedure has been implemented both for semivectorial simulations and for fully vectorial mode analysis, where each of the common formulations for the vectorial mode problem may be employed. The vectorial WMM performs truly vectorial calculations in the sense that both transverse directions are treated alike. The piecewise defined trial fields are well suited to deal with field discontinuities or discontinuous derivatives. At the corners of dielectric waveguides, the method yields correct qualitative features of the divergent field behaviour.
For widely established benchmark problems we observed excellent agreement between the WMM and several previously published methods. While in principle the current implementation allows to simulate cross sections with an arbitrary rectangular decomposition, the method turns out to be effective especially for structures described by few rectangles and boundary lines only. This class contains single rib and raised strip waveguides as well as coupler geometries constructed from these waveguides.
Unlike methods based on finite differences or finite elements, the WMM yields semianalytical mode field representations which are defined on the entire plane of the waveguide cross section, including the dielectric discontinuities explicitely and accurately. The fields are therefore perfectly suited for further processing, for instance in the framework of propagating mode analysis, coupled mode theory, or for the evaluation of perturbation theory integrals.
Adhering to the continuous development, the approach has been the subject of papers concerned with the semivectorial WMM, the vectorial implementation, and its behaviour for composite structures. For a more detailed account on the the numerics of the mode analysis procedures we refer to these publications. Many of the simulation examples given there can be reproduced using the programs that come with this document.
The mode solver has been developed in the framework of project D10 of the Sonderforschungsbereich 225 "Oxidische Kristalle für elektro- und magnetooptische Anwendungen" of the DFG. The project was concerned with theoretical investigations of nonreciprocal light propagation in magnetooptic garnet crystals. Hence most of the example programs deal with waveguides made of these materials. However, it is the hope of the authors that the approach will be helpful in other areas of integrated optics as well.
Currently, the WMM mode solver consists of a number of C++ library files. For a new application, you will have to write a C++ program including the main() procedure, or to edit one of the supplied application examples for your own purposes (this should be the easiest way to get started). Compiling the application together with the library produces the executable.
This organization has the disadvantage of frequent program recompilations, and may seem to be discomfortable at the first glance. The second reveals, that only the usually short application file has to be multiply compiled and linked, which should be a matter of not more than a few seconds. The time overhead is negligible, while in this way the full functionality of the C++ language becomes available for the applications. For a design task which usually involves sweeps over various geometrical or material parameters, thus multiple mode analysis runs, this organization seems to be more appropriate than clicking through a kind of session management or learning a new and probably restricted script language. It also keeps the code portable and open for own extensions.
The program structure obviously requires a basic knowledge of the C++ programming language and a working C++ compiler. By now (≈ 2000), the code runs on several machines, including the HP 9000 workstations of the department, the IBM RS/6000 SP server of the computing center of the University of Osnabrück, and a number of Personal computers running MS-DOS / Windows?? or lately Linux. For all these platforms and operating systems, the free GNU Compiler Collection is available. While the WMM programs should work well with that compiler, on some occasions we have observed executables produced with the 'native' compilers of the operating systems to be considerably faster. Thus, if possible, you should use a programming environment which is optimized for (i.e. comes with) the underlying operating system / machine.
The mode solver programs do not include tools for visualizing the numerical output data. One will need at least a means to view two dimensional curves (e.g. the Gnuplot utility) and a program package to display three dimensional data, mode profiles and mode interference data. For this purpose, subroutines have been added to the WMM which put out valid MATLAB scripts (.m-files). Therefore it is most convenient to work within an environment where this tool is available. Otherwise, the output routines would have to be adapted.
The application programs may be regarded as the input to the mode solver. The output consists of the (stderr) text stream on the one hand. This includes control information about the structure under investigation, log information about the mode solver progress, notes about file input and output, and, along with modes being saved or read, the propagation constant or effective mode index values. On the other hand, the mode solver returns numerical data in files of one of the following types, identified by their extensions (all output files are in ASCII format):
.xyf:Data file for twodimensional curves, two columns of numbers separated by blank and newline characters.
.mod:All information concerning a single guided mode.
.mar:An array of modes.
.m :MATLAB script files (see below), usually containing commands and data to plot an entire figure. The type of the figure is indicated by the last character of the truncated filename, one of 'C', 'I', 'S', 'F', 'A' or 'M' for contour plot, intensity image, surface mesh, a fancy style surface graphic (the introductory figures of this document), surface plots of all mode components, or a movie script intended to show a sequence of one of the former plots. For two dimensional data, a script of type 'L' produces a figure displaying the corresponding curve, while a script of type 'V' represents an additional curve to a 2-D figure. Where appropriate, besides the field values the output files include commands for proper annotation and for a sketch of the waveguide geometry. The resulting figures are aimed to be as close as possible to a state of being fit for publishing.
Usually, a design task involves many mode and field files, differing e.g. in polarization, symmetry, or the plotted field components. To get rid of the task of inventing filenames, most functions that output these files accept only two character arguments to specify the filename (which can be conveniently connected to a loop index, cf. e.g. disp.cpp or bm1.cpp). Where appropriate, the remainder of the filename is composed by some of the following ingredients: