Given a modal solution valid for an original, unperturbed waveguide configuration, standard first order perturbation theory permits to evaluate the effect of small alterations in the structure definition on the propagation constant of the mode, or on the effective mode index, respectively. These routines (and their 3-D counterparts ...) are particularly useful for the estimation of fabrication tolerances, helping to avoid repeated mode analysis runs for slightly changed configurations. All perturbational expressions consist of ratios of overlap integrals and are polarization dependent; different expressions apply for

Validity requires that the original mode profile constitutes an acceptable approximation of the mode supported by the altered configuration (effects of mode / polarization coupling are thus not covered).

Note that the present first order perturbations are additive. Depending on the specific parameterization of the waveguide, a change in some parameter, say, a thickness of some inner layer in a multilayer configuration, might require to add the effects of the shifts of the positions of several outer layers. The procedures return directly the shift of the propagation constant. Corresponding values for the shifts in effective effective mode indices neff can be obtained by division through k0 (exception: alteration of the vacuum wavelength).

General small uniform perturbations

One of the variants of the Mode::phaseshift-method accepts an object of type Perturbation (source gengwed.h, gengwed.cpp) that represents a quite general, anisotropic, not necessarily real modification of the waveguide permittivity on some specific x-interval. The method returns the corresponding shift of the propagation constant. The driver pertwg.cpp exemplifies the use of the subroutine for all parameters that appear in the definition of a standard three-layer dielectric waveguide, alongside with rigorous calculations (direct mode analysis of the respective modified configurations). The procedure refindshift in gengwed.h, gengwed.cpp translates a refractive index alteration into a permittivity perturbation. Another driver motmphs.cpp allows to predict nonreciprocal phase shifts of TM modes in a nonsymmetric waveguide with magnetooptic core, as an example for an anisotropic perturbation.

Routines: Mode::phaseshift, leading argument: a Perturbation; refindshift
Example files: pertwg.cpp, motmphs.cpp,
Relevant source files: gengwed.h, gengwed.cpp, slamode.h, slamode.cpp.


The subroutine attenuation in gengwed.h, gengwed.cpp constructs an object of type Perturbation that is meant to represent the various kinds of attenuation mechanisms found in dielectric optical waveguides. If fed to the Mode::phaseshift-method, this permits to predict the attenuation experienced by the respective guided wave. The example motmphs.cpp shows how to evaluate these perturbational estimates for the modal attenuation in combination with the computation of dispersion curves.

Routines: Mode::phaseshift, leading argument: a Perturbation; attenuation
Example files: attwg.cpp,
Relevant source files: gengwed.h, gengwed.cpp, slamode.h, slamode.cpp.

Shifts of dielectric interfaces

Another variant of the Mode::phaseshift-method accepts an integer index and a displacement value, representing a small shift of the corresponding dielectric interface by the specified distance. The driver pertwg.cpp gives an example, including benchmarking versus rigorous calculations. Note that the derivative of the propagation constant with respect to the interface position can be obtained by supplying the value 1.0 for the displacement argument.

Routines: Mode::phaseshift, leading arguments: int, double values,
Example file: pertwg.cpp,
Relevant source files: slamode.h, slamode.cpp.

Alteration of the vacuum wavelength

If a double value leads its argument list, the Mode::phaseshift-method estimates the modal phase shift due to an alteration of the vacuum wavelength by the respective amount. According to the relation neff = lambda beta/(2 pi), the shift in the factor lambda has to be taken into account as well for the prediction of the change in the effective mode index. The method Mode::neffshift implements the corresponding expression. Wavelength derivatives of the propagation constant and of the effective mode index can be obtained by supplying the value 1.0 for the wavelength shift argument. Examples are given in the drivers pertwg.cpp (a single configuration), and wldisp.cpp (wavelength dispersion).

Routines: Mode::neffshift; Mode::phaseshift, leading argument: double,
Example files: pertwg.cpp, wldisp.cpp,
Relevant source files: slamode.h, slamode.cpp.