Field example

Waveguide definition

Coordinate system

The mode solver assumes a cartesian coordinate system with axes denoted by x, y, and z. The longitudinal z-axis indicates the direction of light propagation, the transverse x-, and y-axes are oriented such that all permittivity discontinuities are parallel to one of these axes. In the usual case of a guiding dielectric film on a flat substrate, the y-direction shall be parallel to the substrate surface, the x-axis is normal to the substrate. The following figure shows the proper coordinate system for a rib waveguide:

rib waveguide, 3D-view and cross section

As suggested by the figure, the directions y and x will be called horizontal and vertical, respectively. While this orientation conflicts e.g. with the usual axis orientaion in plot tools, it fits to the description of planar (1D, slab) waveguides in terms of x and z, where x is the relevant transverse coordinate, with the fields and the permittivity being constant along the y-axis.

The choice of the coordinate orientation induces the naming convention for the mode polarization according to the magnitude of the transverse electric (E) and magnetic (H) components of the mode profile:

Waveguide objects

To encode the waveguide geometry for processing with the mode solver, the cross section plane, the x-y-plane, is to be decomposed into a matrix of rectangles with constant refractive index. The first and last rectangles in each row/column are unbounded. For the rib waveguide example, the decomposition looks like this:

rib waveguide, rectangular decomposition

The information on the numbers of rows/columns, the layer boundaries, the refractive index values, and the vacuum wavelength constitute a Waveguide object as defined in waveg.h, waveg.cpp. See matrix.h and matrix.cpp for the definition of vectors and matrices used for the boundary locations and refractive indices. Note the following points:

Among the members of a Waveguide-object are:

nx, ny The number of inner layers / slices in the rectangular decomposition of the cross section plane.
hx, hy The positions of horizontal / vertical boundaries.
lambda The vacuum wavelength of the light propagating in this waveguide.
n The matrix of refractive index values.
eps Functions which return permittivity values, for positions specified by rectangle indices or by (x, y)-pairs.
xyplane For integral evaluations: A rectangle which is large when compared to the specified core dimensions.

Additionally, objects of class Waveguide know how to write and read themselves to/from FILEs, they know how to translate themselves to new coordinates, they can deal with the rectangular decomposition in terms of indices and coordinate values (rectidx, rectbounds, testconnect, bdmatch), and they have some knowledge about the bounds defaultneffmin, defaultneffmax on prospective effective indices. Further details can be found in the source files waveg.h, waveg.cpp directly.

The Waveguide constructors take one of the sets {}, {nx, ny}, or {nx, hx, ny, hy, lambda, n}, where the remaining information must be directly assigned. See one of the example files for an actual waveguide definition.

SiIO, Simulations in Integrated Optics