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.
Attenuation
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.