Sie sind auf Seite 1von 340

OptiMode

Users Reference
Waveguide Optics Modeling Software System
Version 3.1 distributed with OptiBPM 12.1
for WindowsXP, Vista, Windows 7
OptiMode
Users Reference
Waveguide Optics Modeling Software Systems
Copyright 2013 Optiwave
All rights reserved.
All OptiMode documents, including this one, and the information contained therein, is copyright material.
No part of this document may be reproduced, stored in a retrieval system, or transmitted in any form or by any means whatsoever,
including recording, photocopying, or faxing, without prior written approval of Optiwave.
Disclaimer
Optiwave makes no representation or warranty with respect to the adequacy of this documentation or the programs which it
describes for any particular purpose or with respect to its adequacy to produce any particular result. In no event shall Optiwave, its
employees, its contractors or the authors of this documentation be liable for special, direct, indirect or consequential damages,
losses, costs, charges, claims, demands, or claim for lost profits, fees or expenses of any nature or kind.
Contact Information
Technical Support
Tel (613) 224-4700 E-mail support@optiwave.com
Fax (613) 224-4706 URL www.optiwave.com
General Enquiries
Tel (613) 224-4700 ext.0 E-mail info@optiwave.com
Fax (613) 224-4706 URL www.optiwave.com
Sales
Tel (613) 224-4700 ext.249 E-mail sales@optiwave.com
Fax (613) 224-4706 URL www.optiwave.com
Table of Contents
Table of Contents........................................................................................................1
Overview of OptiMode ..............................................................................................15
Motivation ..............................................................................................................................15
What is OptiMode?................................................................................................................15
Graphics...................................................................................................................15
Overview of OptiMode applications ........................................................................17
OptiMode applications..........................................................................................................17
Installing OptiMode...................................................................................................19
Hardware and software requirements .................................................................................19
Protection key..........................................................................................................19
OptiMode directory...................................................................................................19
Installation................................................................................................................20
Installing OptiMode on Windows 2000/XP ...............................................................20
Technical support.....................................................................................................20
Vectoral Modal Analysis for Anisotropic Waveguide............................................21
Introduction ...........................................................................................................................21
Vectoral Mode Calculation.......................................................................................21
Appendix I ..............................................................................................................................24
E-Formulation...........................................................................................................24
Full H-vector Formulation.........................................................................................25
H-Vectorial Modal Analysis for Anisotropic Waveguide...........................................29
Appendix II .............................................................................................................................31
H-Formulation..........................................................................................................31
References .............................................................................................................................32
Fiber Mode Solvers ...................................................................................................35
Introduction ...........................................................................................................................35
Real-valued formulation .......................................................................................................36
Debye Potential .....................................................................................................................36
Separation of Variables ........................................................................................................38
Solution of the linear system...............................................................................................39
Dispersion equation..............................................................................................................40
LP Modes ...............................................................................................................................42
References .............................................................................................................................44
Finite Difference Mode Solver..................................................................................45
Introduction ...........................................................................................................................45
Magnetic Formulation ...........................................................................................................46
Magnetic Finite Difference Equations .................................................................................47
Implicitly Restarted Arnoldi Method (IRAM) .......................................................................48
Transparent Boundary Condition (TBC) .............................................................................54
References .............................................................................................................................56
OptiMode Tutorial 1 - Getting Started .....................................................................59
Starting OptiMode....................................................................................................59
Open a new project..................................................................................................60
To enable the Auto Define Example Profiles feature...............................................61
Adjust the Layout View.............................................................................................62
Add a Waveguide for Analysis .................................................................................63
OptiMode Tutorial 2 - Define Materials and Waveguide Profiles ..........................71
Turn off the Auto Define Example feature................................................................71
Adding new materials...............................................................................................72
Adding a Fiber Profile...............................................................................................74
Defining the project..................................................................................................76
Add a waveguide for analysis ..................................................................................78
Mode solver settings ................................................................................................79
Find the modes ........................................................................................................80
View Results in the OptiMode Analyzer...................................................................81
OptiMode Tutorial 3 - Parameter Scanning ............................................................83
Define User Parameters...........................................................................................83
Define a parameter sweep.......................................................................................86
Specify Graphical Output.........................................................................................87
Run a Sweep............................................................................................................88
Viewing scanned results ..........................................................................................89
OptiMode Tutorial 4 - Multi-level Scanning ............................................................91
Set the wavelength...................................................................................................91
Specify a two-level scan of User Parameters ..........................................................91
Create parameter levels...........................................................................................93
Specify a graphical display with legend...................................................................94
Run the simulation...................................................................................................95
Specify more than one graph...................................................................................96
OptiMode Tutorial 5 - Photonic Crystal Fibre and VB Script ................................99
Define Materials and Profile.....................................................................................99
Use Generate Layout Script...................................................................................103
Write your own script..............................................................................................104
Script for photonic crystal fibre...............................................................................106
Finding modes of photonic crystals........................................................................108
References ...........................................................................................................................109
OptiMode XS Layout Designer...............................................................................111
Main parts of the GUI ..........................................................................................................111
Layout Window.......................................................................................................112
Layout Designer Dialog..........................................................................................112
Refractive Index window........................................................................................112
Scripting window....................................................................................................113
Notes window.........................................................................................................113
Output window.......................................................................................................114
Main menu bar .....................................................................................................................115
Toolbars ...............................................................................................................................115
OptiMode Layout Designer menus and buttons ..................................................117
File menu..............................................................................................................................117
Edit menu .............................................................................................................................118
View menu............................................................................................................................119
Layout Menu ........................................................................................................................121
Solving Menu .......................................................................................................................121
Tools menu ..........................................................................................................................122
Preferences menu ...............................................................................................................122
Window menu ......................................................................................................................123
Help menu ............................................................................................................................123
OptiMode Layout Designer functions ...................................................................125
New.......................................................................................................................................125
Initial Properties dialog box....................................................................................125
Default Waveguide properties................................................................................126
3D Wafer Properties tab.........................................................................................127
Profiles and Materials:............................................................................................129
Open .....................................................................................................................................130
Save As ................................................................................................................................130
Wafer Properties..................................................................................................................131
Wafer Properties dialog box...................................................................................131
Default Waveguide ..............................................................................................................131
Profiles and Materials .........................................................................................................132
Toolbars ...............................................................................................................................132
Output Window....................................................................................................................132
3D Graph Items....................................................................................................................132
Solver Parameters...............................................................................................................136
Run Script ............................................................................................................................136
Generate Template Scri pt ...................................................................................................136
Generate layout script ........................................................................................................137
Generate scanning script ...................................................................................................137
Dispersion scripting............................................................................................................137
Parameter Sweep ................................................................................................................138
Sweep Data vs Final Data......................................................................................140
Spread Tools..........................................................................................................141
Level Functions......................................................................................................143
Parameter Functions..............................................................................................144
Run Optimization.................................................................................................................144
Optimization Results...........................................................................................................145
Analyzer File Path ...............................................................................................................146
3D Graph Settings ...............................................................................................................148
Region of Interest...................................................................................................148
Height Plot Settings................................................................................................149
Axis Settings ..........................................................................................................150
Image Map Settings ...............................................................................................150
Palette Settings......................................................................................................152
Data Clamping Settings .........................................................................................152
Refractive Index View .........................................................................................................154
Data Visualizer for 64-bit Applications..............................................................................155
Zooming in and out - All views ...............................................................................155
Pan, move - All views.............................................................................................155
Rotation - Height Plot (Surface) view only .............................................................155
Pan - Height Plot (Surface) view only....................................................................155
Rotation-spin - Height Plot (Surface) view only......................................................155
Zoom in and out - Height Plot (Surface) view only.................................................155
Point Selection.......................................................................................................155
Layout Objects ........................................................................................................157
Waveguide vs. wafer ...........................................................................................................157
Waveguide width and wafer width.....................................................................................157
Depth description................................................................................................................159
Initial data.............................................................................................................................160
User Interface of a Parameteri zed position of a Layout Shape ......................................160
Adding and editing layout objects via the Layout design dialog ...................................161
Cross Section Waveguide Properties dialog box ............................................................161
Regions ................................................................................................................................163
Substrate Region...................................................................................................163
User File Region....................................................................................................164
Solving .................................................................................................................................167
Variables and Functions dialog box.......................................................................167
Solver Parameters .................................................................................................172
Profile Designer.......................................................................................................181
Profile Designer ...................................................................................................................181
Main parts of the GUI .............................................................................................181
Main menu bar .......................................................................................................183
Toolbars .................................................................................................................184
Library Browser toolbar..........................................................................................184
..............................................................................................................................................186
Profile Designer menus ..........................................................................................187
File menu..............................................................................................................................187
Edit menu .............................................................................................................................187
View menu............................................................................................................................187
Tools menu ..........................................................................................................................187
Help menu ............................................................................................................................188
Profile Designer functions .....................................................................................189
Library Browser ...................................................................................................................189
Compare Libraries...............................................................................................................189
Edit Variables and Functions .............................................................................................193
Mode Solver(s).....................................................................................................................193
Wafer tab................................................................................................................194
Waveguide tab.......................................................................................................195
Mesh, Mode and Wavelength Settings ..............................................................................195
Mode Settings......................................................................................................................196
Options.................................................................................................................................198
Profiles .....................................................................................................................199
Channel Profile....................................................................................................................199
Channel Profile toolbar .......................................................................................................201
2D Profile Definition...............................................................................................201
3D profile definition................................................................................................201
Slanted Walls on waveguide profiles Feature........................................................203
Fiber profile............................................................................................................204
2D profile definition................................................................................................206
3D profile definition................................................................................................207
Diffusion process library.........................................................................................207
Ti: Linb0
3
profile - Titanium diffusion in lithium niobate.................................................208
Mg: LiNb0
3
profile - Magnesium diffusion in lithium niobate .........................................212
Mg: Pro Toolbar ....................................................................................................212
Process definition...................................................................................................213
Group I ...................................................................................................................213
Group II ..................................................................................................................213
Dopant constant ....................................................................................................213
Dispersion factor....................................................................................................213
Distribution constant...............................................................................................213
Distribution power factor ........................................................................................214
H
+
:LiNb0
3
profile - Proton Exchange ................................................................................214
Proton Exchange toolbar........................................................................................215
Process definition...................................................................................................215
Annealing process..................................................................................................215
Diffusion depth before annealing...........................................................................215
Proton source.........................................................................................................215
Process parameters...............................................................................................215
Exchange...............................................................................................................215
Maximum refractive index change on the surface..................................................216
Annealing process parameters..........................................................................................216
User Defined Profiles ..........................................................................................................217
Definition of user defined profiles...........................................................................217
Types of user defined profiles................................................................................218
Function declaration...............................................................................................218
Function arguments ...............................................................................................218
Argument associations...........................................................................................219
System Variables ...................................................................................................219
Function body execution........................................................................................222
Function domain (Limits)........................................................................................222
User Function Profile..........................................................................................................223
User function profile - Function declaration............................................................223
User function profileFunction body.....................................................................224
User function profileFunction limit ......................................................................224
User function profile - Function evaluation.............................................................225
User Function Profile toolbar..................................................................................225
User Function definition.........................................................................................225
Profile function tab.................................................................................................227
User variables tab..................................................................................................227
User functions/DLLs tab.........................................................................................228
Material constants tab............................................................................................228
User DLL profile.....................................................................................................229
User DLL profile - Function declaration..................................................................229
User DLL profile - Location (Function body) ..........................................................230
User DLL profile - Location specification................................................................230
Example.................................................................................................................231
User DLL profile - Function limit.............................................................................231
User DLL profile - Function evaluation...................................................................232
User DLL Profile toolbar.........................................................................................233
User DLL function definition...................................................................................233
Arguments Association Table ................................................................................234
Center point of a profile......................................................................................................235
Channel Profile.......................................................................................................235
Fiber Profile............................................................................................................237
Diffused and User Defined Profiles........................................................................238
Materials...................................................................................................................239
Dielectric Material...................................................................................................240
Diffused Material ....................................................................................................246
FDTD-Dispersive....................................................................................................248
OptiMode 3D Mode Solver......................................................................................257
Introduction............................................................................................................257
Main parts of the GUI .............................................................................................257
Main menu bar .......................................................................................................261
Toolbars .................................................................................................................261
OptiMode 3DMSim menus and buttons ................................................................263
File menu...............................................................................................................263
View menu.............................................................................................................263
Solve menu............................................................................................................264
Data menu..............................................................................................................264
Preferences menu..................................................................................................265
Help menu..............................................................................................................265
OptiMode Solver functions.................................................................................................265
Mode Found...........................................................................................................265
Status Bar ..............................................................................................................267
3D Graph Items......................................................................................................267
Customize..............................................................................................................267
Toolbars tab...........................................................................................................267
Commands tab.......................................................................................................269
Data menu..............................................................................................................270
Save Modal Indexes...............................................................................................271
Save Mode(s).........................................................................................................272
Iterated Results......................................................................................................274
3D Graph Settings..................................................................................................275
OptiMode Analyzer..................................................................................................277
Main parts of the GUI .............................................................................................277
Main menu bar .......................................................................................................282
Toolbars .................................................................................................................283
OptiMode Analyzer menus and buttons............................................................................283
File menu...............................................................................................................283
View Menu.............................................................................................................285
Export menu...........................................................................................................286
Preferences menu..................................................................................................286
Help menu..............................................................................................................287
OptiMode Analyzer functions.............................................................................................288
Customize..............................................................................................................288
Export menu details ...............................................................................................288
Refractive Index.....................................................................................................289
Preferences menu details...................................................................................................290
Appendix A: Opti2D Graph Control .......................................................................291
User interface features .......................................................................................................292
Information windows ..............................................................................................292
Info-window ...........................................................................................................293
Legend...................................................................................................................294
Graph toolbox.........................................................................................................294
Graph tools ..........................................................................................................................295
Graph menu...........................................................................................................296
Graph Menu button................................................................................................297
Tools ......................................................................................................................297
Windows.................................................................................................................298
Printing and exporting files.....................................................................................298
Print to BMP file .....................................................................................................299
Print to EMF file......................................................................................................299
Copy image to clipboard........................................................................................299
Utilities....................................................................................................................300
Help........................................................................................................................300
Displays..................................................................................................................301
Graph Properties dialog.........................................................................................302
X-Axis.....................................................................................................................302
Y-Axis.....................................................................................................................303
Curve......................................................................................................................304
Grid........................................................................................................................305
Fonts ......................................................................................................................306
Legend...................................................................................................................306
General ..................................................................................................................307
Label Management ................................................................................................307
Appendix B: File Formats.......................................................................................309
Generic file format...............................................................................................................309
Data file formats.....................................................................................................309
Real Data 3D File Format: BCF3DPC....................................................................310
Files that follow the BCF3DPC format ...................................................................310
Example: Real refractive index in OptiMode [*.rri] .................................................310
Complex Data 3D File Format: BCF3DCX.............................................................311
Files that follow the BCF3DCX format ...................................................................312
Example: Complex field Mode values [*.f3d]..........................................................312
User Refractive Index Distribution File Format .....................................................313
Example.................................................................................................................313
Default format for 3D Refractive Index Distribution (*.rid)......................................313
Example.................................................................................................................314
Complex Data 3D Vectorial File Format: BCF3DCXV ...........................................314
Appendix C: Parser supported functions .............................................................317
Supported functions ...............................................................................................317
Mathematical constants .........................................................................................321
Physical constants .................................................................................................321
System variables....................................................................................................322
Notes......................................................................................................................323
Function Limits and _FnRslt_............................................................................................324
Examples ...............................................................................................................324
Operators and their precedence ............................................................................326
Appendix D: Creating a DLL profile ......................................................................327
Overview................................................................................................................327
Phase 1: Edit..........................................................................................................327
Phase 2: Compile...................................................................................................327
Phase 3: Link .........................................................................................................328
Summary................................................................................................................328
Creating a dynamically linked library (DLL) for User DLL profile using Microsoft Visual
Studio VC6++.......................................................................................................................328
Appendix E: Batch Processing..............................................................................331
Overview................................................................................................................331
Stucture of the Batch Command Line....................................................................331
Example of a Batch Processing File ......................................................................332
Example of stdout output, format in ascii ...............................................................332
Automatic loading of VB script from command line................................................332
OVERVIEW OF OPTIMODE
15
Overview of OptiMode
Motivation
A major work flow in optical design is the modal analysis of 3D waveguides. In
OptiBPM and OptiFDTD the mode solver can be accessed from an input plane.
However it is desired to have an environment in the Cross Section (x-y plane) where
mode solving projects (complete with solver and analyser) can be run. It is convenient
to be able to run a series of simulations scanning a range of identified parameters in
such a fashion as to locate the most optimal parameter value. In addition, simulation
of waveguide dispersion, an important quantity, must be done from a wavelength
scan.
What is OptiMode?
The OptiMode suite of software is meant to be used for the mode solving and analysis
portion of design work flow. Applications are presented with the same look and feel
as the OptiBPM and OptiFDTD products. Experience with either of those tools will
help in using this.
Note: Mode solving functionality in OptiBPM, Profile Designer and OptiFDTD is
the same as before, but the solving engine used, M3DSim has been replaced by
the OptiMode Solver. The new solving engine now uses a project file which can
be developed, solved and have results analyzed separately from the other
Optiwave products.
Graphics
OptiMode has state-of-the-art graphics that enable you to view, manipulate, and print
field amplitude, phase, effective index distribution, and other calculated data.
The graphical features include:
Topographical view of the 3D graphs
Color height coding
Solid modeling in 3D graphics
Adding customizable colors
OVERVIEW OF OPTIMODE
16
OVERVIEW OF OPTIMODE APPLICATIONS
17
Overview of OptiMode applications
OptiMode applications
OptiMode consists of the following applications:
OptiMode XS Designer: Creates a layout of waveguide cross sections on a
wafer that is saved in a file with the extension .mxd.
OptiMode Solver: Processes data files designed in OptiMode XS Layout
Designer (.mxd). A successful solver run produces results which are stored in a
file with extension .m3a. It also has some rudimentary viewing features that you
can use to monitor the progress while the simulation is running.
OptiMode Analyzer: Loads and analyzes the result files produced by the Solver
(.m3a). Contains extensive viewing options and analysis features, and has the
facilities to export data to other file formats.
OVERVIEW OF OPTIMODE APPLICATIONS
18
INSTALLING OPTIMODE
19
Installing OptiMode
Before installing OptiMode, ensure the system requirements described below are
available.
Hardware and software requirements
OptiMode requires the following minimum system configuration:
Microsoft Windows with Service Pack 3, Vista or Windows 7
PC with Pentium 4 processor or equivalent
1GB of RAM (recommended)
400 MB free hard disk space
1024 x 768 graphics resolution, minimum 256 colors
Internet Explorer 5.5
Protection key
A hardware protection key is supplied with the software.
Note: Please ensure that the hardware protection key is NOT connected during
the installation of OptiMode.
To ensure that OptiMode operates properly, verify the following:
The protection key is properly connected to the parallel/USB port of the computer.
If you use more than one protection key, ensure that there is no conflict between
the OptiMode protection key and the other keys.
Note: Use a switch box to prevent protection key conflicts. Ensure that the cable
between the switch box and the computer is a maximum of one meter long.
OptiMode directory
By default, the OptiMode installer creates an OptiMode directory on your hard disk.
The OptiMode directory contains the following subdirectories:
\bin executable files, dynamic linked libraries, and help files
\doc OptiMode Manuals and OptiMode User Guides
\samples OptiMode examples
INSTALLING OPTIMODE
20
Installation
OptiMode can be installed on Windows XP, Vista or Windows 7. We recommend that
you exit all Windows programs before running the setup program.
Installing OptiMode on Windows 2000/XP
To install OptiMode on Windows 2000/XP, perform the following procedure.
Step Action
1 Log on as the Administrator; or log on to an account with Administrator
privileges.
2 Insert the OptiMode installation CD into your CD ROM drive.
3 On the Taskbar, click Start and select Run.
4 The Run dialog box appears.
5 In the Run dialog box, type F:\setup.exe, where F is your CD ROM drive.
6 Click OK and follow the screen instructions and prompts.
7 When the installation is complete, remove the CD from the CD ROM drive
and reboot your computer.
Technical support

Phone (613) 224-4700Monday to Friday, 8:30 a.m. to 5:00 p.m. Eastern
Standard Time
Fax (613) 224-4706
E-Mail support@optiwave.com
URL www.optiwave.com
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
21
Vectoral Modal Analysis for Anisotropic
Waveguide
Introduction
Modal analysis for optical waveguides is one of the most important areas in modeling
and simulation of guided wave photonic devices. The problem of the numerical
boundary condition is expected to become much more accurate for the leaky modes,
as the modal fields at the edges of the computation window are traveling waves and
the modal leakage is extremely sensitive to the reflection from the artificial boundary.
Since Perfectly Matched Layer (PML) boundary condition is applied to the modal
analysis of optical waveguides it is possible to handle leaky modes. The PML will have
no effects on the evanescent fields of the guided modes, but will attenuate the
traveling field of the leaky modes. Thus, it is possible to simulate the leaky modes in
an ARROW waveguide structure [5].
Vectoral Mode Calculation
One can cast the Helmholtz equation into the following matrix form:
Where
and
The differential operators are defined as:
(1)
(2)
(3)
(4)
Ae
t

2
e
t
=
n
0
k
0
=
e
t
e
x
e
y
=
A
A
xx
A
xy
A
yx
A
yy
=
A
xx
e
x
1
s
y
----

y
-----
1
s
y
----
e
x
y
--------


1
s
x
----

x
-----
1
s
x

zz
-----------

xx
e
x
( )
x
--------------------
1
s
x
----

x
-----
1
s
y

zz
-----------

yx
e
x
( )
y
-------------------- k
0
2

xx
e
x
+ + + =
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
22
Equation 1is a full-vectorial equation. The vectorial properties of the electromagnetic
field are included. causes the polarization dependence. and
induces the polarization coupling between the two propagations. The
discontinuities of the normal component of electric field at index interfaces, which is
responsible for vectorial properties, have been considered in the formulation. The FD
method is used in the numerical solution of the vectorial wave equation, written in
terms of the transverse components of the field. As a result, a conventional
eigenvalue problem obtained without the presence of spurious modes, due to the
implicit inclusion of the divergence conditions.
Equation 1 can be written as a conventional eigenvalue problem:
where , is the unit matrix and is the eigenvector given by
The transverse electric field components and , at any mesh point are
obtained from the eigenvector for each propagating mode. In order to solve
Equation 8, we use a solver that is based on Implicitly Restarted Arnold Method [10]
available in MatLab Software and in a public domain library ARPACK
(http://www.cacm.rice.edu/software/ARPACK). Using the Arnold Method, it is possible
to solve large sparse problems by finding only selected eigenvalues which may be
located in various parts of the spectrum. For instance, in waveguide problems one is
typically interested in a few dominant modes which correspond to the eigenvalues
with the largest real part. The most suitable technique for finding the dominant modes
involves the shift-invert strategy in which eigenproblem Equation 1 is converted to the
eigenproblem:
(5)
(6)
(7)
(8)
(9)
(10)
A
xy
e
y
1
s
y
----

y
-----
1
s
x
----
e
y
x
--------


1
s
x
----

x
-----
1
s
x

zz
-----------

xy
e
y
( )
x
--------------------
1
s
x
----

x
-----
1
s
y

zz
-----------

yy
e
y
( )
y
-------------------- k
0
2

xy
e
y
+ + + =
A
yx
e
x
1
s
y
----

x
-----
1
s
y
----
e
x
y
--------


1
s
y
----

y
-----
1
s
x

zz
-----------

xx
e
x
( )
x
--------------------
1
s
y
----

y
-----
1
s
y

zz
-----------

yx
e
x
( )
y
-------------------- k
0
2

yx
e
x
+ + + =
A
yy
e
y
1
s
x
----

x
-----
1
s
x
----
e
y
x
--------


1
s
y
----

y
-----
1
s
x

zz
-----------

xy
e
y
( )
x
--------------------
1
s
y
----

y
-----
1
s
y

zz
-----------

yy
e
y
( )
y
-------------------- k
0
2

yy
e
y
+ + + =
A
xx
A
yy
A
xy
0
A
yx
0
A
2
I ( )e
t
0 =

2
I e
t
e
t
e
x1 1 ,
e
x1 2 ,
e
xN N ,
e
y1 1 ,
e
y1 2 ,
e
yN N ,
, , , , , , , , ( )
T
=
e
x
e
y
i j , ( )
e
t
A I ( )
1
x
1

2

--------------x =
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
23
where is the shift. When an iterative solver is applied, the product of matrix operator
and some varying vector is repeatedly calculated. In the modified eigenproblem
Equation 65, instead of calculating the inverse of matrix directly, a sparse
decomposition of the matrix is performed.
Consequently, when product is required, a linear system of
equations is solved instead. The convergence rate in the shift-
invert mode in iterative method depends on the shift . In the waveguide analysis it
is convenient to choose the shift so that . In this case, the dominant
modes correspond to the eigenvalues of Equation 10 possessing the largest
magnitude.

A I ( )
LU
y A I ( )
1
x =
A I ( )y x =


max
=
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
24
Appendix I
E-Formulation
The full vectorial wave equation is given by:
Considering into Equation 1, we get:
The term is null.
We can separate Equation 2 into two equations, one for longitudinal terms and
another for transversal terms:
for longitudinal terms and
for the transversal terms.
By substituting Equation 3 into the first right hand term of Equation 4, we get:
We can write:
(1)
(2)
(3)
(4)
(5)
(6)
E k
0
2

E 0 =

z
-----e
z
+ =

t E
t

t E
z
e
z

t

z
----- e
z
E
t
( ) +

z
----- e
z

t E
t
( ) [ ] + +
+

z
----- e
z

t E
z
e
z
( ) [ ]

z
----- e
z

z
----- e
z
E
t
( )


+ k
0
2

E
t
=

z
---- e
z

t
E
t
( ) [

t
E
z
e
z

z
----- e
z
E
t
( ) + k
0
2

zz
E
z
=

t
E
t


z
----- e
z

t
E
z
e
z
( ) [ ]

z
----- e
z

z
----- e
z
E
t
( )


+ + k
0
2

E
t
=

t

t
E
t

t

t
e
t
jk
0
n
0
z ( ) exp =
E
t
x y z , , ( ) e
t
x y z , , ( ) jk
0
n
0
z ( ) exp =
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
25
By substituting Equation 6 into the second right hand term of Equation 4, we get:
The third term can be rewritten as:
Now, by using Equation 5 in the left side of Equation 8, we get:
Full H-vector Formulation
The FD-VBPM based on the E and H fields are equivalent and yield almost identical
results [11].
Similar to the vector wave equation for the electric field, the equation for the magnetic
field considering transversely scaled version of PML is:
here .
The double-curl Equation 1 involves three vector components of the magnetic field,
while strictly only two are needed. Incorporating the divergence-free condition into
Equation 1, we can reduce the number of components in the field equation to the two
transverse components of the magnetic field hx and hy only. To achieve this purpose,
we separate the transverse and longitudinal components of Equation 1.
On the transverse plane, Equation 1 becomes:
Now, using an appropriate reference refractive index , and slowly varying envelope
approximation (SVEA), we assume the following form of the solution:
(7)
(8)
(9)
(1)
(2)

z
----- e
z

t
E
z
e
z
( ) [ ] e
z

t
jk
0
n
0
e
z
e
z
z
------- +


jk
0
n
0
z ( ) exp =

z
----- e
z

z
----- e
z
E
t
( )


2
E
t
z
2
---------- =

2
E
t
z
2
---------- k
0
2
n
0
2
e
t
2jk
0
n
0
e
t
z
-------

2
e
t
z
2
--------- +


jk
0
n
0
z ( ) exp =

H k
0
2

0
H 0 =

1
=

t
k
zz

H
t
[ ]

z
----- e
z

t
H
z
e
z
( ) [ ] +
n
0
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
26
By using Equation 3 into Equation 2, we can recast Equation 1 in the following form:
with
From divergence condition, we get:
By using Equation 3 into Equation 6, we get:
By substituting Equation 7 into Equation 4, we get the following vectorial wave
equation written in terms of the transverse components of magnetic field:
or
To obtain Equation 9, we assume that the permittivity along the propagation direction
is often slow, as is observed in real devices. Therefore, has been neglected.
Similar to the E-formulation, the elimination of the axial component using the
(3)
(4)
(5)
(6)
(7)
(8)
(9)
H
t
x y z , , ( ) h
t
x y z , , ( ) jk
0
n
0
z ( ) exp =

t k
zz

h
t
[ ] e
z

t

t
h
z
z
-------- jk
0
n
0
h
z



e
z
2jk
0
n
0
p
h
t
z
-------- k
0
2
n
0
2
ph
t
p

2
h
t
z
2
---------- + k
0
2
h
t
= +
p
k
yy
k
yx
k
xy
k
xx
=

0
H
t
( ) 0 =

t
h
t

h
z
z
------- jk
0
n
0
h
z
=

t k
zz

h
t
[ ] e
z

t

t h
t
( )e
z
[ ] 2jk
0
n
0
p
h
t
z
-------- k
0
2
n
0
2
ph
t
p

2
h
t
z
2
---------- + + k
0
2
h
t
=
2jk
0
n
0
p
h
t
z
-------- p

2
h
t
z
2
----------

t k
zz

h
t
[ ] e
z

t

t h
t
( )e
z
[ ] k
0
2
n
0
2
ph
t
k
0
2
h
t
+ + =
p z
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
27
divergence condition guarantees the complete elimination of spurious
modes, and drastically reduced computation efforts and resources, compared to the
formulation which uses three field components.
We can rewrite Equation 9:
where the operator is defined as:
Here, the matrix can also be written in components:
The differential operators are defined by the following equations:
(10)
(11)
(12)
(13)
(14)
(15)
(16)

B 0 =

z
----- 2jk
0
n
0
p p

z
-----


h
t
Mh
t
=
Mh
t
Mh
t

t
k
zz
h
t
[ ] e
z

t

t

t
h
t
( )e
z
[ ] k
0
2
n
0
2
ph
t
k
0
2
h
t
+ + =
Mh
t
M
xx
M
xy
M
yx
M
yy
h
x
h
y
=
M
M
M
xx
M
xy
M
yx
M
yy
=
M
xx
h
x
1
s
y
----

y
-----
k
zz
s
y
------
h
x
y
--------


k
yx
s
y
-------

y
-----
1
s
x
----
h
x
x
--------

k
yy
s
x
-------

x
-----
1
s
x
----
h
x
x
--------


k
0
2
n
0
2
k
yy
h
x
k
0
2
h
x
+ + =
M
yy
h
y
1
s
y
----

y
-----
k
zz
s
y
------
h
y
x
--------


k
yx
s
y
-------

y
-----
1
s
y
----
h
y
y
--------

k
yy
s
x
-------

x
-----
1
s
y
----
h
y
y
--------


k
0
2
n
0
2
k
yx
h
x
+ =
M
yx
h
x
1
s
x
----

x
-----
k
zz
s
y
------
h
x
y
--------


k
yx
s
x
-------

x
-----
1
s
x
----
h
x
x
--------

k
xx
s
y
-------

y
-----
1
s
x
----
h
x
x
--------


k
0
2
n
0
2
k
xy
h
x
+ =
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
28
The discontinuities of and across the index interfaces along
and directions are responsible for the polarization dependence (i. e. ) and
coupling (i. e. and ).
The solution to Equation 9 can be written in an exponential form
which can also be approximated by a weighed finite-difference form
Here we get
for paraxial approximation and
for wide angle-Pad(1,1).
As in the E-Formulation description, we can apply the Pad recursion formula
AS in E-formulation, we can derive wide-angle BPM considering high order Pad, as
the parameter is introduced to control the schemes used to solve the finite-
difference equations.
(17)
(18)
(19)
(20)
(21)
(22)
M
yy
h
y
1
s
x
----

x
-----
k
zz
s
x
------
h
y
x
--------


k
xx
s
y
-------

y
-----
1
s
y
----
h
y
x
--------


k
xy
s
x
-------

x
-----
1
s
y
----
h
y
y
--------


k
0
2
n
0
2
k
xx
h
y
k
0
2
h
y
+ + =
h
y
x h
x
y y
x h
xx
h
yy

h
xy
h
yx
0
h
t
x y z z + , , ( ) h
t
x y z , , ( ) jMz ( ) exp =
D jzN + ( )h
t
x y z z + , , ( ) D j z 1 ( )N ( )h
t
x y z , , ( ) =
D p =
N
M
2k
0
n
0
------------- =
D p
M
4k
0
2
n
0
2
------------- , + =
N
M
2k
0
n
0
------------- =

z
-----
i 1 +
M
j2k
0
n
0

z
-----
i

------------------------------ =
a
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
29
We can recast Equation 19 in the following form
where and are field vectors at two sequential steps and , , and
and are nonsymmetric complex band matrices. By solving Equation 23, we can
simulate the propagation of the beam in anisotropic materials, such as the
polarization dependence and coupling, due to both the material and geometrical
effects. The system in Equation 23 is solved efficiently by the well established sparse
matrix solver "bicgstab" (BiConjugate Gradients Stabilized method).
H-Vectorial Modal Analysis for Anisotropic Waveguide
Assuming and regarding as an effective refractive index, Equation
23 is reduced to a basic equation for the guided-mode analysis of anisotropic optical
waveguides. Hence, from (9) we get the following Helmholtz equation:
One can cast the Helmholtz equation into the following matrix form:
where
and
The differential operators are defined as:
(23)
(24)
(25)
(26)
(27)
Ah
t
l 1 +
Bh
t
l
=
h
t
l
h
t
l 1 +
l l 1 + A B
z 0 = n
0

t
k
zz
h
t
[ ] e
z

t

t

t
h
t
( )e
z
[ ] k
0
2
h
t
+ + k
0
2
n
0
2
ph
t
=
Ah
t

2
h
t
=
k
0
n
0
=
h
t
h
x
h
y
=
A
A
xx
A
xy
A
yx
A
yy
=
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
30
It is noted that in Equations [28] - [31], both the material and the geometrical
properties of the waveguides contribute to the polarization dependence, ,
and coupling: and .
Like in E-Formulation Equation 25 can be solved by an efficient Arnoldi method that
takes into account the sparsity under consideration and computes just a few number
of eigenvalues and eigenvectors that represent the propagation constants and fields
distributions for the wanted modes.
(28)
(29)
(30)
(31)
A
xx
h
x

yy
s
y
------

y
-----
k
zz
s
y
-----
h
x
y
--------



yx
s
x
------

x
-----
k
zz
s
y
-----
h
x
y
--------



yy
k
yx
s
y
------------

y
-----
1
s
x
----
h
x
x
--------


+ =
+

yy
k
yy
s
x
------------

x
-----
1
s
x
----
h
x
x
--------



yx
k
xx
s
y
------------

y
-----
1
s
x
----
h
x
x
--------


yx
k
xy
s
x
------------

x
-----
1
s
x
----
h
x
x
--------


k
0
2

yy
h
x
+ +


A
xy
h
y

yy
s
y
------

y
-----
k
zz
s
x
-----
h
x
y
--------



yx
s
x
------

x
-----
k
zz
s
y
-----
h
y
x
--------



yy
k
yx
s
y
------------

y
-----
1
s
y
----
h
y
x
--------


+ =
+

yy
k
yy
s
x
------------

x
-----
1
s
y
----
h
y
y
--------



yx
k
xx
s
y
------------

y
-----
1
s
y
----
h
y
y
--------


yx
k
xy
s
x
------------

x
-----
1
s
y
----
h
y
x
--------


k
0
2

yx
h
y
+
A
yx
h
x

xy
s
x
------

y
-----
k
zz
s
y
-----
h
x
y
--------



yx
s
x
------

x
-----
k
zz
s
y
-----
h
x
y
--------



xy
k
yx
s
y
------------

y
-----
1
s
x
----
h
x
x
--------


+ =
+

xy
k
yy
s
x
------------

x
-----
1
s
x
----
h
x
y
--------



xx
k
xx
s
y
------------

y
-----
1
s
x
----
h
x
x
--------



yx
k
xy
s
x
------------

x
-----
1
s
x
----
h
x
x
--------


k
0
2

xy
h
x
+
A
yy
h
y

xy
s
x
------

y
-----
k
zz
s
x
-----
h
y
x
--------



xx
s
x
------

x
-----
k
zz
s
x
-----
h
y
x
--------



y
-----
1
s
y
----
h
y
y
--------


+ + =


xy
k
yy
s
x
--------------

x
-----
1
s
y
----
h
y
y
--------



xx
k
xx
s
y
------------

y
-----
1
s
y
----
h
y
y
--------



xx
k
xy
s
x
------------

x
-----
1
s
y
----
h
y
y
--------


k
0
2

xx
h
y
. + +
A
xx
A
yy

A
xy
0 A
yx
0
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
31
Appendix II
H-Formulation
The full vectorial wave equation for is given by:
By substituting into Equation 1 we get:
The term is null.
We can separate Equation 2 into one for longitudinal terms and another one for
transversal terms:
for longitudinal terms, and
By substituting
into the first right hand term of Equation 4, we get:
(1)
(2)
(3)
(4)
(5)
(6)
H

H k
0
2

0
H 0 =

z
-----e
z
+ =

t k
zz

t H
t
( )

t H
z
e
z
( )

z
----- e
z
H
t
( ) + +
+

z
----- e
z

zz

t H
t
( ) [ ]

z
----- e
z

t H
z
e
z
( ) [ ]

z
----- e
z

z
----- e
z
H
t
( )


+ +
= k
0
2

t
H
t
k
0
2
k
zz
H
z
e
z
+

z
----- e
z

zz

t
H
t
( ) [ ]

t
H
z
e
z
( )

z
----- e
z
H
t
( ) + k
0
2
k
zz
H
z
e
z
=

t k
zz

t H
t
( )

z
----- e
z

t H
z
e
z
( ) [ ]

z
----- e
z

z
----- e
z
H
t
( )


+ + k
0
2

t
H
t
=
H
t
x y z , , ( ) h
t
x y z , , ( ) jk
0
n
0
z ( ) exp =

t
k
zz

t
H
t
( )
t
k
zz

t
h
t
( ) jk
0
n
0
z ( ) exp =
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
32
By substituting Equation 5 into the second right hand term of Equation 4, we get:
The third term of Equation 4 can be rewritten as:
By substituting Equation 5 into the second right hand term of Equation 4, we get:
Where
References
[1] [Berenger, 1994] J . P. Berenger, "A Perfectly Matched Layer for the Absorption of
Electromagnetic Waves," J . Comput. Phys., No. 114, 1994, pp. 185-200.
[2] [Teixeira, 1998] F. L. Teixeira and W. C. Chew, " Systematic Derivation of Anisotropic PML
Absorbing Media in Cylindrical and Spherical Coordinates", IEEE Microwave and Guided
Lett.,vol. 8, No. 6, pp. 371-373, 1998.
[3] [Huang, 1993] W. P. Huang, C. L. Xu, "Simulation of Three-Dimensional Optical Waveguides
by a Full-Vector Beam Propagation Method, IEEE J . Quant. Electron., vol. 29, No.10, pp. 2639-
2649, 1992.
[4] [Huang, 1992 A] W. P. Huang, C. L. Xu, S. T. Chu and S. K. Chaudhuri, " The Finite-Difference
Vector Beam Propagation Method. Analysis and Assessment, IEEE J . Light. Techn., vol.10,
No.,3, pp. 295-305, 1992.
[5] [Huang, 1996A] W. P. Huang, C. L. Xu, W. Lui, and K. Yokoyama, "The Perfectly Matched Layer
Boundary Condition for Modal Analysis of Optical Waveguides: Leaky Mode Calculations",
IEEE Photon. Techn. Lett., vol. 8, No. 5, pp. 652-654, May 1996.
(7)
(8)
(9)
(10)

z
----- e
z

t
H
z
e
z
( ) [ ] e
z

t
h
z
z
------- jk
0
n
0
h
z



e
z
jk
0
n
0
z ( ) exp =

z
----- e
z

z
----- e
z
H
t
( )


z
----- p
h
t
z
-------


=

z
----- p
h
t
z
-------


k
0
2
n
0
2
h
t
2jk
0
n
0
p
h
t
z
------- p
h
t
2
z
2
-------- +


jk
0
n
0
z ( ) exp =
p
k
yy
k
yx

k
xy
k
xx
. =
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
33
[6] [Huang, 1996] W. P. Huang, C. L. Xu, W. Lui, and K. Yokoyama, "The Perfectly Matched Layer
(PML) Boundary Condition for the Beam Propagation Method", IEEE Photon. Techn. Lett., vol.
8, No. 5, pp. 649-651, May 1996.
[7] [Huang, 1992 B] W. P. Huang and C. L. Xu, "A Wide-Angle Vector Beam Propagation Method,
IEEE Photon. Techn. Lett., vol. 4, No. 10, pp. 1118-1120, 1992.
[8] [Hadley, 1992] G. R. Hadley, "Wide-Angle Beam Propagation using Pad Approximant
Operators", Opt. Lett., vol. 17, No. 20, pp. 1426-1428, 1992.
[9] [Van, 1992] H. A. Van Der Vorst, "Bi-CGSTAB: A Fast and Smooth Converging Variant of Bi-CG
for the Solution of Nonsymmetric Linear System, SIAM J . Sci. Statist. Comput., vol. 13, pp.
631-644, 1992.
[10] [Mielewski, 1998] J . Mielewski and M. Mrozowski, Application of the Arnoldi Method in FEM
Analysis of Waveguides", IEEE Microwave and Guided Lett. vol. 8, No.1, pp. 7-9, 1998.
[11] [Huang, 1991] W. P. Huang, C. L. Xu, and S. K. Chaudhuri, " A Finite-Difference Vector Beam
Propagation Method based on H-Fields, IEEE Photon. Tech. Lett., vol. 3, pp. 1117-1120, 1991.
[12] [Huang, 1994] Xu, C. L., W. P. Huang, J . Chrostowski, and S. K. Chaudhuri, "A Full-Vectorial
Beam Propagation Methods for Anisotropic Waveguides, IEEE J . Lightwave Tech., vol.12, No.
11, pp. 1926-1931.
VECTORAL MODAL ANALYSIS FOR ANISOTROPIC WAVEGUIDE
34
35
Fiber Mode Solvers
Introduction
Many kinds of optical fiber can be described, or in the case of graded index fibers,
approximated by, a series of concentric layers of loss-less dielectric. When the index
contrast in the structure is small, it is common to use the scalar wave equation to
obtain the linearly-polarized modes (LP modes). However, when the index contrast
becomes larger, the LP approximation becomes inaccurate, and a full vector analysis
is necessary [1]. Within any one of the concentric layers, the field components are all
linear combinations of Ordinary and Modified Bessel functions, and the solution is a
matter of matching the tangential field components of adjacent layers, leading to the
solution of a linear system. There are some choices to make about the best way to
arrange the linear system (see Ref. [2] for a complete treatment) but probably the best
choice for a general, quick algorithm is the method of Yeh and Lindgren [3]. The
method has intuitive appeal in its similarity to the transfer matrix method used for the
analysis of planar waveguides [4]. Both methods use a matrix to express the fields at
one side of a layer given their values at the other side, and the whole structure is then
characterized by cascading the layers by matrix multiplication. For vector fields in
fibers, there is no natural separation into TE and TM polarization, so one must include
the two tangential components for both electric and magnetic field simultaneously. In
total there are four transverse components at the layer boundaries, so the transfer
matrix in fiber is a 4x4 matrix, instead of 2x2.
The method used by the Optiwave fiber mode solvers is different from the previous
works in three ways. The 4x4 matrix method for vector modes in fibers is
implemented with these improvements to make the algorithm faster in execution time,
and more reliable in the finding of modes, particularly in cases where the modes are
almost degenerate. The first improvement involves a reformulation of the basic
equations to make a real-valued numerical implementation. Since it is loss-less
modes on a fiber of loss-less material that is being sought, there is no reason to
include complex numbers in the formulation. Real-valued implementation uses less
computer resources. Second, the complete transfer across one layer boundary
requires a matrix inverse. It is better to find this inverse analytically, rather than rely
on numerical inversion at each stage. The layer matrix can be decomposed into two
4x4 matrices, and the new matrices are of a form where it is easy to find the inverse
by inspection, thereby finding the analytic solution to the original inversion problem.
Third, it is usual to construct the dispersion function (the zeros of which are located at
the modal indices) as the determinant of the 4x4 matrix system. While this is
theoretically correct, it is not the most intuitive prescription. Worse, the determinant
is not the most convenient construction for locating the zeros, particularly in the case
where two zeros are very close to each other. Optiwave uses an eigen-value analysis
that splits the dispersion function into two functions. This splitting resolves the almost
degenerate pairs and helps the simple-minded computer algorithms to find the zeros
of the dispersion function (i.e. the modes) more reliably.
Real-valued formulation
The time independent Maxwell curl equations with a positive time convention ( )
are
and the divergence equations are
The factor j does not suit the current purpose, so make the substitution
where is the free space impedance, so that h and E have the same
units. Then
where . Eliminating the h gives the electric wave equation
Debye Potential
For finding electromagnetic fields in a cylindrical geometry it is convenient to use
cylindrical coordinates r, and z, and Debye potentials parallel to the axis of rotation,
[2]
(1)
(2)
(3)
(4)
(5)
(6)
(7)
e
jt
E j
0
H = H j
0
E =
E ( ) 0 = H 0 =
h j
0
H =

0

0

0
=
E kh = h kE =
k
0

0
=
E k
2
E 0 =

E z

( )
1
k
----- z

( ) + =
h z

( )
1
k
-- - z

( ) + =
FIBER MODE SOLVERS
37
It is supposed that the permittivity is constant in the region in which the above
equations apply. The fibers are defined as a series of concentric layers of constant
dielectric, so for the fiber mode solver, the region is the annulus between the layer
boundaries. Equation 6 and Equation 7 are applied in a piecemeal way. Strictly
speaking, the , and should have subscripts to indicate to which layer the
solution applies, but they are dropped here to simplify the representation. The
complete solution for the multilayer fiber will be constructed by using a separate pair
of functions for each layer, and by matching the tangential field components at the
layer boundaries
The divergence of the curl of any vector field is identically zero. Therefore the choice
of (6) and (7) to represent the electric and magnetic fields means that the divergence
equations (2) will automatically be satisfied. In the remainder of this section, we show
that if the two potentials and are solutions to the scalar Helmholtz equation, then
(6) will be a solution to the Maxwell wave equation (5), at least within any given layer.
In subsequent sections, the particular solution for the mode will be found by observing
the boundary conditions imposed by physical considerations on E and h.
Suppose is a continuous function of position that satisfies the Helmholtz equation
in 3 dimensions
Consider the following equation, true for any satisfying (9) in a region of constant
permittivity.
Associate the first two terms together and apply the vector identity
to get
The right hand side of (11) is a gradient of a scalar function, so the curl of the left hand
side must be zero. take the curl of (11)
(8)
(9)
(10)
(11)
(12)

2
k
2
+ 0 =

( ) [ ]
2
z

( ) k
2
z

z
------- =
( )
2
=
z

( ) k
2
z

z
------- =
z

( ) k
2
z

( ) 0 =
FIBER MODE SOLVERS
38
and define E by the first term of (6). With E defined this way, the Maxwell electric
wave equation (5) follows, and therefore this E is a possible solution for electric field.
Solutions defined from the function solely (that is to say, solutions with =0), will
have electric fields of the form
from which we can see there is no longitudinal (z) component to the electric field, i.e.
these are transverse electric fields. The magnetic field associated with these
transverse electric fields is constructed from the first Maxwell curl equation in (4):
which is the second term of (7).
The same sequence (7) - (11) can be applied to the function to give transverse
magnetic fields, and the electric components of these are given as the second term
of (6). A linear superposition of transverse magnetic and transverse electric fields will
give solutions that are neither transverse magnetic nor transverse electric. In fact,
most modes of the fiber are of this hybrid kind. In the hybrid case, equations (6) and
(7) are used as written, and the relative value of the and is now important, since
it is a specific linear combination that matches the boundary conditions at the layer
boundaries.
Separation of Variables
The potentials themselves are solutions of the scalar Helmholtz equation, and the
particular solution is found by observing the boundary conditions imposed by physical
considerations on E and h. The potentials are supposed to form modes, so a solution
where the variables are separated is appropriate
and a similar expression applies for the other Debye potential, . The Helmholtz
equation (8) is expanded in cylindrical co-ordinates, and then (15) is substituted.For
regions where is constant, the radial functions follow the Ordinary or Modified
Bessel equation, and so the solutions are linear combinations of Bessel functions of
integer order v. In any given layer,
(13)
(14)
(15)
(16)

E z

( )
r

r
-- =

-------

r
------- =
h
1
k
--- z

( ) =


r z , , ( )

r ( ) j z ( ) [ ] exp =

r ( ) AJ

ur ( ) BY

ur ( ) + =

r ( ) CJ

ur ( ) DY

ur ( ) + =
FIBER MODE SOLVERS
39
where . In layers where the propagation constant squared is
larger than , the Bessel functions J and Y are replaced by the Modified Bessel
functions I and K, respectively.,
where . Equations (15), (16), and (17) are substituted in (6) and (7)
to find the electromagnetic fields. It is the tangential components and z that are
needed explicitly, since it is the tangential components of the electric and magnetic
fields that should match at layer boundaries. These field components are related to
the coefficients A, B, C, and D by a 4x4 matrix
where is the modal index, and the common factor is
suppressed. In layers where the propagation constant squared is larger than , the
Bessel functions J and Y are replaced by the Modified Bessel functions I and K,
respectively, and the u is replaced by w.
A similar equation to (18) applies in adjacent layers, with different constants A, B, C,
D. Given the constants in one layer, the constants in the adjacent layer can be found
by solving the linear system created by the field matching condition. The f found by
the two matrices should be the same field vector at the boundary between layers. The
difference between this formulation and that in Ref. [2] and [3] is that this formulation
uses real numbers only.
Solution of the linear system
The order of the components in the vector f is chosen to help factor the matrix in (9)
into two matrices as Ff = Dc where ,
(17)
(18)
(19)
u k
2

2
=
k
2

r ( ) AI

wr ( ) BK

ur ( ) + =

r ( ) CI

ur ( ) DK

ur ( ) + =
w
2
k
2
=

f
E
z
h

h
z
E

u
2
J

ur ( ) k u
2
Y

ur ( ) k 0 0
uJ'

ur ( ) uY'

ur ( ) nJ

ur ( ) r nY

ur ( ) r
0 0 u
2
J

ur ( ) k u
2
Y

ur ( ) k
nJ

ur ( ) r nY

ur ( ) r uJ'

ur ( ) uY'

ur ( )
A
B
C
D
= =
n k = j z ( ) [ ] exp
k
2

c A B C D , , , [ ]
T
=
F
0 0 0
0 1 nk ru
2
0
0 0 1 0
nk ru
2
0 0 1
=
FIBER MODE SOLVERS
40
The advantage of this factoring is that it is easy to find the expressions for and
. is found by two row reductions and by inverting the 2x2 matrices in the
block diagonal. These matrices are required to find the coefficients in the next layer.
If are the coefficients in the m-th layer, then the coefficients in the next layer is
found from the matrix product,
The use of the factored matrix means four matrix multiplications instead of two are
required to cross the boundary, but it avoids having to find the matrix inverse
numerically.
Dispersion equation
The matrix to describe the whole multilayer can be written as one 4x4 matrix, the
product of all layers, one layer of which is shown in (21). The dispersion equation is
usually constructed by setting the determinant of this 4x4 matrix product to 0, but this
is not a good choice from the numerical point of view. In the limit of low index contrast,
the modal indices can be very close to each other, making them hard to find by
numerical methods, which tend to skip over closely spaced zeros. A more convenient
condition comes from using rectangular matrices at the first and last layers, which are
special cases. In the first layer, which contains r =0, coefficients and must
be zero, so the first matrix, , is 4 x 2 consisting of the first and third columns of the
D matrix in (20). Similarly, in the last layer, it is the coefficients and that must
go to zero in (17), since those contain solutions with unphysical growth. The last
matrix will be of size 2 x 4, and consist of the first and third rows of . The
product of all these matrices will be of size 2x2, which we call S(n). (The dependence
on n is written explicitly since it is the modal index to be found). A mode is obtained
at a modal index n when a non-trivial solution is found to,
The condition det(S) =0 is sufficient for a non-trivial solution. However this condition
can be inconvenient for the case of certain modes of the low index contrast fiber. For
example, consider a step index fiber with radius 2 , having a core index of 1.46
and a cladding of 1.45. For order zero ( ), the determinant of S will vary with
the modal index n as shown in Figure 1.
(20)
(21)
(22)
D
u
2
J

k u
2
Y

k 0 0
uJ'

uY'

0 0
0 0 u
2
J

k u
2
Y

k
0 0 uJ'

uY'

=
F
1
D
1
F
1
D
1
c
m
c
m 1 +
D
m 1 +
1
r
m
( )F
m 1 +
r
m
( )F
m
1
r
m
( )D
m
r
m
( )c
m
=
B
0
D
0
D
0
A
M
C
M
I

D
M
1
D
1
0 S n ( )
A
0
C
0
=
m
0 =
FIBER MODE SOLVERS
41
Figure 1 The determinant of the system matrix vs. the modal index. Step index fiber with radius 2 , core
index of 1.46, and a cladding of 1.45. The optical wavelength is 0.5 , and the order
It is difficult to find the zero for curves of this type. The position of the zero is easily
passed over in the initial search for zero crossings. The shape of the curve in the
region of the zero is very nearly quadratic, so the best solution is to split the
determinant function into a product of two functions. In that case, the zeros can be
found by looking for zero crossings of the two functions separately. Suitable functions
can be found by considering the vector , as an eigenvector of S with
eigenvalue, equal to 0. The eigenvalues of S(n) are ,
Where . The determinant of a matrix is equal to the product of its
eigenvalues, so the product is a factoring convenient for
the zero finding task. A mode exists when either or . The
advantage of searching for zeros of the two functions (23) is that the functions
and have zeros that are widely spaced apart, and are more easily found than
the zeros of the single determinant function.
(23)
m
m 0 =
A
0
C
0
, [ ]
T

1
n ( ) T 2 T
2
4 det S ( ) + =
2
n ( ) T 2 T
2
4 det S ( ) =
T S
11
S
22
+ =
det S n ( ) ( )
1
n ( )
2
n ( ) =

1
n ( ) 0 =
2
n ( ) 0 =

1
n ( )

2
n ( )
FIBER MODE SOLVERS
42
Figure 2 Plot of the eigenvalues and determinant vs modal index.
Figure 3 Expanded view of the zero crossing region
LP Modes
Linearly Polarized modes can be found with the same style of approach as above, by
a transfer matrix analysis of multilayer fibers.In the LP analysis, the initial excitation is
assumed to have a linear polarization, and so a modal analysis supporting only one
FIBER MODE SOLVERS
43
field component is used. It can be shown this is a good approximation for fibers with
low refractive index contrast, as shown below.
Consider again the wave equation of (5), but this time use the vector identity (10)
directly on the electric wave equation instead of introducing the Debye potential. The
result is
From the Maxwell divergence equation (2)
so that
In the case of low index contrast waveguides, such as are found in most optical fibers,
the last term in (26) is negligible. The last term is the only one that contributes to
coupling among the field components of the electric field, so if this term is neglected,
the model will be a polarization preserving model. If the excitation was a linear
polarization parallel to the X axis, the model could be further simplified by considering
only the X component of (26). This shows that for the LP model, the governing
equation for the field is the Helmholtz equation (8) applied to the field component .
The solution for LP modes is constructed in a similar way as for the vector modes.
The is constructed in each layer as a linear combnation of Bessel functions (16)
and (17), except this time only two coefficients, and , are required, since only
one function needs to be constructed. The physical consideration at the layer
boundaries is the continuity of and its derivative. The two conditions are related to
the two coefficients A and B for each layer by 2x2 matrices. The modes are found by
setting up a calculation that assumes and for the first (inner most)
layer, and then calculating the coefficients in each subsequent layer by matrix
manipulations. The last layer has the condition that the coefficient ( ) of the Bessel
function must be zero, since this Bessel function is not bounded at infinity. This
last coefficient is a function of the order and the modal index n, so the modes are
found by finding the zeros of .
(24)
(25)
(26)

2
E E ( )E k
2
+ E 0 =
0 E ( ) E E ( ) + = =

2
E k
2
E E

-------


+ + 0 =
E
x
E
x
A
1
B
1
E
x
A
1
1 = B
1
0 =
A
M
I

A
M
n ( )
FIBER MODE SOLVERS
44
References
[1] K. Okamoto, Fundamentals of Optical Waveguides, (Academic Press, San Diego, 2000).
[2] C. Tsao, Optical Fibre Waveguide Analysis, (Oxford University Press, 1992), Part III
[3] C. Yeh and G. Lindgren, "Computing the propagation characteristics of radially stratified fibers:
an efficient method", Applied Optics 16(2) p483-493 (1977)
[4] J . Chilwell and I. Hodgkinson, "Thin-films field-transfer matrix theory of planar multilayer
waveguides and reflection from prism-loaded waveguide", J ournal of the Optical Society of
America A, 1 p742-753 (1984)
45
Finite Difference Mode Solver
Introduction
This mode solver uses a magnetic field based formulation of the difference equations
to convert the mode solving problem into a problem of finding eigenvectors of a large
system of linear equations. The formulation is due to Lsse [1]. Once the linear
system is found from this formulation, the modes can be found by finding
eigenvectors, and for this we use the Implicitly Restarted Arnoldi Method (IRAM), as
implemented by ARPACK [2]. In OptiMode, the boundary condition applied at the
edges of the calculation window can be of the Dirichlet type (magnetic field goes to
zero at the window boundaries), or the user can select Transparent Boundary
Conditions (TBC). In the TBC case, the algorithm will try to match the optical field at
the boundary to a plane wave with propagation constant constructed from the
approximate modal field available at intermediate stages of the simulation. This
propagation constant is complex, so it should be able to accommodate leaking
radiation as well as the more common exponential decay of the field.
The operation of the IRAM and the TBC are controlled from settings parameters in
OptiMode. These parameters are found in the FD tab of the Solver Parameters dialog
box (Fig. 2). The parameters that control the eigenvector solving are Tolerance, Max.
Steps, Preview Mode, Skip Value, and Dimension of the Krylov Subspace. This
technical background is intended to explain what these parameters mean and how
they influence the mode solving. The values of the parameters are pre-set to values
that seem to work well for most cases. However, there could be exceptional cases in
which the user will need to modify those parameters. This technical background is
provided to help the user understand what these parameters do and what might
happen if they are changed.
We provide a summary of the Lsse formulation of the finite difference equations for
optical magnetic field. Then we show an overview of how the IRAM works, not in great
detail, but simply enough to show the meaning of the OptiMode Settings parameters.
Then we show how the TBC is constructed, so that its behaviour can be understood.
Magnetic Formulation
Inside a dielectric, the time independent Maxwell curl equations with a positive time
convention ( ) are
and the divergence equations are
In the magnetic formulation, the electric field is eliminated from (1) by taking the curl
of the second equation and substituting from the first. For regions of constant
permittivity , there are no gradients of , and the equation simplifies to
In view of the vector identity , and the property of
having zero divergence, (3) becomes
where is the free space wavenumber.
It is true that it is usually the electric field, and not the magnetic field, that is of interest
for applications. The motivation for solving the problem with a magnetic formulation is
that the waveguide structure is created by introducing discontinuities in electric
permittivity, , and not magnetic permeability, . When matching boundary
conditions at layer boundaries, the normal component of the electric field is
discontinuous, since it is the electric displacement, , and not the electric
field that is to be made continuous. Since the permeability is the vacuum level
everywhere, all components of the magnetic field are continuous at all boundaries.
The finite difference representation of continuous functions is more accurate than
discontinuous functions, and therefore a finite difference formulation based on the
magnetic field gives more accurate results than one based on electric fields.
The electric fields are still needed for applications. These fields can be calculated after
the fact by taking the curl of the magnetic field (using the second equation in (1)) by
finite differences. Explicitly,
(1)
(2)
(3)
(4)
(5)
(6)
e
jt
E j
0
H = H j
0
E =
E ( ) 0 = H 0 =

H
2

0
H =
A A ( )
2
A =
H

2
H k
2
H + 0 =
k
0

0
=

D
0
E =

0
E
x

0
k
--------
1

---
y x
2

H
x
1

---
y
2
2

H
y
H
y
+



=
E
y

0
k
-----
1

---
x
2
2

H
x
1

---
x y
2

H
y
H
x
+



=
FINITE DIFFERENCE MODE SOLVER
47
In the mode solving problem, the permittivity does not vary with z, and so the
solution for the magnetic field can be expected to be an harmonic function of z:
and (7) in (4) gives
Since the is unknown, the mode solving problem is really an eigenvector problem
with as the eigenvalue, and the function or as the
eigenfunction.
Magnetic Finite Difference Equations
In order to reduce the partial differential equation into difference equations for solving,
a mesh needs to be defined and applied. The mesh used is shown in Fig. 1 below. It
shows a sample of the mesh at a point P that is not on one of the calculation window
boundaries. The magnetic fields are defined at the nodes (dots at the intersections),
and the permittivity is defined in the rectangular regions bounded by the nodes. The
permittivity inside the rectangular regions , , , and is taken to be
constant, so inside each of these regions, the equations (8) and (9) apply.
Figure 1 Mesh for the finite difference equation. The magnetic field is defined at points N, S, E, W, and P.
The permittivity is defined in the rectangular regions bounded by the nodes.
(7)
(8)
(9)

H x y z , , ( ) h x y , ( )e
jz
=

2
h
x
x
2

----------

2
h
x
y
2

---------- k
2
h
x
+ +
2
h
x
=

2
h
y
x
2

----------

2
h
y
y
2

---------- k
2
h
y
+ +
2
h
y
=

2
h
x
x y , ( ) h
y
x y , ( )

NE

NW

SE

SW
FINITE DIFFERENCE MODE SOLVER
48
The mesh is in the transverse plane, and (8) and (9) do not, by themselves, introduce
coupling between the field components and . The coupling
comes from matching the transverse components of electric and magnetic fields at
the boundaries.
In Ref [1], the magnetic fields inside the rectangular regions are expanded to the
second order in derivatives defined at the centre point, P. Those expansions are used
to estimate what the longitudinal components and will be at the horizontal
and vertical boundaries between the points N, S, E, W, and P. Once this is done, an
equation involving the magnetic field components at the nodes is eventually obtained:
Equation (10) comes mostly from (8) for . In the matching of transverse
components of the fields, another term involving appears. This is the term that is
responsible for the coupling of and . In the finished finite difference
formulation, the derivative of with respect to x is replaced by a centred finite
difference. Note that if at this particular node, it happens that the permittivity is the
same on the north side of the boundary as on the south (i.e. it is a vertical boundary),
no coupling will occur, or at least there will be no contribution from the component
of this node.
This equation (and a similar one for ) is applied to each node in the mesh. Let the
number of nodes be n. It is the repeated application of this equation, and the
adjustment of the meaning of the N, S, W, E, and P designations, that generates a
large system of linear equations. The values of the x and y components of the
magnetic field are collected in a vector of dimension n x 1, called , say. The
equations on the left form an n x n matrix that multiplies , and the right hand
side has the original vector representing the magnetic field, multiplied by the
eigenvalue . In vector-matrix form, the problem looks like
and to find the modal indices ( ) and modes, , is a matter of solving
a classical eigenvector problem.
Implicitly Restarted Arnoldi Method (IRAM)
The repeated application of (10) for every node, and the application of a similar
equation for leads to an eigenvector problem of a large system of linear
(10)
(11)
h
x
x y , ( ) h
y
x y , ( )
e
z
h
z
h
xE
x
2
--------
h
xW
x
2
--------
h
xN
y
2
--------

SE

NE

SE
+
---------------------

SW

NW

SW
+
---------------------- +
h
xS
y
2
--------

NE

NE

SE
+
---------------------

NW

NW

SW
+
---------------------- +
h
xP
k
2

NW

SW

NW

SW
+
----------------------
k
2

NE

SE

NE

SE
+
---------------------
2
y
2
--------
2
x
2
-------- +
h
y

x
-------
1
y
------

NW

SW

NW

SW
+
----------------------

NE

SE

NE

SE
+
--------------------- +
+ +
+
+
+
2
h
xP
=
h
x
h
y
h
x
h
y
h
y
h
y
h
y
v
Q v

2
Qv
2
v =
n
mod
k = v
h
y
FINITE DIFFERENCE MODE SOLVER
49
equations. The Finite Difference Mode Solver uses the Implicitly Restarted Arnoldi
Method as described in Ref. [2] to find the eigenvectors of this system, and thereby
find the modes of the waveguide.
The Implicitly Restarted Arnoldi Method looks for the modes inside a Krylov
Subspace. This subspace is constructed from the mode operator, and from an
arbitrary (could be random) starting magnetic field, here described as a vector, .
The Krylov subspace is the space spanned by powers of the when
applied to the initial vector :
The IRAM constructs a basis for the dimensional Krylov subspace by the
Gram-Schmidt process. For example, a basis for a 2 dimensional Krylov subspace,
, can be constructed from and . A vector perpendicular to
can be found by subtracting the component from :
This vector is parallel to the second basis vector, , which is found once is
divided by its length, . It is easy to show that this length is
The above inner product of with occurs frequently, so the matrix components
are defined
With this definition, the effect of including another power of can be written in terms
of the new basis vectors
Following the Gram-Schmidt process, a vector in the Krylov subspace that is
perpendicular to both and can be constructed from subtracting the
projections of onto the first two basis vectors
Normalizing as before, and rearranging terms shows how the space generated
from can be represented in terms of the basis vectors
(12)
(13)
(14)
(15)
(16)
(17)
(18)
v
1
K
m
Q v
1
) , ( Q
v
1
K
m
Q v
1
, ( ) span v
1
Qv
1
Q
2
v
1
Q
3
v
1
Q
m
v
1
, , , , { } =
m 1 +
K
1
Q v
1
) , ( v
1
Qv
1
v
1
v
1
Qv
1
w
2
Qv
1
v
1
T
Qv
1
( )v
1
=
v
2
w
2
w
2
T
w
2
w
2
T
w
2
v
2
T
Qv
1
=
v Q
h
ij
v
i
T
Qv
j
=
Q
Qv
1
h
11
v
1
h
21
v
2
+ =
v
1
v
2
Qv
2
w
3
Qv
2
h
12
v
1
h
22
v
2
=
w
3
Q
2
v
1
Qv
2
h
12
v
1
h +
22
v
2
h
32
v
3
+ =
FINITE DIFFERENCE MODE SOLVER
50
The Gram-Schmidt process can be followed in as many steps as necessary to create
a basis for the Krylov subspace.
An important point to note is that the dimension of , (and therefore the
number of basis vectors needed to span it), might be less than m +1. Lets suppose
that the mode solving problem was asked to find the first k modes, where k <m. Let
us also suppose that the initial vector happened to be a linear combination of
these k modes. Modes are solutions to the eigenproblem of equation (11). Let the ith
mode field be represented by , and let its propagation constant (eigenvalue) be
. Call the subspace spanned by those k modes , to represent a subspace of
k dimensions. Then
When the second vector to span the Krylov subspace is calculated, it is apparent it is
also a linear combination of the k eigenvectors, and is therefore still in the subspace,
. It is easy to see that this situation is not changed by multiplying by again,
and so
for any power of . ( can be 1, 2, ... up to ). Therefore the dimension of this
Krylov subspace, is fewer than the m +1 vectors in the span (12). For
this choice of , the Krylov subspace has dimension k ( <m), and some of the
vectors in (12) have linear dependence on others.
When is a member of the subspace , the Gram-Schimdt process must
terminate at k, since having m basis vectors is not possible in . The termination
will be seen at the kth step of the process, in trying to calculate a vector perpendicular
to the previous k basis vectors. Equation (17) showed the generation of the 3rd vector,
the kth will be formed from
When this is done with , the must be zero, and the Gram-Schmidt
process will terminate. Because of the termination, the search for modes will take
place in a space of dimension k ( 1, 2, maybe 10) rather than in the space of the
vectors themselves. The vectors have dimension equal to the number of nodes in the
mesh of Fig. 1. This is typically some number on the order of 10
5
or 10
6
. This
termination greatly simplifies the problem!
Of course, a random choice of is unlikely to be a member of , but the IRAM
strategy is to use iterative processes that effectively change the initial choice of
to a vector inside (or not far from) the subspace .
(19)
(20)
(21)
(22)
K
m
Q v
1
) , (
v
1
e
i

i
2
S
k
v
1
x
1
e
1
x
2
e
2
x
k
e
k
+ + + = S
k

Qv
1

1
2
x
1
e
1

2
2
x
2
e
2

k
2
x
k
e
k
+ + + = S
k

S
k
Q
Q
j
v
1
S
k

Q j
K
m
Q v
1
) , (
v
1
v
1
S
k
S
k
w
k 1 +
Qv
k
h
1k
v
1
h
2k
v
2
h
kk
v
k
=
v
1
S
k
w
k 1 +
v
1
S
k
v
1
S
k
FINITE DIFFERENCE MODE SOLVER
51
In the FD tab of the Solver Parameters dialog box of OptiMode, both k and m are
defined as shown in Fig. 2.
Figure 2 Solver Parameter dialog box of OptiMode displaying the tab for the Finite Difference mode solver
(FD). Dimension of Krylov Subspace (m) and number of modes to find (k) are defined here.
In this example, the IRAM will construct a basis for a Krylov subspace of dimension
m. The default for the dimension of the Krylov subspace is 100. This number was the
result of many mode solving trials. For typical mode solving problems, this number
was found to be close to optimum. This will involve making m copies of the field
initially found on the defined mesh. m =100 will occupy a lot of RAM, but it seems to
make the mode solver find the mode more quickly. If this mesh is already very large,
there is a possibility to create an out-of-memory error, because the mode solver
requires at least m times the storage required for a single mode. If the memory is
exhausted for your problem, try again with a smaller number for m (the dimension of
the Krylov subspace). m can be made as small as twice the number of modes sought
(k) and still get correct results, even if it takes longer to find them.
The first choice of will probably not be anywhere near , so the IRAM begins
a process of shifted Q-R iteration to move away from unwanted eigenvalues and
closer to the desired ones. When the Q-R iteration process is finished, The algorithm
restarts (the R in IRAM). It reduces the dimension of the working space to k, but the
new subspace is different because the QR iterations indirectly change the starting
vector, . The result is usually movement toward the desired solution space .
This leaves a new set of vectors spanning a new k dimensional space, and the
algorithm starts the Arnoldi process again to build the dimension up to m. Then
another Q-R process will start to move closer to . See Ref [2] for details. If you
watch the computers Task Manager while the algorithm runs, you might see the used
RAM cycle as the dimension of the space cycles from k to m and back. After many
v
1
S
k
v
1
S
k
S
k
FINITE DIFFERENCE MODE SOLVER
52
iterations the stopping condition will be met, and at this point the generalization of
equation (18) will appear as
If the is now inside , the last coefficient in the sum will be zero. This is evident
from the definition of . If really is inside , is also inside and it
must be perpendicular to , making . In the practical
implementation of the mode solving problem, wont be exactly zero, but the
IRAM process finishes when it is small enough to be negligible. Once the problem is
in the form of (23) with the last term very small, it is easy to find the modes and
propagation constants.
To see this, make the following change in notation. Define an n x k matrix , the
columns of which are made from the k Arnoldi basis vectors of size n x 1,
and form a k x k matrix from the coefficients of equation (15). Now consider .
Equations (16) and (18) show how the first two columns of are formed in terms
of and the found in the first three columns of . The reader can find the
following columns by following the Gram-Schmidt process further. Note that has
all zero elements for those below the first subdiagonal, because the ith column of
is a linear combination of the first i +1 basis vectors . (A matrix of this form
is called Hessian).
All of the columns of , except for the last one, are calculated by . The last
column (kth column), according to (23) will need to include a term . This isnt
available in , so the relation is made complete by adding the last column explicitly:
is the kth unit column vector in a k dimensional space, and the transpose is
. Putting this row vector after the column vector serves
to put in the last column of a k x k matrix with zeros elsewhere. The second
term on the right adds the missing column in the relation. From the above discussion,
(23)
(24)
(25)
(26)
Qv
k
h
1k
v
1
h +
22
v
2
h
kk
v
k
h
k 1 k , +
v
k 1 +
+ + + =
v
1
S
k
h
ij
v
1
S
k
Qv
k
S
k
v
k 1 +
h
k 1 k , +
0 =
h
k 1 k , +
V
k
v
k
V
k
v
1
v
2
v
3
v
k
, , , , [ ] =
h
ij
QV
k
QV
k
h
ij
v
k V
k
H
k
QV
k
v
k
H
k
h
11
h
12
h
13
h
21
h
22
h
23
0 h
32
h
33
h
1 k 1 ,
h
1k
h
2 k 1 ,
h
2k
h
3 k 1 ,
h
3k
0 0 h
43

0 0

h
4 k 1 ,
h
4k

0 h
k k 1 ,
h
kk
=
QV
k
V
k
H
k
v
k 1 +
V
k
QV
k
V
k
H
k
h
k 1 k , +
v
k 1 +
e
k
T
+ =
e
k
e
k
T
0 0 0 1 , , , , ( ) =
v
k 1 +
v
k 1 +
FINITE DIFFERENCE MODE SOLVER
53
the is expected to be small, and it becomes a measure of the accuracy of the
solution.
The k modes we are looking for are inside . These modes can be found by finding
the eigenvectors of the matrix . This greatly simplifies the problem. The matrix
is n x n, where n is the number of nodes in the finite difference mesh. n is typically
on the order of 10
5
or 10
6
. On the other hand is k x k, and k is probably of order
of 10 or so. The reduction to (26) simplifies the problem by many orders of magnitude.
The k modes inside are a linear combination of the basis for that space. Let a
vector, of size k x 1, , represent an arbitrary vector in this space
Now let be an eigenvector of , and let the corresponding eigenvalue be .
It is easy to show that, within an accuracy specified by , the defined in (27)
is an eigenvector of with eigenvalue :
If the last term in (23) is zero, then is an exact eigenpair solution for . If the
last term is not exactly zero, then the pair is called a Ritz Pair, and the norm of
(29) is a measure of how accurately the Ritz Pair approximates the true eigenvector.
The number the above equation (30) evaluates to is called the Ritz estimate of the
Ritz Pair, .
The IRAM will stop when the user specified tolerance has been met, or the maximum
number of steps has been exceeded. The tolerance is calculated from the user
specified number in the Tolerance field of the Solver Parameters dialog box shown in
Fig. 2. The maximum number of steps is from the field called Max. Steps. Letting the
tolerance be , the IRAM will stop when the following condition is met:
where is the machine precision, or when Max. Steps is exceeded.
When the mode solver is running, while the iterations are taking place, the value in
(31) is exceeded, but it is still informative to observe at least one of the Ritz vectors.
(27)
(28)
(29)
(30)
(31)
h
k 1 k , +
S
k
H
k
Q
H
k
S
k
s
x V
k
s S
k
=
s H
k

H
k
s s =
h
k 1 k , +
x
Q
Qx x QV
k
s V
k
s QV
k
s V
k
H
k
s = =
QV
k
V
k
H
k
( ) = s h
k 1 k , +
v
k 1 +
e
k
T
s =
x , ( ) Q
x , ( )
Qx x h
k 1 k , +
v
k 1 +
e
k
T
s h
k 1 k , +
e
k
T
s = =
x , ( )
t
h
k 1 k , +
e
k
T
s max
M
H
k
t , ( )

M
FINITE DIFFERENCE MODE SOLVER
54
In a long calculation, the user can see if the mode solver is approaching a mode
solution or not. If not, the simulation can be stopped, and corrective action taken.
OptiMode calculates one of the Ritz vectors by (27) while the IRAM is going through
its iterations. This is the field displayed in the simulator while the calculation is taking
place. You can select which Ritz vector to view with the entry in the Preview Mode
field in the Solver Parameters dialog box (Fig. 2). Selecting 1 in this field will calculate
and display the first Ritz vector, the current approximation to the fundamental mode.
Entering 2 in this field will calculate and display the second Ritz vector, an
approximation to the next higher mode, and so on. The fields dont change very much
from one iteration to the next, so to save execution time you might not want to
calculate and view a Ritz vector for every iteration. If you want to observe every 10th
iteration, enter 10 in the Skip Value field (10 is the default value for Skip Value).
Transparent Boundary Condition (TBC)
The equation (10) applies to nodes inside the mesh. Nodes on the boundaries need
a different formula because at least one of the N, S, E, or W nodes will be outside of
the mesh and therefore not included in the calculation. The situation for a node on the
South boundary is illustrated in Fig. 3.
Figure 3 South boundary. The S node is outside the mesh, and not part of the simulation.
One kind of boundary condition is to just take the value at S to be zero. This is the
Dirichlet boundary condition, where all field components are taken to be zero at (or
one mesh point beyond) the simulation window boundary. This boundary will be used
if the Use TBC checkbox is not selected in the Solver Parameters dialog box (Fig. 2).
If the Use TBC checkbox in the Solver Parameters dialog box is selected, the value
of the magnetic field at S will be estimated. When the mode solving starts, S will be
taken as 0 for the initial iterations of IRAM, and the mode will be found with Dirichlet
boundary conditions. Once this is done, the as found in equation (8) or (9) should
be very close to the value with TBC. Let represent the first propagation constant
found, the one having the Dirichlet boundary condition.

D
FINITE DIFFERENCE MODE SOLVER
55
The region outside the calculation window boundary (south of P), is without feature,
of constant permittivity, and so the magnetic field (either x component or y) will
approximately follow
the approximation being due to the being only an approximation to the
propagation constant.
The solution of the magnetic field of a single mode in a region of constant permittivity
can be represented as a plane wave
Here the origin of the coordinate system is at the point P. As such, the
desired value of the magnetic field at S is
and this value can be used for the node outside the calculation window when applying
finite difference equations like (10).
To calculate the appropriate value for the wavenumber, . Put (33) in (32)
The solution with Dirichlet boundary conditions provides an estimate of the magnetic
field at the nodes of the mesh, and these values can be used to estimate the value of
(and therefore ) at P along the South boundary. This can be done by
finite differences of the three nodes W, P, and E. With the estimated this way, the
can be calculated as
where the branch cut of the square root is selected so as to have a positive real part,
so that the magnitude of is something smaller than . In this release the in
equation (10) is estimated by putting (36) in (34). On the other boundaries (N, E, and
W), a similar strategy is used.
(32)
(33)
(34)
(35)
(36)

2
h
x
2

--------

2
h
y
2

-------- k
2

D
2
( )h + + 0 =

D
h x y , ( ) h
P
e
ax by + ( )
=
x y , ( )
h
S
h
P
e
b y
=
b
a
2
b
2
k
2

D
2
+ + 0 =

2
h x
2
a
a
b
b
D
2
k
2
a
2
=
h
S
h
P
h
S
FINITE DIFFERENCE MODE SOLVER
56
References
[1] P. Lsse, P. Stuwe, J . Schle, H-G Unger, Analysis of Vectorial Mode Fields in Optical
Waveguides by a New Finite Difference Method, J ournal of Lightwave Technology, 12(3), p
487-493 (1994)
[2] R.B. Lehoucq, D.C. Sorensen, C. Yang, ARPACK Users Guide, SIAM (1998)
FINITE DIFFERENCE MODE SOLVER
57
FINITE DIFFERENCE MODE SOLVER
58
OPTIMODE TUTORIAL 1 - GETTING STARTED
59
OptiMode Tutorial 1 - Getting Started
This section describes how to create a design, run a simulation, view the simulation
results, and save the design project. More details, like how to define materials and
waveguide profiles, will be shown in the next lesson. The following lessons will
introduce more features, one at a time.
Starting OptiMode
To start OptiMode, perform the following procedure
1 On the Taskbar, click Start
2 Select Programs >Optiwave Software >OptiBPM (or OptiFDTD) >Cross
Section Layout Designer
Figure 1 New Cross Section Layout Designer.
OPTIMODE TUTORIAL 1 - GETTING STARTED
60
When the application opens, it will look something like Fig. 1. The toolbars might not
be exactly as shown. They might run off the end of the window. Drag and drop the
toolbars until they are all displayed, as in Fig. 1. The toolbars can also be placed on
the left or right sides of the window, or they can be placed off the window altogether.
The placement of the toolbars is remembered by Windows. It will not be necessary
to adjust the toolbars again.
Open a new project
To open a new project
1 go to File>>New, or click the New button in the toolbar. This will open the
Initial Properties dialog box as shown in Fig. 2
2 Click OK

Figure 2 Initial Properties dialog box
Note If your Initial Properties dialog box has nothing in the Profile field, then your copy
of OptiMode has the Auto Define Example Profiles feature disabled. To enable it,
follow the procedure below. If your Initial Properties dialog box looks like the one in
Figure 2, you can skip this step, and proceed directly to step Adjust the Layout View
below.
OPTIMODE TUTORIAL 1 - GETTING STARTED
61
To enable the Auto Define Example Profiles feature
1 Leave the Initial Properties dialog box by clicking Cancel
2 Open any sample project (a file with extension .mxd) from the samples
directory
3 Go to Preferences >>Layout Options to get the Layout Properties dialog box
(Figure 3)
4 Select the Auto Define Example Profiles and Materials for a new Project
check box.
5 Click OK.
6 Close the project. It is not necessary to save it.
7 Go back to Open a New Project above. The Initial Properties dialog box
should now be as in Figure 2

Figure 3 Layout Properties dialog box, and the Auto Define feature.
OPTIMODE TUTORIAL 1 - GETTING STARTED
62
Adjust the Layout View
Click on the zoom buttons +and - until the 10 x 10 view of the transverse plane fills
your workspace as in Figure 4

Figure 4 Layout View
The Layout View in OptiMode is the transverse plane. The horizontal axis is X, and
the vertical, Y. The optical propagation follows Z, perpendicular to this plane. The
substrate is in the half space Y <0, and the cladding in the half space Y >0. In this
example, the substrate and cladding consist of different materials, and this difference
OPTIMODE TUTORIAL 1 - GETTING STARTED
63
is noted by the cross hatch shading in the substrate region. In examples that have no
substrate ( e.g. in simulations of optical fibres), the material in region Y <0 is set to
be the same material as found in the region Y >0. In that case, the cross hatch
shading will disappear, indicating a homogeneous transverse plane.
Add a Waveguide for Analysis
To add a waveguide click on the Add a Waveguide Cross Section button

Figure 5 the Add a Waveguide Cross Section button
A waveguide will appear in the Layout view of OptiMode XS Designer. The details of
the new waveguide can be accessed in one of 3 ways:
1 Right click on the waveguide and select Properties
2 Double click on the new line in the Layout Properties box
3 Select the waveguide in the Layout and enter the short cut keys Alt-Enter
4 You can also double click on the waveguide. However this method has the
potential to move the waveguide by mistake. One can open this way if the
position is also to be reviewed or modified.
Any of these actions will open the XS Linear Waveguide Properties box

OPTIMODE TUTORIAL 1 - GETTING STARTED
64
Figure 6 the XS Linear Waveguide Properties box
Changing any of the numbers in the Position fields will move the waveguide (after
clicking OK). Note that the waveguide can also be moved by dragging and dropping
in the Layout. The numbers in the position fields will change accordingly. Some of
the fields have an fx notation. This means this field can be defined by a User Defined
Parameter instead of literally with a number. Clicking on the fx opens the Variables
and Functions dialog box for managing User Defined Parameters. (But there will be
more to say on that later!)
The Label is a name for this structure that will become useful when defining layouts
by VB Script.
The Profile combo box selects which waveguide profile will be used. The waveguide
profile is taken from the list defined in the Profile Designer. The Profile Designer is
another application in which materials and waveguide profiles are defined.
WG_Channel_Example is sample waveguide already created when OptiMode has
the Auto Define Example Profiles feature enabled.
Open the Profile Designer by clicking Profiles In Use in the XS Linear Waveguide
Profiles dialog box (Figure 6). This will appear as in Figure 7.
OPTIMODE TUTORIAL 1 - GETTING STARTED
65

Figure 7 The Profile Designer. The materials and Profiles shown are the ones that appear when the Auto
Define Example Profiles feature is enabled. The Profile Designer can also be opened from the OptiMode XS
Designer from Edit >> Profiles and Materials...
Two profiles are already defined, one a channel and the other a fibre. There are also
several materials defined that support the profiles. Double clicking any of the items
in the list will open a box in the main window. Viewing and editing the data for the
material or profile is possible from that box.
Note that the data is contained in a tree with top heading OptiMode XS Designer.
There is another top level heading, the Master. The Master (when expanded by
clicking on the + sign) has the same tree structure, but with different entries. The
Master contains items defined in previous sessions of OptiMode. Any item dragged
and dropped to the Master will still be there when a new project is started. This feature
might be convenient if you have materials and profiles that are often used.
Return to the OptiMode XS Designer, and close the XS Linear Waveguide Properties
box. Save the new project with a name such as Lesson1-Getting started.
OPTIMODE TUTORIAL 1 - GETTING STARTED
66
When the new project is saved, the new heading of the tree in the Profile Designer
will take the name of the new project. If other projects are opened, (OptiMode or
OptiBPM), they appear in the Profile Designer labelled according to the project
names. This makes it easy to move profile and material definitions from one project
to another. Once the waveguide profile is defined in OptiMode, it is not necessary to
define it again in later propagation analysis in OptiBPM or OptiFDTD.
1 Go to Solving ... >>Solver Parameters... to get the Solver Parameters dialog
box
2 Change the Number of Points in Mesh to 201 by 201
3 Click OK

Figure 8 Adjusting the mesh in Solver Parameters
To start the mode solver,
1 Go to Solving... >>Solve ADI
2 Click Run...
The mode solver will find one mode (the fundamental mode). When asked if you want
to launch the OptiMode Analyzer, select Yes. The mode solver will close, and the
OptiMode Analyzer will open, as in Figure 9.
OPTIMODE TUTORIAL 1 - GETTING STARTED
67
Figure 9 The OptiMode Analyzer
The Analyzer is a separate application for review and analysis of results created by
the mode solver. The simulator creates a file with the same name as the project, but
with extension .m3a. This file contains the results of the mode solving calculation, as
well as details about the original waveguide structure, and other details about the
mode solving project. The .m3a file is a permanent archive file in the same folder as
the project (.mxd file). At a later time, the Analyzer can be run and the results file
(.m3a file) opened. In this way you can review mode solving results without having to
run the mode solver again.
OPTIMODE TUTORIAL 1 - GETTING STARTED
68
The Analyzer opens with a read-only copy of the Layout view. The other items in the
Iteration tree show the refractive index distribution after applying the mesh to the
Layout, the Modal Field on the same mesh as Refractive Index distribution, and a
page of data and settings used in this simulation.
If the Refractive Index item is selected, the refractive index distribution after applying
the mesh is displayed, as in Figure 10. The relevant toolbars will turn off and on.
Figure 10 is the display after clicking on the Pallet button in the 3D Graph toolbar. The
Pallet shows the colour code for the refractive index display.

Figure 10 the refractive index distribution
If the cursor is placed on the distribution, a flying label will appear showing the mesh
point and the value of the refractive index at that point. For example, the label in
Figure 10 means that at row 66 and column 104, the refractive index is 1.5.
OPTIMODE TUTORIAL 1 - GETTING STARTED
69
Selecting Modal Field will show the modal field on the same mesh as the Refractive
index distribution as in Figure 11.

Figure 11 The Modal Field display
The modal index and polarization appears in the Modes toolbar. The field is a combo
box. If more than one mode was found in the mode solving, the other modes can be
selected by this combo box. The Minor Field component can also be found by
selecting the Ey tab on the main window.
A summary of Solver Parameters, User Defined Parameters, and Modal Results are
displayed when Solver Information is Selected, as shown in Figure 12

OPTIMODE TUTORIAL 1 - GETTING STARTED
70
Figure 12 The Solver Parameter information.
The Analyzer can also access and display data from more complex projects that
contain User Defined Parameters and have scripts that call the simulator many times.
For example, one can investigate the effect of varying one or more parameters in a
waveguide design by defining User Parameters, changing their values, and
automatically running the simulator for each value. Each running of the simulator
creates a new Iteration, displayed in the Iterations toolbar of the Analyzer. In projects
with more than one running of the simulator, the Iterations toolbar contains a combo
box that can select a specific case. All data in the Layout, Refractive Index, Modal
Field, and Solver Information is updated to display the relevant iteration.
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
71
OptiMode Tutorial 2 - Define Materials and
Waveguide Profiles
This tutorial describes how to define materials and waveguide profiles. The example
will simulate an optical fibre with a depressed cladding layer.
Turn off the Auto Define Example feature
1 Open the project created in the last tutorial, Lesson1-GettingStarted.mxd.
2 Go to Preferences >>Layout Options to get the layout Properties dialog box
3 Unselect the Auto define example profiles and materials for a new project
as in Figure 1.
4 Click OK
5 Close the project (it is not necessary to save it).

Figure 1 unselect the auto example feature
Now OptiMode is ready to start a new project with no previous materials or profiles.
To start
1 Click New
2 In the Initial Properties dialog box, click Profiles and Materials
This will open an empty profile designer.
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
72
Adding new materials
In the profile designer, right click on the item labelled Dielectric under the heading
Materials
Select New
This creates a new material with the name Dielectric1. The properties are found in
the main window, as in Figure 2

Figure 2 New Material in Profile Designer
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
73
To define the material for the core of the optical fibre
1 Change the name from Dielectric1 to core
2 Enter 1.463 in the real part of refractive index, leave the imaginary part 0
3 Click store

Figure 3 defining a material for the core of the optical fibre
Note that the name in the list of Dielectrics has changed to core. Perform the same
action (1 to 3 above) to define materials for the cladding and depressed cladding
according to Table 1 and Figure 4.
Table 1: material definitions
Material name Refractive Index
Core 1.463
Cladding 1.459
DepressedClad 1.457
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
74
Figure 4 materials for depressed clad fibre
Adding a Fiber Profile
To define a single layer Fiber Profile
1 Right click on the Fiber item in the Profiles list
2 Select new
3 Set Rx and Ry to 4.0
4 Select the material core from the combo box
5 Click Add
This will add a layer called Layer1 with semi-radii Rx and Ry both equal to 4,
consisting of material core, as shown in Figure 5. Corrections can be made by
selecting and using the Apply button.
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
75

Figure 5 Fiber Profile with one layer.
To add a second layer to the fibre (the depressed layer)
1 Change the layer name to Layer 2
2 Set Rx and Ry to 5.0
3 Select the material DepressedClad from the combo box
4 Click Add
5 Click Store
The result should look like Figure 6.
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
76

Figure 6 the depressed clad Fiber Profile
Defining the project
Now return to the Initial Properties dialog box, and
1 Enter 10 in the Width field
2 Select FibrePro1 from the combo box
This selection means that, when in the layout designer, creating a new waveguide will
take these properties, unless otherwise specified.
1 Click the 3D Wafer Properties tab
2 Enter 20 for Width
3 Select the material Cladding in the Cladding panel
4 Set the Thickness to 10
5 Select the material Cladding in the Substrate panel
6 Set the Thickness to 10
7 Click OK
8 Save the project with the name Lesson2-OpticalFibre
The OptiMode XS Designer should now appear as in Figure 7
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
77
If any errors were made, they can be corrected after saving the project by going to
Edit >>Default waveguide... or Edit >>Wafer Properties...

Figure 7 the space for optical fibre analysis
Note that the half space in Y <0 does not have the cross hatch shading as in
OptiMode Tutorial 1 - Getting Started on page 59. That is because in this example,
the Cladding space (Y >0) is filled with the same material as the Substrate space (Y
<0).
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
78
Add a waveguide for analysis
As in tutorial 1, to add a waveguide, click on the Add a Waveguide Cross Section
button. The waveguide (a multilayer optical fibre, this time) will appear as in Figure 8.

Figure 8 Multilayer optical fibre
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
79
Mode solver settings
To find the modes on this optical fibre, it is necessary to specify the wavelength and
which modes should be sought. This is controlled from the Solver Parameters dialog
box. This information depends on the kind of mode solver to be used. Since the
profile is a circularly symmetric fibre, we can use the Fibre mode solvers (either LP or
Full Vector solver). The mode solver can be directed to look at a range of Orders (the
angular mode number), and to look for a specified number of modes within each order
(the search starts from the highest mode index and searches in a downward
direction). For example, setting the Order to 0 and number of modes to 1 will find the
LP(0,1) mode (the fundamental mode) in the LP mode solver. To find the fundamental
mode in the vector mode solver, set the Order to 1 and the number of modes to 1.
This will find the HE(1,1) mode (the fundamental vector mode).
1 Go to Solving >>Solver Parameters...
2 Select the Fibre tab
3 Enter 0.6328 for the Wavelength
4 In Order panel, set From to 0 and To to 3
5 Set the Max, Mode Count to 3
6 Click OK

Figure 9 the settings for fibre mode solving
This will make the mode solver look for all modes with Order (angular mode number)
from 0 to 3. It will look for up to 3 modes in each order. (If there are fewer than 3
modes, the mode solver will stop the search in that Order at the last mode).
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
80
Find the modes
To find the LP modes on the fibre
1 Go to Solving >>Solve FibreLP
2 Click Run...
The mode solver will run and display the modes found

Figure 10 LP modes of the depressed cladding fibre
When the mode solver is finished finding modes, it will ask if you want to proceed to
the OptiMode Analyzer. If you select No, the Mode Solver will stay open. The
Analyzer result can be seen from opening the file Lesson2-OpticalFibre.m3a with the
OptiMode Analyzer at any time after the mode solver finishes finding the modes.
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
81
In the OptiMode Solver, clicking on a mode in the Mode Found window will change
the main window to display the field pattern of that mode. Note that 3 modes were
requested for each of the Orders 0, 1, 2, and 3, but no more than one mode was found
for each Order. In the case of Order 3, no modes could be found (there is a sentence
in the Notification Window explaining this).
View Results in the OptiMode Analyzer
A permanent record of the mode solving session is made by the simulator. The file
has the same name as the OptiMode project with the file extension .m3a. To view the
record of this simulation
Open the OptiMode Analyzer from the Start Menu
Go to File >>Open, and navigate to the file Lesson2-OpticalFibre.m3a
The Analyzer has items under the Iteration heading with graphical display of refractive
index distribution and modal index and field, similar to the mode solver. The mode
indices are found in a combo box that select which mode field will be displayed. There
is also a Solver Information Page, as shown in Figure 11.
OPTIMODE TUTORIAL 2 - DEFINE MATERIALS AND WAVEGUIDE PROFILES
82

Figure 11 The Solver Parameters page in the OptiMode Analyzer
The Solver Parameters heading records that these modes were found by the FibreLP
mode solver, and what parameters were given for finding modes, as well as the
wavelength. The next heading is User Parameters. Our example doesnt have any
of these, but they will be introduced in the next tutorial, OptiMode Tutorial 3 -
Parameter Scanning on page 83.
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
83
OptiMode Tutorial 3 - Parameter Scanning
This tutorial demonstrates User Parameters, scanning of parameters, and graphical
display of scanned results. The analysis is done on the same structure as in the
previous tutorial, OptiMode Tutorial 2 - Define Materials and Waveguide Profiles on
page 71. In this tutorial, the effect of the width of the depressed cladding on modal
index will be investigated. To do this, User Parameters will be defined for the radius
of the fibre core and the width of the cladding. A sequence of dialog boxes that
arranges parameter scanning will be demonstrated, as well as how to request
graphical display of the scanned results.
The starting point of this tutorial is the end of the previous tutorial. Open the finished
Tutorial 2 project, and save it under a new name for this tutorial. Alternately, open
OptiMode Cross Section Designer, navigate to the supplied sample Lesson2-
OpticalFibre.mxd, open that and save it under a new name.
Define User Parameters
User Parameters are defined in the Variables and Functions dialog box. This box is
opened from Solving >>Edit Parameters... , or from clicking on any field that has the
fx on the left side of the field. This project will define two User Parameters, one for
the radius of the fibre core and the other for the thickness of the depressed cladding.
3 Go to Solving >>Edit Parameters...
4 In the User Variables tab, enter the name core_radius in the Name field
5 Enter 4.0 in the Expression field
6 Click Verify
7 Click Add/Apply
The new User Parameter will appear in the User Variables tab in the lower panel of
the box, as in Figure 1
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
84

Figure 1 The Variables and Functions dialog box
1 Repeat steps 2 to 5 to add another User Parameter, the width of the
depressed cladding, width_dc.
2 Set value of width_dc to 1.
These parameters are globally defined in the project. Sometimes it is worth defining
them if the parameter is used in many places. All instances of the parameter can be
changed by applying a new value once in the Variables and Functions dialog box. In
this tutorial, the parameter definition is used to scan the value according to a schedule
defined in the Parameter Sweep Definition dialog box.
The core radius and width of depressed clad layer are used in the profile definition
and the width of the waveguide in the layout. To put the parameters in the profile
definition
1 Go to Edit >>Profiles and Materials to open the Profile Designer
2 Double click on FiberPro1 to open the Profile definition in the main window
3 Select Layer 1 in the layer list
4 Write core_radius in the Rx and Ry fields
5 Click Apply
After this, update the second layer radius with a radius of core_radius +width_dc
(one can write expressions as well as parameters in the fx fields)
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
85
1 Select Layer 2 in the layer list
2 Write core_radius +width_dc in the Rx and Ry fields
3 Click Apply
4 Click Store
The FiberPro1 profile will have layer widths defined by the User Parameters as in
Figure 2.

Figure 2 Parameterized layer width definitions for the fiber profile
The actual size of the optical fibre is determined by the width of the waveguide in the
layout. We will set this width to 2 (core_radius +width_dc), so that the fibre has core
and cladding according to the numerical value of the parameters. (If the waveguide
width is another value, the Rx and Ry values determine only the ratio of layer widths).
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
86
To set the waveguide width,
1 Double click on the waveguide in the Layout Properties window to open the
XS Linear Waveguide Properties dialog box
2 In the width field, write 2 * (core_radius +width_dc), as in Figure 3.
3 Click OK

Figure 3 Parameterized Waveguide Properties
Note that changing the core_radius or width_dc parameter will make the Layout and
refractive index distribution change accordingly.
Define a parameter sweep
OptiMode can be made to perform many simulations with various values of the User
Parameters. Use this feature if you want to understand how your structure changes
with changes in geometry or material parameters.
1 Go to Tools >>Parameter Sweep to open the Parameter Sweep Definition
dialog box
2 Click on Parameters to open the Parameter Selection dialog box. All
parameters defined in the project are displayed in this box
3 Select the parameter width_dc and click OK
The Parameter Sweep Definition dialog box now has the parameter width_dc listed
under Level 1
1 Right click on Level1
2 Select Set Iteration Count
3 Set the iteration number to 11
4 Click OK
The Parameter Sweep Definition dialog box should appear as in Figure 4.
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
87

Figure 4 the Parameter Sweep Definition dialog box
The box indicates the simulation will be performed 11 times, and the value of width_dc
will be according to the table for each iteration. Each number in the list can be edited
in this dialog box, and the number will be used in the simulation. There are Spread
Tools in the lower right to assign values automatically. To use the Linear Tool
1 Click on the width_dc at the top of the column of iterations. This will select
the whole column.
2 Click on the Linear button. This will open the Parameter Iteration Spread
dialog box
3 Enter 0.0 as the start value, and 5.0 as the end value
4 Click OK
The values for width_dc will now be 0, 0.5, 1.0, 1.5, and so on up to 5.0 in a linear
sequence.
Specify Graphical Output
If this project is run with this parameter sweep definition, the mode solver will be called
11 times, with the parameter width_dc set according to the list in the Parameter
Sweep Definition dialog box. All results are sent to the same Analyzer file, and the
result of each iteration is selected for viewing by using the Iteration combo box.
OptiMode can also display the modal index in the form of a graph, with the parameter
on the x axis. To request a graph like this
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
88
1 In the Parameter Sweep Definition dialog box, click Graphs...
2 In the User Defined Graphs dialog box, click Add to add a graph to get the
Add/Edit dialog box
3 Enter Modal Index for the Graph Title
4 Enter n for the Y axis title
5 For Y axis values, select Modal Index
6 Enter dc thickness for the x axis title
7 Select Mode Data - Polarization for the Legend
8 Click OK
9 Click OK
10 Click OK to return to the OptiMode XS Designer
Run a Sweep
Now run the project by going to Solving >>Solve FibreLP. The dialog box displayed
before running is shown in Figure 5.

Figure 5 the Solver Parameters dialog box.
Note that the check box Use Sweep Script has been selected. This is done
automatically by OptiMode when a parameter sweep is defined. If you dont want to
run the sweep, unselect this check box, and one simulation will be done with User
Parameters as currently defined in the Variables and Functions dialog box.
During the running youll see the mode solver go through the 11 iterations, and the
results will scroll past in the Mode Found window. Open the Analyzer when asked.
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
89
Viewing scanned results
The output of a sweep simulation is presented as in single simulations. However, the
Iteration combo box is enabled, and it can be used to select which simulation to view.
For example, if Iteration 6 is selected, the Layout, Refractive Index, Modal Field, and
Solver Information will all display results from the 6th iteration, as in Figure 6.

Figure 6 Results from the 6th iteration
There is a Parameters Window in the lower right hand corner to show the values of
all parameters at that iteration. All User Parameters are shown, whether they change
with the iterations or not. However, for convenience, the parameters that are
changing with the iterations are listed at the top.
OPTIMODE TUTORIAL 3 - PARAMETER SCANNING
90
There is a new item on the navigator pane, the Modal Index graph we requested as
graphical output. It is independent of iterations and found at the bottom of the list.
1 Select Modal Index, the graph will appear in the main window.
2 In the graph, right click and select Legend. This should appear as in Figure 7

Figure 7 Graphical output of parameter sweep
The graph shows the modal index of all the modes as a function of the thickness of
the depressed cladding layer. It seems to affect the higher order modes more strongly
than the fundamental mode, and the increased thickness causes the highest mode,
LP(0,2), to cut-off.
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
91
OptiMode Tutorial 4 - Multi-level Scanning
This tutorial demonstrates scanning of parameters on two levels and graphical display
using a Legend.
The starting point of this tutorial is the end of the previous tutorial. Open the finished
Tutorial 3 project, and save it under a new name for this tutorial. Alternately, open
OptiMode Cross Section Designer, navigate to the supplied sample Lesson3-
OpticalFibre.mxd, open that and save it under a new name to start this tutorial.
At a longer wavelength, 1.3 , the depressed cladding fibre of this sample is
usually single mode. In this tutorial the influence of the cladding thickness on the
fundamental modal index will be investigated. At the same time, the simulation will
be done for different values of core radius. The graphical presentation of results will
clearly show the relevant trend.
Set the wavelength
The first step is to change the wavelength of the project:
Go to Solving >>Solver Parameters, and change the wavelength to 1.3 , as in
Figure 1.

Figure 1 set the wavelength to 1.3
Specify a two-level scan of User Parameters
The simulation will sweep through the same range of thickness of cladding layer as
before. However, the radius of the core parameter will be included.
m
m
m
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
92
3 Go to Tools >>Parameter Sweep
4 Click Parameters...
5 Select core_radius (as well as width_dc)
6 Click OK
7 In the Parameter Sweep dialog box, select Level1. It should look like Figure 2

Figure 2 More than one User Parameter in the sweep
The two selected User Parameters are shown with their current values and the default
number of iterations. The desired number of iterations can be set, and the value of
each parameter can be defined as already described in Tutorial 3.
In this tutorial, we show how to arrange a two level parameter scan, where the
parameter on the lower level sweeps through the whole range while the upper level
parameters are held constant. The upper level parameter is then changed to the next
value on its list, and the lower level parameters are swept through their ranges again.
In the special case of two-level scan, it is possible to arrange graphical output with the
higher level parameter in the legend of the graph. This tutorial will show how to
specify a multi-level scan with that kind of graphical display.
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
93
Create parameter levels
1 In the Parameter Sweep Definition dialog box, Right click on Level 1 and
select Add Level. The two parameters will now be found under Level 2
2 Drag and drop the core_radius parameter under Level 1, so that width_dc is
under Level 2, and core_radius is under Level 1.
3 Right click on Level 1, and set the Iteration Count to 3.
4 Select core_radius column and click Linear...
5 In the Parameter Iteration Spread dialog box set the start value to 3 and the
end to 5, as in Figure 3

Figure 3 Level 1 of the multi-level sweep
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
94
6 Select Level 2, and repeat steps 3, 4, and 5, but make the Iteration Count 11
and make the range of width_dc go from 0 to 5, as in Figure 4

Figure 4 Level 2 of the multi-level sweep
With the Parameter Sweep dialog box in this condition, OptiMode will start the
simulator with core_radius =3, and will run 11 simulations for all values of width_dc
from 0 to 5. Then it will set core_radius =4, and will run another 11 simulations for all
the width_dc values. Finally, it will set core_radius =5, and find all modes for all the
width_dc values. All 33 iterations can be reviewed in the Analyzer, and the values of
width_dc and core_radius are displayed in the Parameters Window for each iteration.
Specify a graphical display with legend
The kind of two-level sweep is best displayed as a graph with the Level 2 parameter
on the X axis and the Level 1 parameter in the legend. To do this
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
95
1 In the Parameter Sweep Definition dialog box, click on Graphs...
2 In the User Defined Graphs dialog box, click Add
3 In the Add/Edit dialog box, enter Fundamental Mode as the Graph Title
4 Select Modal Index as the Y axis value
5 Enter modal index as the Y axis title
6 Enter clad thickness as the X axis title
7 Click OK 3 times to return to the OptiMode XS Designer

Figure 5 Specifying a graph with one parameter on the X axis and the other in the Legend
Run the simulation
1 Go to Solving >>Solve FibreLP...
2 Click Run...
3 When the simulation finishes, request to proceed to the Analyzer
4 In the Analyzer, select the new graph in the tree (it is labelled according to
the Graph Title above, Fundamental Mode
5 In the graph, right click and select Legend to show the legend of the graph
The graph is shown in Figure 6
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
96

Figure 6 Graphical output with one parameter on the X axis and the other in the Legend
This graph shows the same decrease in modal index with increasing depressed
cladding thickness as seen in the previous tutorial. It also shows that this effect is
more pronounced if the fibre core radius is reduced.
Specify more than one graph
It is possible to request more than one graph for display in the Analyzer. Other data
may be of interest, for example, it happens that not all combinations of fibres with
core_radius and width_dc in this simulation are single mode. Some have a second
mode. To see this, one can request another graph with the same X axis and Legend,
but with number of modes found in the Y axis (instead of fundamental mode index).
To do this
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
97
1 Go to Tools >>Parameter Sweep
2 In the Parameter Sweep Definition dialog box, click on Graphs...
3 In the User Defined Graphs dialog box, click Add
4 In the Add/Edit dialog box, enter Mode Count as the title
5 Enter number of modes as the Y axis title
6 Select Mode Count as the Y axis Value
7 Enter clad thickness as the X axis title

Figure 7 graph of number of modes
8 Click OK 3 times to return to the OptiMode XS Designer
9 Go to Solving >>Solve FibreLP...
10 Click Run...
11 After the Analyzer loads, select the Mode Count graph.
12 In the graph, right click and select Legend
In the resulting graph of Mode Count (Figure 8), we can see the fibre is a single mode
waveguide except for the cases core_radius =5 and width_dc =0 or 0.5.
OPTIMODE TUTORIAL 4 - MULTI-LEVEL SCANNING
98

Figure 8 Number of modes found in each simulation
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
99
OptiMode Tutorial 5 - Photonic Crystal Fibre and
VB Script
In this tutorial, we make the hexagonal crystal lattice fibre of Reference 1. The
photonic crystal fibre consists of an array of holes parallel to the fibre axis. In this
problem the material of substrate and cladding will be set to the glass of the fibre. The
Fibre Profile, defined with a single layer of air as the material, can be used to define
a circular hole in the fibre. One can place as many holes as needed to make the array
of the photonic crystal fibre. Although it is possible to do this by hand, the job is rather
tedious. OptiMode has a VB Script that can be used for automatic placement of the
holes. This tutorial will introduce the script and show how it can be used to construct
the photonic crystal fibres of Reference [3].
Define Materials and Profile
The photonic crystal fibre needs only two materials and one profile. One material is
Air (for the holes), and the other is the glass of the fibre.
13 Go to File >>New to start a new project
14 Click on Profiles and Materials to open the Profile Designer
15 Create the glass material. Call it SiO2 and set its refractive index to 1.45.
16 The Profile is a Fiber Profile. Call it Hole and make it one layer of Air, with
semi-radii Rx =1 and Ry =1. (Figure 1)
The Rx and Ry serve only to define the relative semi-axes. The actual diameter of
the hole will be the width of the waveguide in the layout, not yet defined.
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
100

Figure 1 Material and Profile definitions. This profile will make a circular hole.
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
101
1 In the Initial Properties dialog box, set the Default Width to 1.0, and the
Default Waveguide to Hole.
2 In the 3D Wafer Properties tab, Set the width to 25
3 Set both Cladding and Substrate materials to SiO2, and their widths to 12
(Figure 2)
4 Save the project.
Figure 2 Initial Properties
1 Click on the waveguide item to put a new circular waveguide in the Layout.
2 Drag and drop the waveguide to some random place.
3 Repeat two or three times to get a few waveguides scattered through the
Layout, as in Figure 3
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
102

Figure 3 Layout with 3 holes
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
103
Use Generate Layout Script...
1 Click on the Scripting tab. (It should be empty.)
2 Go to Tools >>Generate Layout Script...
3 The dialog box will warn about overwriting any script that is currently there.
Click Yes.
The following text will appear in the Scripting tab
WGMgr.DeleteAll

Dim WGCrossSection1
Set WGCrossSection1 = WGMgr.CreateObj ( "WGLinearXS",
"WGCrossSection1" )
WGCrossSection1.SetStart -5.55, 2.85
WGCrossSection1.SetAttr "WidthExpr", "1"
WGCrossSection1.SetProfileName "Hole"

Dim WGCrossSection2
Set WGCrossSection2 = WGMgr.CreateObj ( "WGLinearXS",
"WGCrossSection2" )
WGCrossSection2.SetStart 4.2, 4.85
WGCrossSection2.SetAttr "WidthExpr", "1"
WGCrossSection2.SetProfileName "Hole"

Dim WGCrossSection3
Set WGCrossSection3 = WGMgr.CreateObj ( "WGLinearXS",
"WGCrossSection3" )
WGCrossSection3.SetStart 2.3, -3.55
WGCrossSection3.SetAttr "WidthExpr", "1"
WGCrossSection3.SetProfileName "Hole"
To see the function of this script, do the following
1 Return to the Layout page
2 Select the waveguides in the Layout and delete them all
3 Go to Tools >>Run Script
The waveguides will re-appear. The new waveguides have been created by the
script. The script can be used to create waveguides and arrange them in the Layout.
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
104
In this script, note there are 3 paragraphs, one for each object in the layout. The first
line defines a variable in VB. In the second line, the variable is made into an object
by the Set command. This is done by the OptiMode supplied structure WGMgr, which
has a function named CreateObj that will create a new object in the layout. The first
argument of the function, WGLinearXS, indicates that the new layout object should
be a waveguide (instead of a Substrate Layers or a user defined refractive index
distribution). The second argument gives the new waveguide a unique name. That
is the name that appears in the Label field of the XS Linear Waveguide Properties
dialog box for that waveguide. The third line positions the waveguide in the X, Y
plane. (If those numbers are changed, an the script run again, the waveguides in the
layout will move to the new location). The fourth line sets the width of the waveguide
to 1.0, and the last line specifies which Profile should be used to define this
waveguides cross section profile.
Write your own script
The environment in which these lines are written is a VB Script environment, so
anything that can be done in VB Script can be done here by writing the appropriate
code. For example, instead of creating three waveguides by writing three
paragraphs, the three could be made from a single paragraph that is contained in a
VB For - Next loop. There are, however, two things that should change for each
iteration of the loop. One is the name of the new waveguide, since each waveguide
must have a unique name. The other is the position. There isnt much point in
creating three identical waveguides in the same place. To create a unique name, the
string concatenation feature of VB can be used. A name can be given as a prefix, and
the suffix, added by string concatenation, can be made up from the loop counting
index, as in the script below.
'Make waveguides in a loop
Option Explicit ' do not permit variables that have not been declared
WGMgr.DeleteAll ' delete all waveguides currently in the layout
Dim loop_index, waveguide_object, hole_diameter, x_coord, waveguide_name
hole_diameter = 5
For loop_index = 1 To 3
'unique name for the new waveguide "HoleNumber_x" ( x = 1, 2, or 3)
waveguide_name = "HoleNumber_" & CStr( loop_index)

Set waveguide_object = WGMgr.CreateObj("WGLinearXS", waveguide_name)
x_coord = - 12 + 6 * loop_index
waveguide_object.SetStart x_coord, 0.0
MsgBox("WG name is " & waveguide_name & ", WG position is "_&
CStr(x_coord) )
waveguide_object.SetAttr "WidthExpr", CStr( hole_diameter)
waveguide_object.SetProfileName "Hole"
Next
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
105
The apostrophe makes comments of any characters following it. Option Explicit is a
good idea, it will prevent the confusion that results when a variable is miss-spelt by
mistake. CStr( ) is a standard VB function that takes a numerical variable and
converts it to a string. Some of the of the functions used need strings in their
arguments, even though the data being passed are numbers. The MsgBox command
is useful for checking the program is running as expected, but later you might want to
make it a comment so it wont stop the execution. The underscore at the end of the
MsgBox line permits the command definition to be continued on the next line. After
running the script, the Layout should appear as in Figure 4.

Figure 4 Layout after running the Make waveguides in a loop script.
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
106
The names of the waveguides are listed in the Layout Properties window by the string
algorithm in the script.
Script for photonic crystal fibre
Using some logic and nested loops, a script can be written to create a typical photonic
crystal fibre. An example is shown below.
1 Create a new project with the same definitions as above (use Save As...)
2 Replace the script with the one below
' Make the hexagonal crystal lattice fibre of
' Optics Letters Vol.22 No. 13 p961 (1997)
Option Explicit
WGMgr.DeleteAll

Dim X0,Y0,Nperiods,i,j,YLevel,Pitch,HoleDiameter,x_coord
Dim wg_object, Xdefect, Ydefect, windowsz

windowsz = ParamMgr.EvaluateExpr("window")

Nperiods = 9
Pitch = 2.3
X0 = - (Nperiods/2 - 0.5) * Pitch
Y0 = - (Nperiods - 1) * (3)^(0.5) * Pitch / 2.0
HoleDiameter = 0.45 * Pitch

Xdefect = Nperiods
Ydefect = Nperiods

WGMgr.OutputMSG(" Periods = " & Nperiods & " Pitch = " & Pitch & _
" Hole Diameter = " & HoleDiameter)

' Create the lower half of the photonic crysal.
' Don't put a waveguide at i = j = Nperiods
For j = 1 To Nperiods
YLevel = Y0 + (j-1) * (3)^(0.5) * Pitch / 2.0
If YLevel > - windowsz / 2 Then
For i = 1 To Nperiods + j - 1
x_coord = X0 + (i - 1) * Pitch - (j - 1) * Pitch / 2.0
If( (i<>Xdefect Or j<>Ydefect) And x_coord < windowsz / 2 _
And x_coord > - windowsz / 2 ) Then
Set wg_object = WGMgr.CreateObj("WGLinearXS", "Hole_"& _
CStr(j)&"_"&CStr(i) )
wg_object.SetStart x_coord, YLevel
wg_object.SetAttr "WidthExpr", CStr(HoleDiameter)
wg_object.SetProfileName "Hole"
End If
Next
End If
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
107
Next

' Create the upper half of the photonic crystal
For j = Nperiods + 1 To 2 * Nperiods - 1
YLevel = Y0 + (j-1) * (3)^(0.5) * Pitch / 2.0
If YLevel < windowsz / 2 Then
For i = 1 To 3 * Nperiods - j - 1
x_coord = X0 + (i - 1) * Pitch + (j - 2 * Nperiods + 1) _
* Pitch / 2.0
If x_coord < windowsz / 2 And x_coord > - windowsz / 2 Then
Set wg_object = WGMgr.CreateObj("WGLinearXS", "Hole_" _
&CStr(j) &"_"&CStr(i) )

wg_object.SetStart x_coord, YLevel
wg_object.SetAttr "WidthExpr", CStr(HoleDiameter)
wg_object.SetProfileName "Hole"
End If
Next
End If
Next
When this script is run, the layout creates a photonic crystal lattice as shown in Figure
5.
Figure 5 Photonic crystal fibre of Ref. 1
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
108
Finding modes of photonic crystals
To find the mode of a photonic crystal fibre, several settings are required. The mesh
needs to be quite fine. The mode is always lossy, only complex modes exist, so the
Complex mode solver must be called, (not the real one). The boundary condition
should allow the losses, so it should be set to TBC (Transparent Boundary Condition).
The waveguide has high index contrast, so a full vector solution is the most accurate.
The ADI mode solver needs a Gaussian field as an initial guess of the mode. For
most waveguides, this is based on the waveguide dimensions, and the waveguide
used is marked with a G in the Waveguide Properties window. However, this is not a
good choice for photonic crystals, since the mode is not likely to be centred on one of
the holes. As a result, it is better to specify the starting field manually. To make these
settings for this example
1 Go to Solving >>Solver parameters >>ADI tab
2 In Solver panel, select Complex
3 In Mode Panel, select Full Vector Initial Excitation along X
4 Number of points in Mesh =350 in X an Y
5 Number of Modes =1
6 Wavelength =1.55
In the Settings tab
1 Click Properties in the Starting Field panel
2 Select type User Defined
3 For the Center Point enter X =0 and Y =0
4 For Width, enter Halfwidth X =1 and Halfwidth Y =1
5 Click OK
6 Click OK
Then start the mode solver from Solving >>Solve ADI >>Run ... The result should
be as in Figure 6.
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
109

Figure 6 Photonic Crystal mode for fibre of Ref. 1
References
[3] T.A. Birks, J .C. Knight, P. St. J . Russell, Endlessly single-mode photonic crystal fiber, Optics
Letters Vol.22 No. 13 p961-963 (1997)
OPTIMODE TUTORIAL 5 - PHOTONIC CRYSTAL FIBRE AND VB SCRIPT
110
OPTIMODE XS LAYOUT DESIGNER
111
OptiMode XS Layout Designer
When you create a new project in OptiMode XS Layout Designer, the following
window appears.
Figure 1 OptiMode Project Layout Window
Main parts of the GUI
The OptiMode Layout Designer GUI contains six main windows:
Layout window
Layout Designer dialog
Ref Index
Scripting
Notes
Output
OPTIMODE XS LAYOUT DESIGNER
112
Layout Window
Figure 2 Layout window is a schematic view of the transverse plane
The Layout window is a schematic view of the transverse plane. The cross sections
of the waveguides are shown as their exact ideal shapes. This is in contrast to the
Refractive Index view, where the view shows the refractive index after application of
the calculation mesh. In the Layout view, all shapes can be moved by mouse, and the
relevant dialog boxes for properties can be opened as well.
Layout Designer Dialog
Figure 3 Layout Desinger Window
This dialog is used to edit the cross section layout and its components.
Refractive Index window
The Refractive Index window displays the refractive index of the main layout.
OPTIMODE XS LAYOUT DESIGNER
113
Figure 4 Refractive Index display
Scripting window
The Scripting window displays the Visual Basic script code to be used in the project.
Figure 5 Scripting Window
Notes window
Write important notes that you can refer to at any time. You can write the notes in any
format, and they are saved with the layout. The notes you write in the Notes window
appear in the Open dialog box when you select the project file.
OPTIMODE XS LAYOUT DESIGNER
114
Figure 6 Notes Window
Output window
The Output window can be moved around from its original location. The Notification
and Error tabs are there as tools to display any notifications or errors that may occur
in the application. The Error tab is only for layout objects.
Figure 7 Output Window
OPTIMODE XS LAYOUT DESIGNER
115
Main menu bar
The Main menu bar contains the menus that are available in OptiMode Layout
Designer. Many of these menu items are also available as buttons on the toolbars.
Figure 8 Main Menu bar
Toolbars
Select the toolbars that you want to have availble in the main layout window.
File
Contains the buttons to perform all typical
windows application actions. Available in
all views.
Scripting
Available in all views.
3D Graph
Only available in the Ref Index 2D XZ
Plane view.
Ref Idx. View Type
Only availale in the Ref Index view.
Tools
Only available in layout view.
Zoom
Only available in layout view.
OPTIMODE XS LAYOUT DESIGNER
116
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
117
OptiMode Layout Designer menus and buttons
This section describes the menus and buttons available in OptiMode Layout
Designer.
File menu
File menu item Toolbar
button
Description
New (Ctrl+N)
Create a new project. When a new project is created, the Initial Properties dialog
box appears.
Open (Ctrl+O)
Opens an existing project. Select the project from the Open dialog box.
Close
Closes the active project. You are prompted to save changes.
Save (Ctrl+S)
Saves the active project under the current name in the default location.
Save As
Saves the current project with a different name and in a location that you select.
The SaveAs dialog box contains a special feature that allows you to write a quick
memo about the file for future reference.
Print (Ctrl+P)
Prints the active project.
Print Preview
Displays how the printed page will appear.
Print Setup
Allows you to set up the printer, page size, orientation, and allows you to set other
printing options.
Recent files
Lists the most recent files that you worked on.
Exit
Closes OptiMode Layout Designer.
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
118
Edit menu
Edit menu item Toolbar
button
Description
Undo (Ctrl+Z)
Allows you to undo the last change made in the work layout. You can undo all actions
until the last saved opetation.
Redo (Ctrl+Y)
Allows you to redo the last change made in the work layout. You can redo an action
immediately after you undo an action to reverse the effect of the undo action.
Cut (Ctrl+X)
Removes all selected devices and places them on the clipboard.
Copy (Ctrl+C)
Allows you to copy selectged devices to the clipboard. The selected devices remain
in the active project.
Paste (Ctrl+V)
Copies devices from the clipboard and pastes them in a user-defined location_the
same substrate, a new file or another application.
Delete
Allows you to delete all selected devices.
Select All (Ctrl+A)
Use to select the entire contents of the layout to cut, copy or delete.
Move To Front
Select the item to move. Reaaranges the stacking order by moving the selected
object to the front of the layout. Areas of the object overlapped by other objects will
be masked out.
Move To Back
Select the item to move. Reaaranges the stacking order by moving the selected
object to the back of the layout. Areas of the object overlapped by other objects will
be masked out.
Move Up one
Level
Select the item to move. Rearranges the stacking order by moving the selectged
object one position up (closer to the top).
Move Down one
Level
Select the item to move. Rearranges the stacking order by moving the selected
object one position down (closer to the bottom).
Wafer Properties
Opens the Wafer Properties dialog box. You can change the length, width, and
material of the wafer.
Default
Waveguide

Opens the Waveguide Default dialog box. You can change the default waveguide
width and profile.
Profiles and
Materials

Opens the Profile Designer. You can edit the existing profiles and materials, or add
new profiles and materials.
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
119
View menu
View menu item Toolbar
button
Description
Toolbars

For more information, see Toolbars on page 115. When you select a toolbar, a
check mark appears next to the name of the toolbar in the Toolbars menu.
Status Bar
Select to display the Status Bar. Displays the coordinates of the cursor position.
Output Window

Select to display the Output Window. Displays notification and error messages
regarding the script.
Color Spectrum
Select to display the Color Spectrum. Displays the colors available for the
waveguides in the layout. By default the COlor Spectrum is selected.
Workbook Mode
Allows you to switch between open layout files using the Tab key. If you do not
choose this method for switching between files, use the windows menu.
3D Graph Items
Palette
Toggles the Visualizer Palette on or off.
Axis
Toggles the Axis on or off.
Height Plot
This button will toggle to the 3D view. If this button is selected, the Plane view and
Visualizer button will be disabled.
For each data element in the data array (matrix), there is a (x,y,z) point. The x value
=data elements column index to x (horizontal position), its row index =y (vertical
position), and its data elements value =z (refractive index value). Depending on the
current GraphStyle (Height Plot Settings), these points may be displayed as
individual points, or connected to form either lines or a surface.
Image Map
For each data element in the matrix, there is a (x,y) point. The x value =data
elements column index, the y value =row index, and the color is based on the
current color Palette. The collection of points is drawn as a 2D image.
Note: For the Avis2D toolbar to be activated, the Refractive Index tab must be
selected. This can also be found under the View menu, in case this toolbar is not
displayed.
Plane View (XZ)
Toggles the (XZ) view on or off.
Plane View (YZ)
Toggles the (YZ) view on or off.
Zoom In
Increases the image in the layout by 1.00000 times for the first ten clicks.
Zoom Out
Decreases the image in the layout by 1.00000 times for each click.
Pan Left
Is available only if the Zoom In option has been activated. The Pan Left command
moves the selected area to the left.
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
120
Pan Right
Moves the selected area to the right.
Pan Up
Moves the selected area upwards.
Pan Down
Moves the selected area downwards.
Refractive Index Data Type
Real
Optical field described by real numbers.
Imaginary
Optical field described by imaginary numbers.
View menu item Toolbar
button
Description
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
121
Layout Menu
Solving Menu
Layout menu
item
Toolbar
button
Description
Select
This command allows you to select any object in the layout. This command also
returns your cursor to regular mode if something else has been selected.
Zoom
Allows you to increase or decrease the magnification of the current view.
Snap to Grid
Controls the coordinates for drawing and moving waveguides and input planes.
Coordinates are snapped (i.e. set) to the nearest grid intersection on the layout.
Solving menu
item
Toolbar
button
Description
Edit Parameters
Opens the Parameters and the Functions dialog box. You can add or modify
parameters, user variations, and user functions.
Solver Parameters
Opens the Solver Parameters dialog box with the currently available solving tab
options. You can set solver specific parameters, set the number of modes to find,
define the Mesh Parameters and wavelength, and select to run the simulation from
script.
Solve ADI
Displays the Solver Parameters dialog box with only the ADI tab. Click OK to start
the ADI solve.
Solve AnIso
Displays the Solver Parameters dialog box with only the AnIso tab. Click OK to start
the AnIso solve.
Solve FibreLP
Displays the Solver Parameters dialog box with only the Fibre tab. Click OK to start
the FibreLP solve.
Solve FibreVector
Displays the Solver Parameters dialog box with only the Fibre tab. Click OK to start
the FibreVectore solve.
Solve Finite
Difference

Displays the Solver Parameters dialog box with only the Fibre tab. Click OK to start
the Finite Difference solve.
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
122
Tools menu
Preferences menu
Tools menu
item
Toolbar button Description
Parameter
Sweep

This displays the Parameter Sweep dialog.


Run
Optimization

This displays the Optimization dialog for engaging the optimizer.


Optimization
Results

Display the latest optimization results.


Run Script
Runs the VBScript listed in the Scripting tab.
Generate
Template Script

Generates a template script.Overwrites the current script and appears in the


Scripting window.
Generate Layout
Script

Generates a layout script. Overwrites the current script and appears in the
Scripting window..
Generate
Scanning Script

Generates a scanning script. Overwrites the current script and appears in


the Scripting window.
Generate
Dispersion
Script

Generates a dispersion producting script. Overwrites the current script and


appears in the Scripting window.
Preferences
menu item
Toolbar button Description
3D Graph Settings
Saves the settings from the Visualizer dialog boxes. The settings that you choose for the 3D view are restored the next time
you open OptiBPM.
You must be in the Ref. Index layout, and you must clear the Save On Close option.
Region Of
Interest

In the Region of Interest dialog box, you can change the properties of the
axis direction. You can select a region for viewing the data then enter this
data into the edit field.
Height Plot
Settings

In the Height Plot Setting properties box, you can select five different
styles: Wireframe, Surface, Barchart, Lines, and Points.
Axis Settings
Displays the Axis Settings dialog box. You can select settings for the X, Y,
and Z axes.
Image Map
Settings

Opens the Image Map Settings dialog box. You can can set the image
orientation, aspect ratio, and grid density.
Palette Settings
Opens the Palette Settings dialog box. You can select different settings for
the palette.
Data Clamping
Settings

Opens the Data Clamping Settings dialog box. You can select different
settings for the refractive index XZ-plane axis and the sampling resolution.
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
123
Window menu
Help menu
Show slice
selector

A slider opens and you can move through the entire propagation length to
see each individual graph slice.
Save 3D Graph
Settings

To enable the Save 3D Graph Settings menu item, the Ref. Index tab must
be selected, and the Save On Close menu item must be unchecked.
Selecting Save 3D Graph Settings saves the settings from the 3D Graph
Dialog boxes, accessed in the View menu, or by right-clicking the R.I. View.
The next time OptiBPM Layout Designer runs, these settings will be
restored.
Save On Close
Saves the settings automatically when you close OptiBPM.
Refractive Index View
3D Slice (XY
Plane)
Displays the 3D slice view of XY plane.
Epsilon
Displays the various components of the XY plane.
Window menu
item
Toolbar button Description
Cascade
Arranges all open project layout windows in a cascading format.
Tile
Arranges all open project layout windows in a tile format.
Arrange Icons
Arranges minimized open windows along the bottom of the layout window.
Open files
List of all OptiMode files that are currently open.
Help menu
item
Toolbar button Description
Help Topics
Provides information on OptiMode.
About OptiMode
Designer
Provides information about Optiwave - mailing address, telephone and fax
numbers, e-mail address, and URL.
Preferences
menu item
Toolbar button Description
OPTIMODE LAYOUT DESIGNER MENUS AND BUTTONS
124
OPTIMODE LAYOUT DESIGNER FUNCTIONS
125
OptiMode Layout Designer functions
This section contains descriptions of the functions and dialog boxes that you access
from OptiMode Layout Designer menus. Note: Standard Windows functions and
dialog boxes are not described.
New
When you click New, the Initial Properties dialog box opens.
Figure 9 Initial Properties Dialog box
Initial Properties dialog box
After choosing New from the File menu, you must define the default waveguide cross
section and wafer parameters in the Initial Properties dialog box. In the Initial
Properties dialog box, you define the initial data for new waveguide objects. You can
change this data at any time during your work. When you enter a symbolic name
instead of numeric data, the program searches for known names, if the parameter is
not recognized, the program considers it as a new parameter and prompts for its
value.
Entry boxes that are marked by the symbol can accept expressions. When you
enter an expression instead of numeric data, the program parses the expression into
parameters. If any parameter is not recognized, the program considers it as a new
parameter and prompts for its value. When you open the Initial Properties dialog box,
only the default settings for waveguides are available. You must create the profiles
and materials that you want to use. You can then replace the default settings with the
profiles and materials that you create.
f

OPTIMODE LAYOUT DESIGNER FUNCTIONS


126
You can set the following properties in the Initial Properties dialog box:
Default Waveguide Properties
3D Wafer Properties
These settings can be changed at any time using the Edit menu.
Note: Any profile or material that begins with the word =default (case insensitive)
is automatically copied into the library associated with the layout.
Default Waveguide properties
In the Default Waveguide dialog box, the value entered in the Width box is used in
drawing waveguides from the library. A profile specifies the default waveguide profile
by name. If there are no profiles listed, you can click the Profiles and Materials
button to display the Profile Designer and define a new profile. For more information,
refer to the Profile Designer on page 181.
Figure 10 Default Waveguide Properties tab
Width: The default width of the waveguide drawn in the layout.
Profile: The Profile (defined in the Profile Designer) used by default for waveguides
drawn in the layout.
Note: If no profile has been selected, you will be prompted to specify a default
waveguide profile.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
127
Figure 11 Missing Default Waveguide prompt
Profiles and Materials: Click here to open the Profile Designer to define and edit
Profiles and Materials.
3D Wafer Properties tab
This tab specifies the width, substrate, cladding, and the boundaries of the calculation
window. Entry boxes that are marked by the fx symbol can accept expressions. When
you enter an expression instead of numeric data, the program parses the expression
into parameters. If any parameter is not recognized, the program considers it as a new
parameter and prompts for its value. For 3D wafers, the wafer thickness is the sum of
the cladding and substrate data. The 3D Wafer Properties tab helps to define the
wafer default properties.
Figure 12 3D Wafer Properties tab
OPTIMODE LAYOUT DESIGNER FUNCTIONS
128
Width: This is the width of the calculation window. The simulation will be performed
on a region where the X coordinates span from Width / 2 to +Width / 2.
Cladding: The combo box specifies the material to be used in the cladding. The
cladding is on top of the substrate. (Cladding exists in region 0 <Y <Thickness).
Substrate: The combo box specifies the material to be used in the substrate. The
substrate is below the cladding. (Substrate exists in region Thickness <Y <0).
Figure 13 Orientation of 3D Coordinate System
Figure 13 is drawn from a point of view of being behind the screen when the screen
is displaying the Layout view. In this view, the orientation is such that the user is
looking toward the source of the light. The user is at a position of positive z looking
toward z =0. All representations of the transverse plane have this orientation in
Optiwave software.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
129
Profiles and Materials:
To create the profiles and materials, click Profiles and Materials. The Profile
Designer appears.
Figure 14 Profile Designer
The Profile Designer initially displays the Master Library Contents and the OptiMode
XS Designer Library contents of your layout. These are located in the browser on the
left hand side of the screen. You define the materials and channels to use for the
project in the Profile Designer (for more information on the Profile Designer,Profile
Designer on page 181.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
130
Open
Select Open to open the Open dialog box.
Figure 15 Open Dialog box
The Open dialog box displays the existing .mxd files. A brief description of the
selected file appears in the window at the bottom of the dialog box.
Save As
Select to open the Save As dialog box.
Figure 16 Save As Dialog box
When you save the file, the . mxd file extension is applied automatically.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
131
Wafer Properties
Wafer Properties dialog box
Select Wafer Properties to change the wafer properties.
Figure 17 Wafer Properties dialog box - Wafer Dimensions tab
For a description of the fields see the .3D Wafer Properties tab. section on page 28.
Default Waveguide
Select Default Waveguide to change the default waveguide cross section width and
profile.
Figure 18 Default Waveguide Dialog box
OPTIMODE LAYOUT DESIGNER FUNCTIONS
132
Waveguide Default Width: The default width of a waveguide added to the project.
Waveguide Default Profile: The Profile (defined in the Profile Designer) used by
default for waveguides added to the project.
Profile Designer: Opens the Profile Designer to define and edit Profiles and
Materials.
Profiles and Materials
To open the Profile Designer and create a new material, click Profile Designer. For
more information, Profile Designer on page 181
Toolbars
Select the toolbars that you want to make available for the project that you are working
on.
Output Window
The Output Window displays notifications and error messages.
3D Graph Items
To view the following items in the layout, from the View menu, select 3D Graph Items,
and then select the item that you want to view. A check mark appears beside the
selected item.
Note: The 3D Graph Items are only available in the Ref. Index 2D XZ Plane
View window.
Figure 19 Graph Items - selected items
OPTIMODE LAYOUT DESIGNER FUNCTIONS
133
Palette: Displays the color palette beside the graph.
Figure 20 Palette
For more information on the palette, see .Palette Settings. on page 43.
Axis: Displays the X-Axis and Y-Axis around the graph.
Height Plot: Displays the height plot view of the graph.
Figure 21 Height Plot view
Image Map: Displays the image map view of the graph.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
134
Figure 22 Image Map view
Plane View (XZ): Displays the plane view along the X and Z axes.
Figure 23 Plane View (XZ)
OPTIMODE LAYOUT DESIGNER FUNCTIONS
135
Plane View (YZ): Displays the plane view along the X and Y axes.
Edit Parameters: Select Edit Parameters to open the Variables and Functions
dialog box.
Figure 24 Variables and Functions dialog box
OPTIMODE LAYOUT DESIGNER FUNCTIONS
136
Solver Parameters
Select Solver Parameters to open the Solver Parameters dialog box.
Figure 25 Solver Parameters Dialog box
Run Script
Scripts executed by OptiMode Layout Designer use calls to the Solving API to update
the layout geometry. This enables you to view changes made to the layout by the
script. Scripts can be created manually by typing in the scripting tab, automatically
using some combination of scripting tools, or any combination of manual or automatic
script generation. You can automatically generate part of the script and then manually
modify the script to suit your needs. To run a script, from the Solving menu, select
Run Script.
Generate Template Script
Creating a template script generates a script that is based on the layout objects. This
means that a scripting equivalent of the design will be created. The labels are
generated dynamically. This script can be run repeatedly, creating a kind-of
copy/paste mechanism. This scripting feature is a good way to become familiar with
the properties of different layout objects. You can create a waveguide, set the
properties for the waveguide, and generate the template script. To run a template
script, from the Solving menu, select Generate Template Script.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
137
Generate layout script
Creates a layout script that is an exact representation of the layout design. Like the
template scripts, the layout script generates script equivalents for waveguides, and
input planes. However, the IDs for the objects will be the same as the IDs in the layout.
Generate scanning script
A scanning script is used primarily as a mechanism to scan parameters. You can scan
parameters and manipulate waveguides together in a single script. For example, you
can create a layout with all waveguides having a width set to a .ParamWidth.
parameter. When the scanning script runs, the .ParamWidth. value will update as
required, thus changing all waveguide widths at the same time.
Dispersion scripting
To create a Dispersion script (using an existing layout with at least one waveguide),
click the .Generate Dispersion Script. option in the Solving menu. The Dispersion
Scan dialog box appears.
Figure 26 Dispersion Scan Dialog box
Initial: Wavelength used for the first simulation, a real value in microns.
Final: Wavelength used for the last simulation, a real value in microns. This value has
to be greater than the value in Initial.
Steps: The number of wavelengths to be used. The script will linearly divide the range
defined by Initial and Final wavelengths to compute the wavelength used at any
given step. The default value is 3. The value cannot be less than three because first
and second order derivatives will be calculated. Note: When using dispersion
scripting, Solver Parameters are updated.
To open the Solver Parameters dialog box and define the solver parameters, from
the Solving menu, select Solver Parameters. In Wavelength, the variable
.ScanWavelength appears which follows the interval defined by Initial and Final
wavelengths. The .Use Script. option is automatically selected.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
138
Parameter Sweep
The parameter sweep feature is available to easily run a set of solves with changing
parameters without having to write VB script. To create a parameter sweep, click
Parameter Sweep in the Tools menu. The Parameter Sweep dialog box appears.
Figure 27 Parameter Sweep GUI
Parameters: Press this button and the Parameter Selection dialog box will appear.
Use this to choose/alter the parameters that will define the sweep.
Figure 28 Sweep Parameter Selection
OPTIMODE LAYOUT DESIGNER FUNCTIONS
139
Graphs: To define 2D results graphs in the output, choose the Graphs button. The
User Defined Graphs dialog will appear.
Figure 29 2D Graph Summary
To remove a graph, choose the graph in the User Defined Graphs list and click
Remove.
To Add or Edit a graph, click the appropriate button and teh following dialog will
appear.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
140
Figure 30 2D Graph Definition
In the Add/Edit graph dialog, the graph title and X/Y axis names can be entered. The
list boxes present what values can be put on the axis and how data sets will be
grouped in the legend. Defined graphs will be shown at the bottom of the browser tree
by name in the Analyzer.
Figure 31 2D Results Graph Selection
Sweep Data vs Final Data
The Sweep/Final radio buttons toggle between views of the data ranges and the final
data used for a given iteration step.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
141
Figure 32 Sweep Range Data
Figure 33 Sweep Final Values
In the above examples, lambda has a sweep range of .15 to .55. But when the solver
runs, the value at iteration one will be 8, at two, 7, etc. Ranges can be defined for
parameters but the final values used in the sweep can be overrideen separately. In
normal use, setting a range will set the final values to be the same by default and no
further changes need to be made.
Spread Tools
The various buttons in this frame can be used to generate ranges in the parameter
columns according to function. First select a column in the parameter grid, then
choose a function:
OPTIMODE LAYOUT DESIGNER FUNCTIONS
142
Assign: Assigns a single value to all rows of the parameter
Figure 34 Assign Spread Tool
Linear/Exp/Log: Assigns a Linear/Exp/Log range of values to the rows of the
parameter.
Figure 35 Range Spread Tool
Formula: Takes a user-defined function and computes a range of values to the rows
of the parameter.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
143
Figure 36 User Function Spread Tool
Level Functions
Figure 37 Sweep Folder Node Options
Right-click on the folder icon of the display tree to:
Set the number of iterations to sweep over
Add/Remove levels to sweep
Add more parameters
OPTIMODE LAYOUT DESIGNER FUNCTIONS
144
Parameter Functions
Figure 38 Sweep Parameter Node Options
Right-click on a parameter in the display tree to:
Remove a aparameter from the sweep
Move a parameter between levels by left-clicking on it and drag/drop it into another
folder.
This effectively sets the variance dependencies.
Figure 39 Sweep Parameter Movement Options
Run Optimization
To run an optimization of selected parameters in the project, select run Optimization
from the Tools menu.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
145
Figure 40 Optimization Settings
Pick the parameters to optimize from the list on the left. Use the Add/Add
All/Remove/Remove All buttons to move parameters in and out of the selected right
side list. Before choosing Optimize, the following options can be set:
The deviance for each parameter
The Merit function and tolerance
The type of solve to use (Complex ADI, Real ADI, Aniso, FiberVector,
FiberLP)
The type of optimizer to use (Golden Search, Modified Powell, Nelder-
Mead Simplex)
Optimization Results
To view optimization results, choose Optimization Results from the tools menu.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
146
Figure 41 Optimization Results
Load: Press this button to load the values of the optimizing parameters at Iteration
to Load into the project.
Export: Press this button to export the iteration values to a comma separated value
(.csv) file.
Analyzer File Path
When you have edited an existing layout and want to run the solver, you make your
solver selection from the Solving menu. When you have made the selection, the
Solver Parameters dialog box appears.
If you click Run, a dialog box appears that asks if you want to make the changes to
the original OptiMode designer file before the simulator is launched.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
147
Figure 42 OptiMode Designer File Change Dialog box
If you click Yes, the original layout design file is changed to reflect the modifications
you made to the design, and then the simulator is launched. If you click No, the
Analyzer File Path dialog box appears, asking for the file path/name for the
temporary simulation results file to be created. Click the Browse button to change the
default location. The results saved in this temporary file are used by the OptiMode
Analyzer when the simulation is complete.
Figure 43 Analyzer File Path Dialog box
OPTIMODE LAYOUT DESIGNER FUNCTIONS
148
3D Graph Settings
You must click the Ref. Index (n) 3D XY Plane View tab before you can select items
from the 3D Graph Settings submenu.
Figure 44 Graph Settings Menu and Submenu
Region of Interest
To change the start and end positions of the X and Y axes, from the .Preferences.
menu, select .3D Graph settings >Region of Interest.. The Region of Interest
dialog box appears.
Note: The start and end values must be integers between 0 and 500.
Figure 45 Region of Interest Dialog box
OPTIMODE LAYOUT DESIGNER FUNCTIONS
149
Height Plot Settings
To change the appearance of the graph, from the .Preferences. menu, select .3D
Graph settings >Height Plot Settings.. The Height Plot Settings dialog box
appears.
Note: Height Plot Settings is only available when the graph is in 3D view.
Figure 46 Height Plot Settings Dialog box
Style: Under Style, you can select from five different styles for the graph.
Rendering: Under Rendering, you can select the type of color interpolation.
Highlighting: The surface area has a more realistic image. However, the highlights
can make it difficult to determine the true color value of the region in the graph.
Depth cue: Fades out less prominent parts of the graph, providing an enhanced
perception of the graph.
Hidden Line: This retrieves the line segments that are behind part of the graph. This
will not take effect unless the graph style is Wireframe or Lines.
Show Grid: This displays grid lines in the graph.
Grid Density slider: Move the slider to adjust the spacing of the grid lines.
Lowgrid lines are spaced far apart
Highgrid lines are spaced close together
OPTIMODE LAYOUT DESIGNER FUNCTIONS
150
Axis Settings
To change the appearance of the axes, from the Preferences menu, select 3D
Graph settings > Axis Settings. The Axis Settings dialog box appears.
Figure 47 Axis Settings Dialog box
Show Axis: This displays the graph axes.
Font Auto Detail: This changes the font size automatically according to the size of
the graph window.
Use Axis Scales: Determines how the array data values are scaled. These can be
scaled either to the graphs X and Y coordinate axes or to the graphs z coordinate
axis.
Axis Style: There are 21 styles available from the drop-down menu. These styles
determine how many faces of the view volume are to be displayed.
X-Axis: This setting will include the label, major ticks and minor ticks.
Y-Axis: This setting will include the label, major ticks and minor ticks.
Z-Axis: This setting will include the label, major ticks and minor ticks.
Image Map Settings
To change the appearance of the graph, from the .Preferences. menu, select .3D
Graph settings >Image Map Settings.. The Image Map Settings dialog box
appears.
Note: Image Map Settings is only available when the graph is in the image map
view.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
151
Figure 48 Image Map Settings Dialog box
Image orientation: Under Image orientation, you can adjust the position of the Y
and X axes.
Y: Move the Y axis to the left or to the right of the graph.
X: Move the X axis to the top or to the bottom of the graph.
Aspect ratio: Under Aspect ratio, you can select to view the graph in Real
dimensions (one-to-one ratio) or Window dimensions (fits to screen). The ratio of
width to height is maintained by the number of points in the array (Y or X) when the
graph window is resized.
Grid Density slider: Move the slider to adjust the spacing of the grid lines.
Lowgrid lines are spaced far apart
Highgrid lines are spaced close together
Linear Filter: Select Linear Filter to blend the adjacent colors of the Image Map
graphs. If you do not select Linear Filter, the graph will have a tiled appearance.
Show Grid: Displays the grid lines are displayed along the graph.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
152
Palette Settings
To select the color palette or to change how data values for the graph map to colors
in the palette, from the Preferences menu, select 3D Graph settings >Palette
Settings. The Palette Settings dialog box appears.
Figure 49 Palette Settings Dialog box
Use Palette: The current color palette is enabled for graphing.
Auto Adjust: Determines how the data values for a graph are mapped to colors. If
you select this option, the minimum data value in the region of interest maps to the
bottom of the palette color range, and the maximum data value maps to the top of the
palette color range. All other values map to the color palette proportionally.
Show Palette: Displays the color palette to the right of the graph.
Show Labels: Displays the labels to the right of the color palette. It has no effect if
the color palette is not shown.
Palette Id: Changes the palette which is used to map data values to colors.
Palette Range: Determines how the data values for a graph map to the current color
palette. If you do not select Auto Adjust, the palette range has no effect.
Data Clamping Settings
To change the refractive index and the sampling resolution for the graph, from the
Preferences menu, select 3D Graph settings > Data Clamping Settings. The
Data Clamping dialog box appears.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
153
Figure 50 Data Clamping Dialog box
Refractive IndexXZ PlaneAxis: Under Refractive IndexXZ PlaneAxis, select
the scale for the XZ plane axis.
Auto scale: Select the Auto scale check box to use the default scale, or clear the
Auto scale check box and type Scale Min and Scale Max values that you want to
use.
Clamp data: Only available when the Auto scale check box is cleared. Data greater
than the clamping number is represented as the clamping.
Cut-off: Only available when the Auto scale check box is cleared. Sets the lower and
upper boundaries for the third coordinate value. Data above the cut-off is completely
eliminated.
Figure 51 Clamp and Cut-Off
OPTIMODE LAYOUT DESIGNER FUNCTIONS
154
Sampling Resolution: If the resolution is set to 1, there is a one-to-one mapping of
data points to the points in the graph. If the resolution is set to 2, only one out of four
data points is displayed. Higher incrementing of the resolution value decreases the
detail level of the graph. For example, a resolution of 3 would draw one out of 16
points.
Note: Using a lower resolution value (for example 1) enables a more accurate
depiction of the data values in the graph, but can result in slow rendering when
data sets are large.
Auto Adjust: Determines whether the level of detail for graphing will be handled
automatically or with a resolution number. If you select the Auto Adjust check box,
the resolution of the graph is adjusted dynamically so that the performance matches
the demands set by any user activity.
Refractive Index View
Under Refractive Index View, you can:
view a 2D (XZ plane) slice of the graph
view a 3D (XY plane) slice of a graph
Figure 52 RIDX View
OPTIMODE LAYOUT DESIGNER FUNCTIONS
155
Data Visualizer for 64-bit Applications
The 64-bit versions of Layout Designer, Simulators, and Analyzer feature a new
redesigned data visualizer (e.g., for the display of the refractive index, etc.). The
interaction with the visualizer differs from the previous 32-bit version visualizer and is
summarized below.
All interactions with the visualizer are performed using the mouse and keyboard
shortcuts. The specifics differ depending on the Height Plot (Surface) or Image Map
view type. The color palette is enabled by default and is situated at the right side of
the view. The palette and axes can be toggled using the provided GUI functionality.
Zooming in and out - All views
Zooming in and out can be performed using the middle mouse scroll wheel.
Pan, move - All views
Pressing the Right-Mouse-Button and moving the mouse can be used to pan around
the view area.
Rotation - Height Plot (Surface) view only
Pressing the Left-Mouse-Button and moving the mouse can be used to rotate the
camera view.
Pan - Height Plot (Surface) view only
Pressing the SHIFT-key +Left-Mouse-Button can be used to pan the view area
Rotation-spin - Height Plot (Surface) view only
Pressing the CTRL-key +Left-Mouse-Button can be used to spin the camera
Zoom in and out - Height Plot (Surface) view only
Pressing the SHIFT-key +CTRL-key +Left-Mouse-Button can be used to zoom the
camera.
The current orientation of the view is shown by the three X-Y-Z axes displayed in the
lower left corner of the window. These axes are aligned with the dimensions and axes
of the displayed objects.
Switching between the view types will reset the plot (camera) to its default state.
Point Selection
The user has the ability to select a grid point of the displayed objects in Height Plot
(Surface) and Image Map views. A click with the Left-Mouse-Button anywhere within
the object will select the closest data grid point. Information about the data point is
provided in the status text displayed at the bottom of the window.
OPTIMODE LAYOUT DESIGNER FUNCTIONS
156
LAYOUT OBJ ECTS
157
Layout Objects
There are basically three types of objects available for use in the OptiMode designer:
A cross section waveguide
A substrate layer definition
A refractive index file definition
You can place any number of any cross section waveguides in the layout. You can
resize and move waveguides anywhere in the wafer by changing their properties.
Only one refractive index file definition can be used.
Waveguide vs. wafer
Waveguide width and wafer width
Waveguide width and wafer width are independentthe waveguide can control its
width. The wafer width is scaled to match the waveguide width at every point along
the waveguide. All elements in a wafer are scaled by the same factor.
LAYOUT OBJ ECTS
158
Figure 53 Waveguide Width and Wafer Thickness
LAYOUT OBJ ECTS
159
Depth description
In OptiMode, the coordinate system is different from the OptiBPM layout view.
OptiMode deals with a cross section of the wafer and therefore Y is the OptiBPM
depth and X is profile centering (OptiBPM Y).
Figure 54 Coordinate System
The fiber profile origin is at the center point of the profile. The channel profile origin is
at the bottom of the profile. The diffuse profiles are always fixed at a depth =0.0, and
extend down into the substrate.
Figure 55 Depth / Y- value
LAYOUT OBJ ECTS
160
Depth =0 at the substrate-cladding interface
Depth <0 in the substrate
Depth >0 in the cladding
Depth =cladding thickness at the top of the wafer
Depth =-1 * substrate thickness at the bottom of the wafer
Initial data
The program needs initial data for display and solving. You can change these values
at any time. Data entry boxes that are marked by the fx symbol can contain an
expression. When you enter a symbolic parameter name instead of numeric data, the
program looks for known names. If the parameter is not recognized, the program
considers it a new parameter and prompts for its value. The cladding is a box that you
design devices in. The width is along the discretization mesh in the X-direction. The
height is along the discretization mesh in the Y-direction. All refractive indices can be
complex numbers.
User Interface of a Parameterized position of a Layout Shape
Position of most of the shapes placed on the Layout, like cross section waveguides,
can be parameterized with user-defined parameters. In such cases, a coordinate
(horizontal or vertical) of the layout object position is calculated from the Expression
and Offset values:
Position =Expression +Offset
Parameterization is a very useful feature. Take for example when it is required to
adjust the position of a group of waveguides all at the same time. When a group of
waveguide positions are parameterized with respect to a specific parameter, you can
easily reposition all the waveguides in the group to a desired location by changing the
value of the parameter.
Figure 56 Typical user interface of parameterized Horizontal coordinates
Expression: Accepts arithmetical expressions. You can use standard mathematical
functions like sin(), cos(), sqrt(), etc. as well as your own parameters and functions
defined in the .Edit Parameters. dialog box found under the menu .Simulation ->
Edit parameters..
Offset: Accepts numerical values. The Offset value is added to the value of the
Expression, which combined produce the final value of the waveguide Position.
Therefore if the position of the waveguide is parameterized (in the Expression), you
can still move the waveguide in the layout designer to adjust the position manually,
without affecting the Expression.
LAYOUT OBJ ECTS
161
Position: The effective position of the waveguide determined by Expression and
Offset:
Position =Expression +Offset
It is a display-only field. The effect of parameterization is reflected in the Position
value. When the value of an Expression changes the resulting value of the Position
is updated.
Adding and editing layout objects via the Layout design dialog
This dialog is used to edit the cross section layout and its components. Double-click
on a given object to edit the properties.
Figure 57 Layout Design Dialog
Toolbar options are:
- Add a waveguide cross section.
- Add a substrate region cross section.
- Add a user file refractive index definition. When in use, this is the only object
allowed on a layout.
- Remove an object.
- Move selected object up in order.
- Move selected object down in order.
Cross Section Waveguide Properties dialog box
To change the properties, double-click a waveguide in the layout designer dialog to
open the XS Linear Waveguide Properties dialog box.
LAYOUT OBJ ECTS
162
Figure 58 Linear Waveguide Properties Dialog box
X Position: Type the center for the waveguide. The center is the position of the
waveguide in the X-direction with respect to the width of the wafer.
Expression: can contain parameters defined using the Edit Parameters dialog box
found under the Simulation menu >Edit parameters.
Offset: enter value to use with Expression that sets the exact position of the
waveguide.
Position: exact horizontal position of waveguide determined by Expression and
Offset.
Remember that these coordinates are different from OptiBPM where you would be
viewing from the top of the waveguide.
Y Position: Represents the position on the y-axis of the waveguide with respect to
the top of the substrate. It can be scanned as a parameter. This is equivalent to the
depth in OptiBPM.
Width: Type the width for the waveguide. The width is measured in microns. It can be
scanned as a parameter.
Height: Displays the thickness of the waveguide.
Label: The label is a default name that you can change. The new label must be
unique among all the labels.
Profile: Every waveguide must be assigned a profile. Select a profile from the Profile
dropdown list. To add profiles to this list, click the Profiles In Use button.
Profiles in Use: Click Profiles in Use to open the Profile Designer and create
profiles and materials. For more information on creating profiles and materials,
Profile Designer on page 181
LAYOUT OBJ ECTS
163
Regions
There are two regions available in OptiMode Layout Designer:
Substrate Region
User File Region
Substrate Region
Substrate Region dialog box
To access the properties of the Substrate Region, double-click a substrate region
object in the layout designer dialog to open the Substrate Region dialog box.
Figure 59 Substrate Region Dialog box
Name: The name is a default label that you can change. The new label must be
unique among all the labels.
OK: Click to save changes to the region.
Cancel: Click to cancel operation.
Help: Click to load Help files.
Substrate tab
Profile and Material in Use: Click Profile and Material in Use to open the Profile
Designer.
LAYOUT OBJ ECTS
164
Substrate Layers
The Substrate layers window displays the names of the substrate layers and the
settings for each layer.
Figure 60 Substrate Layers window
Delete: Click Delete to delete the layer selected in the Substrate layers window.
Add/Edit: Click Add or Edit to open the Layers dialog box and add a layer to the
Substrate layers window.
Figure 61 Layers Dialog box
Thickness: Specify the layer thickness.
Material: Specify the layer material.
Material in Use: Click .Material in Use. to open the Profile Designer.
User File Region
User File Region dialog box
To access the properties of the User File Region, double-click the user file region in
the layout designer dialog to open the User File Region dialog box.
LAYOUT OBJ ECTS
165
Figure 62 User File Region Dialog box
Name: The name is a default label that you can change. The new label must be
unique among all the labels.
OK: Click to save changes to the region.
Cancel: Click to cancel operation.
Help: Click to load Help files.
3D User File tab
Wafer Width X: Displays the wafer width in the x-direction as loaded from the data
file.
Wafer Width Y: Displays the wafer width in the y-direction as loaded from the data file.
Nx: The number of mesh points in the x-direction taken from the selected file.
Ny: The number of mesh points in the y-direction taken from the selected file.
Propagation Type: Displays the type of the refractive index distribution data file
format. There are two data file format types:
Propagation Dependent: Contains a refractive index distribution slice for every
calculation step. If the file is short of data slices, then the last loaded refractive index
distribution slices fed to the calculation engine for every remaining calculation step
within the User File Region.
Propagation Independent: Contains a single refractive index distribution slice. The
slice is loaded from the file and fed to the calculation engine for every calculation step
within the User File Region. The refractive index distribution is the same at every
calculation step, so the program does not need to read the refractive index slice after
each step.
LAYOUT OBJ ECTS
166
File Name: Displays the name of the 3D Refractive Index distribution data file that you
select. Click to access the Open dialog box.
Figure 63 Open Dialog box
File types
The program can take two types of ..rid. files: Isotropic and Anisotropic. Please see
the Appendices for more on these formats.
Isotropic header sample:
UPI3DRI 3.0
151 151
-5.0e+000 5.0e+000 -3.0e+000 1.5e+000
<data>
Anisotropic header sample:
UPI3DRIA 3.0
70 70
-5.0e+000 5.0e+000 -3.0e+000 1.5e+000
<data>
LAYOUT OBJ ECTS
167
Solving
After you complete a design project in OptiMode Layout Designer that contains all of
the required elements, you can run a solver. This section describes the solving
parameters.
Variables and Functions dialog box
The Variables and Functions dialog box is the editing environment where you can
add or modify user variables and user functions. To open the Variables and
Functions dialog box, from the OptiMode Layout Designer Simulation menu, select
Edit Parameters.
Figure 64 Variables and Functions Dialog box
User Variable tab
A user variable is helpful for constructing user functions. The user variable has a
symbolic name and a numerical value determined by an expression. The expression
defining the variable can be a mathematical formula containing existing parameters,
variables, and functions. For example, type the name Myvar and assign to it the
expression 2*pi/Lambda.
Name: Must be unique across all variables.
LAYOUT OBJ ECTS
168
Expression: Any single line mathematical equation that can be parsed by the
OptiMode parser. For more information, Appendix C: Parser supported functions on
page 317
Value: After the Name and Expression are entered, click Verify to display the value
in the edit field.
Verify button: Click to evaluate the expression and display the result in the read only
edit box.
Add/Apply button: Click to add a new variable or change existing variables.
User Variables tab: The User Variables tab displays the list of all the defined user
variables and their expressions.
Figure 65 User Variables tab
User Functions/DLLs tab: A list of user functions that have been defined and DLL
functions that have been introduced so far, using the user function and user DLL
function.
Figure 66 User Functions/DLLs tab
LAYOUT OBJ ECTS
169
User Function tab
A user function has a name and a number of symbolic arguments.
Figure 67 User Function tab
To specify the user function, enter its name followed by the arguments list in
parenthesesfor example, Myfun(x,y), where x and y are the arguments. The
function is defined by an expression that can be a mathematical formula containing
the arguments, existing parameters, user variables, and functions. At the moment of
function definition, the arguments do not have numerical values. The function is not
evaluated even if expressed with the help of additional parameters and user variables
having numerical values well defined. The function definition forms only a template.
The function will be evaluated in numerical simulations only after assigning values to
the function arguments. For example, the function can be defined as:
Myvar*Width*exp(-(x*x+y*y)), where =Width is a parameter equal to 4 and =Myvar is
a user variable equal to 3. Still, the function value is not determined since the values
of x and y is not known. You can limit the function by specifying the argument limits,
for example enter the expression: x*x+y*y<1 to limit the function domain by a circle
of radius 1. This function can also be limited by using the variable_FnRslt_which is
the function value. For example, enter the Limits expression: abs(_FnRslt_)<1 to
assure that the function is clipped when its absolute value is equal to or exceeds 1.
Click Add/Apply, add the function definition to the list of user functions. _FnRslt_
represents a result value of the base function execution for a given set of arguments.
(These are predefined for use in the Domain Function expressions.)
Parser Function Declaration
In the function specification box, you provided the function name, dltn, followed by the
argument list in parenthesis, (x,y,W). Generally, in the function expression box, you
can use the arguments and other variables. However, you may choose not to use
some of the arguments in your expression. In the present expression, we use all the
arguments x, y, and W, as well as the parameters, Dx, Dy, and F, and the user
variables, C0 and d, previously introduced. Notice that the program offers an
LAYOUT OBJ ECTS
170
extensive list of mathematical functions that are pre-defined. Here, we used the error
function, erf(...), and the exponent function, exp(...), from the pre-defined function
library. Notice that only the parameters and user variables have numerical values,
while the function arguments x,y and W are not determined yet. Their values will come
later from the layout (see below about the Argument Association dialog box).
Example Select the User Process tab. Assign the user function to the user process
as follows:
Function name: upr1(x,y,W)
Expression: dltn(x,y,W)
Process name: UserDef1:LiNbO3
Now, your function is ready to be used in the user process definition. We will assign
the index profile function dltn(x,y,W) to the user process function upr1(x,y,W).
To assign the function expression you can just drag the string 'dltn(x,y,W)' from the
User Functions tab below and drop it in the Expression box of the User Process tab.
Function specification: Specifies the function name and the parameter list.
Expression: Declares a single line function that can be parsed by the parser.
Limits: Define a set of limits on the function parameters or the function result.
Use limits check box: Determines whether or not the limits are used.
Verify button: Click to evaluate the expression and displays the result in the read only
edit box.
Add/Apply button: Click to add a new variable or change the existing variable.
User Variables tab: Displays the list of all the defined user variables and their
expressions.
User Functions/DLLs tab: A list of user functions that have been defined and DLL
functions that have been introduced so far, using the user function and user DLL
functions.
DLL Function tab
A DLL file with the extension *. dl l contains computer code describing the process
function.
LAYOUT OBJ ECTS
171
Figure 68 DLL Function tab
You can assign a diffusion process function defined in a Dynamic Link Library (DLL).
A DLL file contains computer code describing the process function. To apply a
function defined in the DLL you must provide the exact name and number of
arguments of the DLL function. This is done in the Function Specification box. Next
you must provide the name of the DLL where the specified function is defined. The
program assumes that user DLLs are placed in the "\UserDLLs" subdirectory.
Alternatively, you may browse to a DLL to provide the full path. To ensure that your
function specification agrees with the selected DLL, press Verify. The arguments of
the process function must be linked to the layout variables as for other user
processes. To link these variables, press Assign.
Function specification: The function specification has to match the function
provided by the DLL.
DLL: Name of the DLL that contains function code.
Verify button: Click to evaluate the expression and displays the result in the read only
edit box.
Add/Apply button: Click to add a new variable or change the existing variable.
User Variables tab: Displays the list of all the defined user variables and their
expressions.
User Functions/DLLs tab: A list of user functions that have been defined and DLL
functions that have been introduced so far, using the user function and user DLL
functions.
LAYOUT OBJ ECTS
172
Solver Parameters
To open the Solver Parameters dialog box, from the Solver menu, select Solver
Parameters.
ADI General Tab
This tab displays parameters used in the Alternate Direction Implicit simulation
method.
Figure 69 ADI Solver Parameters Dialog box ADI General tab
Solver: ADI solver can be real or complex. The real solver deals will find modes with
real effective index (real propagation constant), and the complex solver can find lossy
or leaky modes as well as the real ones.
Real: Use this option when you want to find an ideal lossless guided mode. The modal
index will be a real number.
Complex: Use this option when you expect the mode will have losses. The loss could
result either from lossy materials in the waveguide or from a leaky waveguide.
Waveguide: The mode solving will be done on a straight waveguide. Mode solving
on bent waveguides is currently unavailable.
Mode
Scalar: The solver works in the simplest scalar mode.
Semi-Vector TE: The solver finds transverse electric modes.
LAYOUT OBJ ECTS
173
Semi-Vector TM: The solver finds transverse magnetic modes.
Full Vector: For this option, you can select the initial excitation field: along the X or Y
direction.
Initial Excitation along X: If the initial field is parallel to the x axis, you can expect to
find a quasi-TE mode.
Initial Excitation along Y: If the initial field is parallel to the y axis, you can expect to
find a quasi-TM mode this way.
Use Script: If this checkbox is enabled, the simulation will proceed according to VB
Script commands found in the Scripting page. Otherwise, the simulation is performed
once according to current settings, ignoring any script written in the Scripting page.
Wavelength: This is the optical wavelength, in microns, to be used in this mode
solving. The fx symbol means that the value can be specified as a User Parameter
instead of a number.
Number of points in Mesh: Enter the number of points along X and Y mesh
directions.
X: The width of the calculation window will have a mesh with this number of points.
Y: The height of the calculation window will be meshed with the number of points.
Number of Modes: Maximum number of guided modes to be found.
LAYOUT OBJ ECTS
174
ADI Settings tab
Figure 70 ADI Settings tab
Starting Field: The starting field is for initial excitation of the waveguide. By default,
the Gaussian option is selected. You can modify the Gaussian field by clicking
Properties and entering your data in the Gaussian Starting field dialog box. You can
select a Gaussian field or supply a user-defined field from file.
Gaussian: In the Gaussian Starting Field, you can set up the Gaussian starting field
for the BPM simulation. The Gaussian field is defined by:
where x is the transverse layout coordinate, x0 is the center position, and is the field
half-width.
File: Use this option if you want to supply your own starting field from a file.
Properties: Clicking the Properties button will prompt the Gauss Field Parameters
dialog box.
E x ( )
x x
0

-------------


2
exp =
LAYOUT OBJ ECTS
175
Figure 71 Gauss Field Parameter
Complex Acceleration Parameter (CAP): This is an important parameter which
controls the convergence and duration of the iteration process. The parameter can
vary from one iteration step to another. The range of values is between -2 and -200.
If it is close to -2 the convergence is fast, but this might affect the stability. If it is closer
to -200, then iteration process is very stable, however, the convergence is slow. We
have implemented a procedure with two acceleration parameters. This means that at
each odd step CAP =W1 and at each even step CAP =W2. By default W1 =-200
and W2 =- 2, which ensures a very stable and fast iteration. You can change only the
value of W2 if any symptoms of instability appear. This could happen in some cases
where a small number of mesh points are chosen in the region with the highest
refractive index. Boundary Condition: The program can use three kinds of boundary
conditions. The first kind is the homogeneous boundary conditions (Dirichlet), where
the dependent variable vanishes on all the boundaries. The second kind is the
Neumann boundary conditions, where all the normal derivatives of the dependent
variable vanish on the boundaries. By default, Neumann boundary conditions are
applied. The Transparent boundary condition is the third option and is similar to the
OptiBPM 3D method.
Homogeneous: Homogeneous boundary conditions.
Neumann: Neumann boundary conditions.
TBC: Transparent Boundary conditions.
Accuracy
Index Tolerance: The solver checks whether the mode index converges slower than
this tolerance number.
Field Tolerance: The solver checks a current mode field integral expression.
AnIso PML tab
Perfectly Matched Layers (PML) are included in order to effectively absorb the
radiation waves. The PML essentially achieves a reflectionless absorption of
LAYOUT OBJ ECTS
176
electromagnetic waves in the continuum limit as the mesh discretization size goes to
zero. The absorption inside the PML operates through conductive losses, so that an
exponential decay for the field inside the PML is obtained. When a PML region
surrounds the computational domain, the spurious reflection from the grid boundaries
can be made exponentially smaller. It is demonstrated that PML is extremely effective
in absorbing out-going traveling waves of a wide special spectrum.
Figure 72 AnIso PML tab
Number of Layers: Thickness of PML region in mesh points for calculation.
Theoretical Reflection Coefficient: Theoretical reflection coefficient R at the
interface between the computational window and the PML medium.
Power of the Grading Polynomial: The power of the function that defines the PML
parameters (Power of the Grading Polynomial).
Use Script: If this checkbox is enabled, the simulation will proceed according to VB
Script commands found in the Scripting page. Otherwise, the simulation is performed
once according to current settings, ignoring any script written in the Scripting page.
Wavelength: This is the optical wavelength, in microns, to be used in this mode
solving. The fx symbol means that the value can be specified as a User Parameter
instead of a number.
Number of points in Mesh: Enter the number of points along X and Y mesh
directions.
X: The width of the calculation window will have a mesh with this number of points.
Y: The height of the calculation window will be meshed with the number of points.
Number of Modes: Maximum number of guided modes to be found.
LAYOUT OBJ ECTS
177
Aniso Advanced tab
Figure 73 Aniso Advanced tab
Engine: The anisotropic simulator solves vectorial Helmholtz equations or wave
equations in terms of transverse electric fields and transverse magnetic fields.
E Formulation (Electric): select to calculate based on transversal electrical fields.
H Formulation (Magnetic): select to calculate based on transversal magnetic fields.
Eigenvalue Solver: Select the type of solver and specify properties. The Arnoldi
method and the Subspace Iteration method are used to solve generalized problems
of computing the nontrivial solutions of the equation: . The Arnoldi method is used as
the default, but in complex calculations, the Subspace Iteration method is
recommended. In general, the Arnoldi method is faster, but requires more storage due
to complete reorthogonalization and additional order. Therefore, for larger mesh
sizes, the Subspace Iteration method would be more practical.
Note: In some cases, the accuracy of the computed field, especially the minor
component, may not be sufficient. You should decrease the Tolerance and increase
the Maximum Iteration number in the Subspace Iteration Solver Properties dialog box.
Arnoldi: select to use the Arnoldi method of calculation.
Subspace Iteration: select to use the Subspace Iteration method of calculation.
LAYOUT OBJ ECTS
178
Properties: click to open the properties dialog box of the selected method (see
dialogs for Arnoldi properties and for Subspace Iteration properties).
Sigma: Sigma is the starting value used to find the modal index. For anisotropic
calculations, sigma is the highest element (absolute value) of the permittivity tensor
for the anisotropic structure.
Default: default sigma value for mode solving calculations.
User Defined: user-defined sigma value for mode solving calculations. Select to
activate field to enter value. This value should be as close as possible to the square
of the modal index.
Fiber tab
Figure 74 Fiber tab
Order: All fiber modes have an angular mode number for azimuthal variations called
Order. This integer is the first integer in the mode name. For example, LP (0, 3) is a
linearly polarized mode with no variation of the field in the azimuth.
Order From / To: The Fiber mode solver will find modes of all Orders within the
specified From and To range. The calculation will be done one Order at a time. All
modes in the current Order are found before the next Order is calculated. If the
number of modes found is greater than Max. Mode Count, the calculation of the
current Order will stop and the algorithm will go on to the calculation of the next Order.
LAYOUT OBJ ECTS
179
Max. Mode Count: Within each Order, this Max number will limit the number of
modes found in each Order. Once it has found Max modes in order n, it will stop the
calculation of Order n and go on to the calculation of modes with Order n +1.
Accuracy, Modal Index Tolerance: This is the level of accuracy in the modal index
of the solution.
Accuracy, Cut-Off Rejection Tolerance: In searching for modes, spurious solutions
are sometimes found at the maximum refractive index and the cladding index. For
example, there might be a spurious mode found whose modal index is equal to the
cladding index. To prevent these from appearing in the list of modal solutions, the
mode solver rejects modes whose modal index differs from the cladding index by less
than this rejection tolerance.
Rotation: The Fiber, being circular, has no preferred orientation in the transverse
plane. The field solutions, on the other hand, usually do show a preferred direction. It
might be required to orient the field solution in a specific direction. This can be
achieved by setting the rotation (in degrees) to rotate the field about the fiber axis as
desired.
LAYOUT OBJ ECTS
180
PROFILE DESIGNER
181
Profile Designer
Profile Designer
When you create a new project in OptiMode Layout Designer, you must define the
profiles and materials for the project in the Profile Designer.
Figure 75 Profile Designer
Main parts of the GUI
The Profile Designer GUI contains three main windows:
Library Browser
Layout
Output
PROFILE DESIGNER
182
Library Browser
Displays a directory where all profile and material data are stored. The Master list
contains profiles and materials for all projects. OptiMode XSDesigner1 list contains
profiles and materials for a specific project.
Figure 76 Library Browser
Layout window
The Layout Window is the main working area where you define the settings for the
profiles and materials.
PROFILE DESIGNER
183
Figure 77 Layout Window
Output window
The Notification and Error tabs display any notifications or errors that occur.
Figure 78 Output Window
Main menu bar
The main menu bar contains the menus that are available in Profile Designer. Many
of these menu items are also available as buttons on the toolbars.
Figure 79 Main Menu bar
PROFILE DESIGNER
184
Toolbars
The Library Browser toolbar is the only toolbar available in Profile Designer.
Figure 80 Profile Designer - Library Browser toolbar
Library Browser toolbar
Library Browser
Library Browser
menu item
Toolbar
button
Description
New Create a new material (the default is dielectric). Select a different material type from
the drop-down list.
Rename Only available when you select a material. Click to rename the selected material.
Delete Only available when you select a material. Click to delete the selected material.
PROFILE DESIGNER
185
Find Click to search for a material. The Find dialog box appears.
Properties Only available when you select a material. Click to view the general properties of the
selected material.
Library Browser
menu item
Toolbar
button
Description
PROFILE DESIGNER
186
PROFILE DESIGNER MENUS
187
Profile Designer menus
This section describes the menus and buttons available in Profile Designer.
File menu
Edit menu
View menu
Tools menu
File menu item Description
Exit Closes Profile Designer. Any unsaved materials will be lost.
Edit menu item Description
Delete Removes all selected materials.
Cut Removes all selected materials and places them on the clipboard.
Copy Copies selected materials and places them on the clipboard. The selected materials remain in the
active file, but they are also placed on the clipboard.
Paste Copies materials from the clipboard and pastes them in a user-defined location.
View menu item Description
Status Bar Displays the status bar at the bottom of the window.
Library Browser Displays the Library Browser.
Output Window Displays the Output Window.
Tools menu item Description
Compare and
Copy Libraries
Compare two libraries to see if the listed items are equivalent, conflicted, or unique.
Merge contents of one master.plb file into another.
Edit variable and
function
Edit, add, or modify user variables and user functions.
Mode (Ctrl-M) Opens the Global Data:ADI Method dialog box for selecting mode settings.
Mode Settings Type the setting for the cladding, substrate, wafer, and mesh.
PROFILE DESIGNER MENUS
188
Help menu
Help menu item Description
Help Topics Provides information on Profile Designer.
About Profile
Designer
Provides information about Optiwave mailing address, telephone and fax numbers, URL, and e-
mail address.
PROFILE DESIGNER FUNCTIONS
189
Profile Designer functions
This section contains descriptions of the functions and dialog boxes that you access
from Profile Designer menus.
Note: Standard Windows functions and dialog boxes are not described.
Library Browser
Materials that you create for a project are stored in the Library Browser under the
project name. There is a separate library for each project, as well as a master library.
You can copy materials from one library into another.
Compare Libraries
You can compare two different libraries from any open projects to see if the materials
in the two libraries are equivalent, conflicted, or unique.
To compare two libraries, open the Compare Libraries dialog box (see Figure 81).
PROFILE DESIGNER FUNCTIONS
190
Figure 81 Compare Libraries dialog box
By default, the project selected in the Library Browser appears in the Library 1
window (see Figure 82).
PROFILE DESIGNER FUNCTIONS
191
Figure 82 Library 1 window
Select a project library to compare with the project library in the Library 1 window (see
Figure 83).
Figure 83 Library 2 window drop-down lis
Once both libraries are selected, click Compare button to compare the two libraries.
The materials in the two libraries change color according to their status in relation to
each other (see Figure 84).
PROFILE DESIGNER FUNCTIONS
192
Figure 84 Material Names - coloured
Compare the color codes at the bottom of the screen with the color of the material
names to determine the status of the materials in Library 1 and Library 2.
BlueEquivalent items
RedConflicted items
YellowItems unique in Lib 1
GreenItems unique in Lib 2
PROFILE DESIGNER FUNCTIONS
193
Edit Variables and Functions
Select a project from the Library Browser and open the Variables and Functions
dialog box to add or modify user variables and functions.
Note: The name in the title bar indicates whether or not the project has been
opened from the Master List or the regular OptiMode Layout Designer.
Mode Solver(s)
All OptiMode solvers are accessible through the Profile Designer. They use basic
waveguide and wafer definitions provided by the user to solve with.
Figure 85 Mode Solver Options
For information on specific solver settings, please see the section Solver
Parameters on page 136. All solvers also contain the wafer and waveguide property
pages for user input.
PROFILE DESIGNER FUNCTIONS
194
Wafer tab
Figure 86 Global Data: ADI MethodWafer tab
Cladding: Material name and thickness.
Substrate: Material name and thickness.
Dimensions, Width: Wafer width.
Dimensions, Thickness: Wafer thickness (calculated).
PROFILE DESIGNER FUNCTIONS
195
Waveguide tab
Figure 87 Global Data: ADI MethodWaveguide tab
Depth: Waveguide depth.
Position: Waveguide position.
Width: Waveguide width.
Height: Waveguide height.
Mesh, Mode and Wavelength Settings
The ADI and AnIsotropic mode solvers allow the user to set up the mesh, wavelength
and number of modes at the bottom of the solver properties dialog box.
Figure 88 Global Data: ADI Method Dialog box
Number of Points in Mesh: Enter the number of points along X and Y mesh
directions.
X: Number of points in the mesh in x direction.
PROFILE DESIGNER FUNCTIONS
196
Y: Number of points in the mesh in y direction.
Wavelength: Enter the number in microns.
Number of Modes: Maximum number of modes you want to search for.
The Fiber solvers only require the mesh and wavelength settings to be defined
(number of modes is set in the Fiber properties page.
Figure 89 Global Data: Fiber dialog box
Mode Settings
Open the Mode Settings dialog box to modify the cladding, substrate, wafer, and
mesh.
Figure 90 Mode Settings Dialog box
Cladding: Material name and thickness.
Substrate: Material name and thickness.
Wafer: Wafer width and thickness (calculated).
Mesh Points X: Number of mesh points in X direction.
PROFILE DESIGNER FUNCTIONS
197
Mesh Points Y: Number of mesh points in Y direction.
PROFILE DESIGNER FUNCTIONS
198
Options
Options allow you to select the folder where you want to store the Master Library.
This enables users who have restricted user permissions to access the Master
Library. To open the Options dialog box and select the folder where you want to store
the Master Library, select Tools >Options. Select the folder where you want to store
the Master Library. The Profile Designer displays the Master Library contents and
the OptiMode Designer Library contents of your layout in the Library Browser.
Figure 91 Options Dialog box
PROFILES
199
Profiles
The waveguide profile defines the index of refraction distribution for waveguides at
any point along the length of the waveguide. The positioning of these profiles is
determined by the positions of the waveguides in the OptiMode designer. Positioning
is done relative to the center point of the profile and the center line of the waveguide.
The waveguide profile specifies the .center point. of the waveguide. For two-
dimensional and three-dimensional waveguides, the profile center point determines
how the waveguide will be positioned in the X direction on a wafer. For three-
dimensional waveguides, the center point also determines how the waveguide will be
positioned in the Y direction of the wafer (i.e. the depth of the waveguide in the wafer).
Waveguide profiles can be scaled in width and height.
Channel Profile
The Channel Profile allows you to create channel waveguides. In its 3D
representation, a Channel Profile may be as simple as a single layer (channel) of a
selected material, or it can be a complex stack of multiple layers of different
thicknesses, widths, and materials. The Channel Profile "center point" is located at the
bottom of the Profile window, at the base of the first layer. The other layers are stacked
on top of the previous one, adding to the height of the structure. To open the Channel
Layout dialog box, right-click on the Channel folder in the Master list and select New.
PROFILES
200
Figure 92 Profile Designer - Channel Layout window
PROFILES
201
Channel Profile toolbar
Profile name: Name used to distinguish the current profile from others you may
define. This name can also be used to access a profile from scripting.
Default: Set the default profile / material used for new projects. Any default in the
Master List will automatically go into the project list at creation time.
2D Profile Definition
Material: The materials have various definitions appropriate for each of the possible
simulations to be applied. When a 2D simulation is performed, the simulator will use
the 2D definition of the material named in this field. You may want to define the 2D
refractive index by applying Effective Index Theory, rather than a physical refractive
index here. Select a material from the drop-down list. The material you select is used
when the profile is accessed by a 2D Simulation.
3D profile definition
In 3D, the material accessed is the physical refractive index. If the simulation is
isotropic, the value in the 3D Isotropic tab of the material is used. If it is anisotropic,
the permittivity tensor anisotropic found in the 3D Anisotropic tab of the material is
used. If the material is isotropic but the anisotropic simulator is called, the appropriate
diagonal permittivity tensor found by default in the 3D Anisotropic tab of the material
is used. In 3D, more than one layer is possible, so for each layer, a width and
thickness is specified. In addition, each layer can be offset from the center line by an
arbitrary distance, if required.
For example, consider the following Channel Profile data:
Name Toolbar Button Description
Store Click to save any unsaved settings into the library.
Default Return object settings to their creation time values.
Sync Click to highlight the library item you are working on and synchronize the
current view with an entry in the browser control.
Cancel Click to cancel any unsaved changes and close the current view.
Help Click to access on-line help.
PROFILES
202
Table 2: Channel Profile Example InP Rib
When this channel is put on a substrate of material in InPClad with a cladding of air,
the cross section (transverse, or x-y plane) refractive index distribution looks like that
shown below.
Figure 93 Refractive Index distribution for channel profile example
Layer Name: Assigns a name to a layer. Layer names can be used during scripting.
Each layer must have a unique name.
Width: Width (x direction) of the channel layer.
Thickness: Thickness (y direction) of the channel layer.
Offset: Layer offset from center line.
Material: Material of the channel layer.
Move Up: Navigates the layer list box.
Layer Name Width Thickness Offset Material
Bottom Clad 5 1 0.0 InPClad
Active Layer 4 0.6 -0.5 InGaAsp
Top Clad 3 2 -1.0 InPClad
PROFILES
203
Move Down: Navigates the layer list box.
Remove: Click to remove a layer.
Add: Click to add a new layer to the 3D profile definition. Enabled only when there is
data for the layer name, width, thickness, and offset.
Apply: When making changes to existing layers, click to register changes. This option
is enabled when changes have been made to an existing layer.
Clear: Click to clear all unsaved changes.
Slanted Walls on waveguide profiles Feature
The usual channel waveguide has sidewalls perpendicular to the substrate.
Sometimes the manufactured shape is more like a trapezoidal shape, the angle of the
two walls may be any angle. In Channel Waveguide Profile in the Profile Designer,
fields for two angles have been added, the inclination of the right and left sidewall. By
default, those angles are degrees. For example, the following channel profile has
the slanted walls checkbox enabled, with as the left angle and as the right
slant angle.
Figure 94 Channel Waveguide Dialog box
The following picture shows how the rectangular channel profile is modified after
applying the slant angles.
90
45 60
PROFILES
204
Figure 95 Rectangular Channel Profile Modified with Slant Angles
The layer structure of the profile is maintained while the orientation of the sidewalls is
changed, pivoting around the bottom of the profile. A slant angle greater than
makes an obtuse angle. Note that the total width of the profile is scaled to fit inside the
width specified by the Waveguide Properties dialog box.
Fiber profile
The fiber can be composed of many concentric layers. Each layer cross-section can
be elliptic. The first layer is the fiber core.
90
PROFILES
205
Figure 96 Fiber Elliptic Layers
To open the Fiber Profile dialog box, right-click on the Fiber folder in the Master list,
and select New.
PROFILES
206
Figure 97 profile
Fiber Pro toolbar
See the Channel Profile toolbar on page 201
Relative semi-axes
To each layer you assign semi-axes of its elliptic shape: Rx and Ry. The semi-axes
dimensions are related to the physical dimension of the fiber width. For example,
Rx=1 means that the semi-axis in the x-direction is equal to the fiber width.
Refractive Index
Each layer has a complex refractive index assigned to it.
Profile name: Name used to distinguish the current profile from others you may
define. This name can also be used to access a profile from scripting.
2D profile definition
Material: The materials have various definitions appropriate for each of the possible
simulations to be applied. When a 2D simulation is performed, the simulator will use
the 2D definition of the material named in this field. You may want to define the 2D
refractive index by applying Effective Index Theory, rather than a physical refractive
index here.
PROFILES
207
Select a material from the drop-down list. The material you select is used when the
profile is accessed by a 2D Simulation.
3D profile definition
The 3D profile definition window displays the layer name, semi-axes Rx, Ry, and
material that you select.
Layer Name: Assigns a name to a layer. Layer names can be used during scripting.
Each layer must have a unique name.
Rx: Semi-axis size in x-direction of the fiber layer.
Ry: Semi-axis size in y-direction of the fiber layer.
Material: One of the existing Dielectric materials. This will determine the Refractive
Index in this layer of the fiber.
Remove: Click to remove a selected layer.
Add: Click to add a new layer to the 3D profile definition. Enabled when there is data
for the Layer name, Rx, Ry, and Material.
Apply: When making changes to existing layers, click to register changes. Apply is
enabled when changes to an existing layer have been made.
Note: To modify an existing layer, select an existing layer from the layer list, then
modify either the layer name Rx, Ry or materials controls.
Clear: Click to clear all unsaved changes.
Note: If a layer is not named, it will be reported as an error.
Diffusion process library
Index profiles produced by the default processes are derived from classical diffusion
models. For other custom index profiles, you can use a built-in formula interpreter that
accepts mathematical expressions. The formula interpreter (string parser) is a
powerful tool to design waveguides and devices. The definition of a refractive index
distribution is as easy as writing the refractive index as a function of the transversal
coordinates, x and y, and a number of the process parameters. For the cross-
sectional structure of the waveguides, we assume that it is determined by the diffusion
process that produces graded refractive index profiles. The index gradation depends
on parameters concerning materials, temperature, and the duration of the diffusion.
You can control the graded profiles by manipulating the diffusion parameters or, more
directly, by defining custom profiles.
The following processes are available:
Ti: LiNb03 profile - Titanium diffusion in lithium niobate
Mg: LiNb03 profile - Magnesium diffusion in lithium niobate
H+:LiNb03 profile - Proton Exchange
PROFILES
208
Ti: Linb0
3
profile - Titanium diffusion in lithium niobate
The titanium diffused waveguides in lithium niobate, or the Ti: waveguides
are formed by the in-diffusion of the titanium dopant into the lithium niobate host. To
form a waveguide, a stripe of titanium is deposited on the substrate. For a
given stripe width, which we identify with the waveguide width, the amount of titanium
is characterized by the stripe thickness before diffusion. The titanium lithium niobate
sample is heated for a few hours at temperatures that range from hundreds to a
thousand degrees Celsius. The titanium ions penetrate the host substrate and form a
graded index waveguide. The graded refractive index is a sum of the bulk crystal
index and the diffusion-induced index change .
Where, depending on the crystal cut and light polarization, we consider the ordinary
(o) or extraordinary (e) index distributions. Due to the chromatic dispersion, the
graded index also depends on the wavelength . The diffusion-induced index
change is described by the product of the dispersion factor and the distribution
function :
The diffusion-induced distribution function is a function of the distribution constant
, the dopant concentration profile c(x, y) and the distribution power factor ,
The concentration profile can be derived following the classical diffusion theory. The
profile has a bell-shaped form
In the lateral direction, that is horizontal to the crystal surface, the profile is
characterized by the combination of error functions. In the crystal in-depth direction,
LiNbO
3
LiNbO
3
n
i
o ( )
n
i
n
i
x y , , ( ) n
i
o ( )
( ) n
i
x y , , ( ) i , + o e , = =
( )
d
i
( )
h
i
x y , ( )
n
i
x y , , ( ) d
i
( )h
i
x y , ( ) i , o e , = =
F
i

i
h
i
x y , ( ) F
i
c x y , ( ) [ ]

i
i , o e , = =
c x y , ( ) c
o
erf
w
2D
H
----------- 1
2x
w
------ +


erf
w
2D
H
----------- 1
2x
w
------


+



y
2
D
V
2
----------



exp =
PROFILES
209
that is vertical to the crystal surface, it has a Gaussian shape. The profile's parameters
include the profile constant , the dopant stripe width before diffusion w, the lateral
diffusion length and the diffusion length in depth. In the program, the dopant
stripe width before diffusion is identified with the waveguide width provided by the
layout. The index distribution can be characterized phenomenologically by diffusion
lengths , , or, as an alternative, by diffusion constants , , diffusion
temperature , time and a diffusion temperature coefficient .
To open the Ti: Pro1 window, right-click the Diffusion-Ti: Pro1
folder and select New. The Ti: window allows you to control diffusion of
titanium into lithium niobate.
Figure 98 Titanium profile
Ti: Pro toolbar
See the Channel Profile toolbar on page 201.
c
o
D
H
D
V
D
H
D
V
D
oH D
oV
T t
T
0
K [ ]
D
V
2 tD
oV
T
o
T ( ) exp =
D
H
2 tD
oH
T
o
T ( ) exp =
LiNbO
3
LiNbO
3
LiNbO
3
LiNb0
3
PROFILES
210
Process definition
Set default: Select to use the default values.
Stripe thickness before diffusion
The thickness of the diffused material stripe before diffusion is used to evaluate the
strength of the diffusion source (total Ti+ion content).
Group II
Lateral diffusion length DH [um]: Diffusion length in the horizontal direction.
Diffusion length in depth DV [um]: Diffusion length in the vertical direction.
Group II
The diffusion lengths in horizontal and vertical directions can be calculated directly
from the diffusion process parameters and constants contained in I:
Diffusion temperature Temperature of the diffusion process.
Temperature coefficient Constant determines the temperature dependence
of the diffusion lengths.
Diffusion time [Hours]: Time of the diffusion process. Enter the diffusion time
in hours, with fractions in the decimal notation.
Diffusion constants, : Constant determines the temperature
dependence of the vertical diffusion length .
Diffusion constants ]: Constant determines the temperature
dependence of the horizontal diffusion length .
Dopant constant
This is a material parameter determined by the dopant density and atomic weight
. The dopant constant is obtained as:
where is the Avogadro number. In case
of which gives cm 5.67. . The
dopant constant is used to calculate the diffusion profile constant in the
concentration profile :
where d is the thickness of the diffused material stripe before diffusion.
c
o
[ ]
T
0
K [ ]
t
D
oV
cm
2
s [ ]
D
V
D
oH
cm
2
s [ ]
D
H
cm
3
[ ]

m
at
c
m
c
m
M
at
( )N
A
=
N
A
Ti , 4.51g cm
3
M
at
, 47.9g mol = = 10
22
cm
3
c
0
c x y , ( )
c
0
dc
m
D
v

-------------- =
PROFILES
211
Dispersion factor
:Dispersion factor for the ordinary refractive index.
: Dispersion factor for the extraordinary refractive index.
where is the wavelength in microns.
Distribution constant
: Distribution constant for the ordinary refractive index. The default value
is:
: The distribution constant for the extraordinary refractive index. The
default value is:
Distribution power factor
: Distribution power factor of the ordinary refractive index. The default
value is: .
: Distribution power factor for the extraordinary refractive index. The
default value is: .
d
o
d
o
( )
0.67
2

2
0.13
---------------------- =
d
e
d
e
( )
0.839
2

2
0.0645
---------------------------- =

F
o
cm
3
[ ]
F
o
1.3 10
25
cm
3
=
F
e
cm
3
[ ] =
F
e
1.2 10
23
cm
3
=
Gamma
o

o
0.55 =
Gamma
e

e
1.0 =
PROFILES
212
Mg: LiNb0
3
profile - Magnesium diffusion in lithium niobate
The diffusion of magnesium dopant into the lithium niobate host induces negative
index changes. The process starts by deposition of a stripe magnesium source,
usually the oxygen of magnesium, onto the 84
lithium niobate crystal. The sample is then heated for several hours -- like in the
titanium diffusion process. Formally, the resulting refractive index distribution can be
modeled using similar formulas, so all parameters have the same meaning in both
cases. However, the default process parameters are different.
To open the Mg: window, right-click the Diffusion-Mg: folder and
select New. The Mg: window allows you to control diffusion of magnesium
into lithium niobate.
Figure 99 Mg: profile
Mg: Pro Toolbar
See Channel Profile toolbar on page 201
LiNb0
3
LiNb0
3
LiNb0
3
LiNb0
3
LiNb0
3
PROFILES
213
Process definition
Stripe thickness before diffusion: The thickness of the diffused material stripe
before diffusion is used to evaluate the strength of the diffusion source (total Mg+ion
content).
Group I
See field description in Group II on page 210.
Group II
See the field description in Group II on page 210.
Dopant constant
This is a material parameter determined by the dopant density and atomic weight
. The dopant constant is obtained as:
where is the Avogadro number. The dopant constant is used to calculate the
diffusion profile constant in the concentration profile :
where d is the thickness of the diffused material stripe before diffusion.
Dispersion factor
See field description in .Dispersion factor on page 211.
Distribution constant
:Distribution constant for the ordinary refractive index. the default value is:
:Distribution constant for the extraordinary refractive index. the default
value is:
cm
3
[ ]

M
at
c
m
c
m
M
at
( )N
A
=
N
A
c
0
c x y , ( )
c
0
dc
m
D
V

--------------- =
F
o
cm
3
[ ]
F
o
5.5 10
23
cm
3
=
F
e
cm
3
[ ]
F
e
1.2 10
22
cm
3
=
PROFILES
214
Distribution power factor
: Distribution power factor of the ordinary refractive index. The default
value is: .
Gammae: Distribution power factor for the extraordinary refractive index. The default
value is: .
H
+
:LiNb0
3
profile - Proton Exchange
Proton exchange in lithium niobate involves a replacement of lithium ions, Li
+
, by
hydrogen ions, or protons, H
+
. The replacement causes a change in refractive index,
thus forming a waveguide. Proton exchange is one of the methods used for forming
optical waveguides in lithium niobate, LinbO
3
, as well as in lithium tantalite, LiTaO
3
.
The waveguide formation can have two stages. Basic proton exchange takes place
when the lithium niobate substrate is immersed in an appropriate proton source,
usually an acid melt, and heated for a couple of hours at temperatures ranging from
150 to 300 degrees Celsius. Under these conditions, the two ion species counter
diffuse, so that material is exchanged between the substrate and the melt. To open
the Proton Exchange window, right-click the DiffusionProton Exchange folder
and select New. The Proton Exchange window allows you to control the proton
exchange diffusion process.
Figure 100 Proton Exchange profile
Gamma
o

o
1.0 =

e
1.0 =
PROFILES
215
Proton Exchange toolbar
See the Channel Profile toolbar on page 201
Process definition
Annealing process
No: No annealing will be applied.
Yes: Annealing process will be applied to calculation of diffusion profile.
Parameters button: Click Parameters to open the Annealing Process dialog box.
For more information see Annealing process on page 215.
Note: The Parameters button will only become available if the Yes radio button
has been selected.
Diffusion depth before annealing
The diffusion depth before annealing can be user defined or automatic. The Auto
option requires specifying the proton source, the process time and temperature. In the
case of a user proton source, the diffusion constant, and activation energy should be
specified.
Auto: If you clear the Auto check box, you can enter data in the edit box.
Proton source
The three available proton sources are:
Toluic Acid
Benzoic Acid
User source
Note: Selecting User Source will activate the Exchange Edit boxes.
Process parameters
Parameters that determine changes of the refractive index profile after the proton
exchange process.
Time [hours]: Duration of the exchange process.
Temperature [
o
C]: Temperature of the exchange process.
Exchange
Diff. Constant : Characterizes the exchange process.
Activat. Energy KJ / mol: Influences the diffusion depth of the process.
m
2
h [ ]
PROFILES
216
Maximum refractive index change on the surface
The maximum refractive index value can be user specified or automatically calculated
from the following formula:
Where , and are fitting parameters (taken from the experimental data) and
have the following values:
In the equation above, x is the normalized or fractional concentration Li
1-x
H
x
NbO
3
.
For the automatic calculation, the normalized H
+
fractional concentration should be
provided.
Auto: Clear the Auto check box to enter data in the edit box.
Normalized H
+
fractional concentration: Normalized fractional concentration x of
Hydrogen ions in Li
1-x
H
x
NbO
3
.
Annealing process parameters
The annealing post processing involves heating of the sample to redistribute the
lithium and hydrogen ions.
Figure 101 Annealing Process Dialog box
Horizontal Diffusion Length: Diffusion length in the horizontal direction.
Vertical Diffusion Length: Diffusion length in vertical direction (in depth).
n
s
1 x

( ) exp [ ] =


, , ( ) 0.1317 3.4576 1.75 ; ; ( ) =
PROFILES
217
Max. Refractive Index Change after Annealing: Maximum change of the surface
refractive index after annealing.
Note: Only the extraordinary refractive index is considered to be modified by the
proton exchange process.
Power of the Hyper-Gaussian: Power of the Hyper-Gaussian refractive index
distribution function f(y) in the vertical (in depth) direction.
Power of the Horizontal Distribution Function: Power of the horizontal refractive
index distribution function.
User Defined Profiles
The User Defined Profiles provide huge flexibility in waveguide creation. With a
custom defined function, you can dictate the refractive index value at any given point
within the waveguide's cross-section.
When designing the Profile Function, you may choose:
User Function profile
User DLL profile
The User Function profile is based on the programs internal expression parser. It is a
simple interpreter of single-line expressions. It is particularly useful when working with
simpler refractive index distribution schemes. The User DLL profile is based on an
externally compiled binary DLL. With this approach, you can develop complex
refractive index distribution schemes. In a practical sense, the results depend only on
the compiler and the programming skills of the user. Performance wise, this solution
is much faster than the expression parser based one. The following sections provide
a description of the concept and its applications.
Definition of user defined profiles
The concept of the User Defined profiles is constructed around a user-defined
function. The function definition consists of the following elements:
Function declaration
Function body
Function domain (limits)
You can arbitrarily specify each of the above elements.
Profile Name: Each of the profiles has to be assigned a unique name. The same
applies to the User Defined profiles. The Profile Name is an independent identity, and
it may but does not have to have the same name as the Profile Function. Different
profiles (distinguished by their names) can be assigned the same Profile Function.
f y ( )
y
D
v
------


a
exp =
PROFILES
218
Types of user defined profiles
User Defined profiles may be additive or overwriting. You can select whether a User
Defined profile is overwriting or additive.
Additive profile
The additive profile behaves like a diffusion process. The profile functions return value
is added to the underlying refractive index value at the specified mesh-point:
n(x,y) =n0(x,y)+ProfileFunction(arg1, arg2, arg3, , argN)
Where n0(x,y) is the value of the refractive index at the x,y mesh point.
Overwriting profile
The overwriting profile behaves as a channel or fiber profile, i.e., the profile function
return value overwrites the underlying value of the refractive index at the specified
mesh-point:
n( x, y) = Pr of i l eFunct i on( ar g1, ar g2, ar g3, , ar gN)
Function declaration
The function definition has the following form:
FunctionName (arg1, arg2, arg3, , argN )
The FunctionName is a function name declarator. Its construction conforms to the
following rules:
It can consist of any letters of the English alphabet, digits 0 -9, and an
underscore
It has to start with a letter or underscore
It is case sensitive
The profile Function Name is internal to the profile, i.e., it is not visible to other
features of the software.
The arguments are defined by their names. The arguments are given by name only,
without the type specification. The type is always double precision (float) variable.
There is no limit on the number of the function arguments.
Function arguments
You may specify any number of arguments in the function declaration. The arguments
must be unique, i.e., their names cannot be repeated. The function arguments are
utilized in the function body to perform calculations of a refractive index value.
Externally to the function, the function arguments are simply placeholders. During the
runtime execution they will be assigned values that are transferred into the function.
The arguments are passed to the function by value, i.e., after the function returns from
the call, their values are preserved. Therefore, they cannot be used to transfer results
of the function execution from the function. You can impose validity ranges on the
function arguments. The range settings are always inclusive, i.e.:
PROFILES
219
Lower Li mi t <= Ar g <= Upper Li mi t
When an argument value is beyond the specified range, the value returned by the
function is discarded, or the function is not executed at all.
Argument associations
To define the relationship between particular function arguments and System
Variables, the parameter must be associated with one of the predefined System
Variables. OptiMode currently supports a set of System Variables that track things like
the current width of the waveguide and the distance of the current mesh point from
the center of the waveguide. The values assigned to the arguments originate from the
set of predefined System Variables and the User-Defined Variables. You can
associate any of the System Variables and/or your own previously defined variables
to any of the function arguments. The same System Variable and/or User Defined
Variable can be associated with (assigned to) any number of function arguments.
Note: All of the Profile Function arguments must be associated with a system or
user variable.
System Variables
Each time an index of refraction value is needed from a User Defined Profile,
OptiMode evaluates all of the required system variables, assigns the System Variable
value to the associated argument, and calls the function to calculate the index of
refraction value.
Polarization
Name: _Polariz
Polarization is a simulation parameter. The parameter can have one of the following
values:
TE =0
TM =1
In case of the 3D Isotropic simulations without polarization (Scalar solver), _Polariz
has the value of TE polarization.
Distance from the nearest waveguide
Name: _d
This parameter is layout (mask) dependent. It carries information about a distance
from the nearest waveguide with the same profile (or process). The waveguides have
to have the same User Profile (the same Profile Name). It is primarily used when
calculating the contribution of the nearest waveguide's mask-window to the current
waveguide's diffusion process. Most of the time _d is used in conjunction with the _W1
parameter. The value is calculated with respect to the waveguide's centers. It is
different for the mesh points positioned on the left and the right side of the current
waveguide, since it refers to the neighbour waveguides positioned on the same side
of the waveguide center as the mesh points under consideration.
PROFILES
220
The value of this parameter for the points located at the center of the waveguide is
equal to the smaller value of the distance from either of the neighbouring waveguides.
Its value is equal to "infinity", i.e., the maximum value of the double precision number,
if there is no other waveguide in the neighbourhood.
Width of the nearest waveguide
Name: _W1
This parameter is layout (mask) dependent. It carries information about the width of
the nearest waveguide. The neighbour waveguide profile has to be the same. The
waveguides have to have the same User Profile (the same Profile Name). It is
primarily used when calculating the contribution of the nearest waveguide's mask
window to the current waveguide's diffusion process. Most of the time _W1 is used in
conjunction with the _d parameter. The value is different for the mesh points
positioned on the left and the right side of the current waveguide. It is the same for all
points positioned on the same side of the waveguide centerline.
The value of this parameter for the points located at the center of the waveguide is
equal to the width of the closest of the neighbouring waveguides, i.e., the smallest _d
parameter. The value is equal to zero if there is no other neighbouring waveguide.
Dependency of the diffusion additive Profile processes on the Neighbouring
waveguides
With diffusion processes, their contribution to the refractive index distribution extends
beyond the waveguide's mask-window, i.e., beyond the waveguide shape. These
processes are additive by nature. This can create problems when calculating
refractive index contributions coming from two waveguides positioned close to each
other (see below).
In order to achieve the realistic (desired) refractive index distribution, the diffusion
process implementation will utilize dependency on _d and _W1.
Distance from the waveguide center
Name: _dx
This parameter carries the value of the mesh-point distance from the center of the
waveguide in the horizontal direction. It is always positive. It is equal to zero for all
mesh-points located at the waveguide centerline.
Signed distance from the waveguide center
Name: _sdx
This parameter carries the value of the mesh-point position in a local coordinate
system with the center at the centerline of the waveguide cross-section. The most
important difference between _sdx and _dx is the sign:
_dx is positive for mesh points on the right side of the waveguide centerline
_dx is equal zero for mesh-points located at the waveguide centerline
_dx is negative for mesh points on the left side of the waveguide centerline
PROFILES
221
Distance from the waveguide surface
Name: _dy
This parameter carries the value of the mesh-point distance from the waveguide
surface in depth. It is always positive. It is equal zero for all mesh-points located on
the waveguide surface. The surface of the waveguide is the same as the top of the
User Defined Profile, i.e., it is equal to the depth of the waveguide. The value of the
parameter is calculated for all the mesh-points of the calculation space located below
the waveguide surface level, i.e., for the full extent of the wafer width, not just under
the waveguide's mask-window. The parameter value is not calculated for the mesh-
points located above the waveguide surface.
Note: The _dy variable is equal to zero for 2D simulations. As a result, profiles
utilizing the depth of the mesh-point (_dy) information, typically 3D simulations can
also be used in 2D simulations. It is assumed that the depth of all the mesh points is
equal to zero, i.e., the top of the waveguide (profile) surface.
Waveguide width
Name: _W
This parameter carries the value of the waveguide's. All of the mesh points, positioned
under the Profiles surface level, will be passed the value of the _W parameter.
Coordinates of a mesh point in the global coordinates system
Name:_x, _y, _z
These parameters carry the values of particular mesh-points in the global (wafer)
coordinate system.
Wavelength
Name:_Wavelen
This parameter carries the value of the wavelength simulation parameter. If the
wavelength is assigned a user defined variable, which is varied across the simulations
(VB Script), the _Wavelen system variable will contain the actual value of the
parameter assigned by VB Script.
Access to optical field values
Name:_Emod, _EE, _Eim, _Ere
These parameters carry the values of the currently simulated optical field at a
particular mesh-point. The optical field at any point is represented by a complex
number. The specified parameters carry values derived from the optical field
component. These parameters are useful when calculating the influence of the optical
field on the refractive index distribution, i.e., non-linear effects.
The meaning of the parameters:
_Emod: The Ampl i t ude of t he opt i cal f i el d at t he
par t i cul ar mesh poi nt .
PROFILES
222
sqr t ( _Er e
2
+ _Ei m
2
)
_EE: The I nt ensi t y of t he opt i cal f i el d at t he par t i cul ar
mesh poi nt :
_Er e
2
+ _Ei m
2
_Eim: The I magi nar y par t of t he opt i cal f i el d component
at t he par t i cul ar mesh poi nt .
_Ere: The Real par t of t he opt i cal f i el d component at t he
par t i cul ar mesh poi nt .
Function body execution
The function body contains execution code that calculates the value of the refractive
index for the provided set of arguments. Specification of the function body depends
on the selected solution. Currently, two approaches have been defined:
Support by the internal single line expression Parser
Support by a DLL
The function code is executed only for the selected subset of the mesh points, fulfilling
the following conditions:
The mesh point has to be located below or at the surface level of the User
Defined Profile. The position of the User Defined Profile level is equal to the
Waveguide Depth.
The mesh point has to be located on the mesh grid intersecting the
waveguide shape.
The above conditions mean that the mesh points located on the vertical grid-cut lines,
perpendicular to the propagation direction, and intersecting the waveguide shape,
may be affected by the function calculation results.
However, the function will not be executed for mesh points located before and after
the waveguide shape.
Function domain (Limits)
During a simulation, the User Defined Profile provides an index of refraction value for
each simulation mesh point within the 'domain' of the profile. The 'domain' of the
profile is that region within the simulation that is influenced by the profile. This domain
can extend beyond the width of the waveguide. The domain of the profile function is
also called the Limits. If the mesh point is within the domain of the profile, then the
Profile Function will be asked for a refractive index value for that mesh point, and the
returned value will be applied to this mesh point. If the mesh point is outside the
domain of the profile, then the Profile Function return value will be discarded, and no
changes will be made to the mesh points value. The Function Domain or Function
Limits determines where the function solution is applicable. The Function Limit is a
function (expression), which returns:
0 - for the areas where the functional response is invalid, i.e., the function
does not (is not supposed to) exist
PROFILES
223
1 - for the areas where the functional response is valid
The main task of the Limit function is to validate provided argument values in a
functional dependency and determine whether the Profile Function should be
executed, or its value accepted. The classical definition of the function domain relies
on the limits imposed on the function arguments. However, this definition does not
provide sufficient functionality. In order to overcome this limitation the Function
Domain concept has been introduced. The practical purpose of the Limit function is
to provide tools that allow definition of geometrical limits/patterns on refractive index
distribution.
User Function Profile
OptiMode is equipped with an internal Expression Parser. The parser is able to parse
single line expressions. It supports the definition of variables and functions that can
be created with a single line expression. The User Function Profile construct is a
typical Expression Parser supported function:
Function declaration: FunctionName( arg1, arg2, arg2, , argN)
Function expression: Single line mathematical expression returning a double
precision value of refractive index
Function limit: Single line mathematical expression returning a double value equal
1.0 Or 0.0:
Return value of 1.0 means that the function results are valid and within its
domain
Return value of 0.0 means that the function results are invalid and should be
discarded
The internal expression parser provides means to define simpler refractive index
distribution profiles. The profile function can get more complex when it is implemented
with use of the other user implemented (defined) functions and variables. However,
this becomes more cumbersome for involved solutions.
The execution of the profile functions based on the internal parser is much slower than
the compiled code (DLL), since the internal parser is a simplified interpreter.
User function profile - Function declaration
The function definition must be provided in the following form:
FunctionName (arg1, arg2, arg3, , argN )
The FunctionName is a function name declarator. Its construction conforms to the
following rules:
It can consist of any letters of English alphabet, digits 0 -9, and an underscore
It has to start with a letter or underscore
It is case sensitive
PROFILES
224
The Profile Function Name is internal to the Profile, i.e., it is not visible to other
features of the software. The arguments are defined by their names. The arguments
are given by name only, without the type specification. The type is always a double
precision (float) variable. There is no limit on the number of the function arguments.
User function profileFunction body
The function body is constructed as a single-line expression. When constructing the
function expression, you may use any of the following elements:
Predefined Expression Parser supported functions
Predefined Expression Parser supported constants
The user defined variables and functions
Any of the function arguments
For more information on parser supported functions and constants, see .Appendix C:
Parser supported functions. on page 167. You cannot use (reference) any other
Profile Function, i.e., by their Profile Function Name or the Profile Name.
When constructing the function expression, you should have full access to the User
Variables and Functions:
Add and remove variables and functions
Modify existing variables and functions
View and observe their values
The result of function body execution is a double value used to determine the function
contribution to the refractive index distribution.
User function profileFunction limit
The Function Limit is an expression. The expression is of the same type as that of the
main function body. When constructing the Function Limit expression, you can use
_FnRslt. The _FnRslt is a reserved variable, which carries the result value of the main
function expression execution. This variable can be used in the Limit expression to
carve-out of the function domain areas based on the "amplitude clipping" of the
function return values. The Function Limit expression operates on the same set of
function arguments as the main Profile Function. Simply the arguments specified in
the main function declaration are passed to its Limit function for evaluation, during the
execution. This dependency can be illustrated as follows:
If the Profile Function declaration is ProfileFunction( arg1, arg2, arg3, , argN ),
then the Profile Function expression would be LimitFunction( _FnRslt, arg1,
arg2,arg3, , argN )
The declaration of the Limit Function is hidden from the user, as you can only dictate
the implementation of the Limit Function expression. However, you can use any of the
arguments of the Profile Function declaration in the expression.
PROFILES
225
User function profile - Function evaluation
When developing the Function Profile, you can validate the specified function, i.e.:
Correctness of the function declaration
Correctness of the expressions
You will be provided with a list of the errors found in the function specification. To
validate the function, simply click the Verify button. The Profile Function is
automatically validated before it is saved. To open the UserFuncPro dialog box, right-
click on the User Function Profile folder in the Master list and select New.
Figure 102 90 UserFuncPro Dialog box
User Function Profile toolbar
See the Channel Profile toolbar on page 201
User Function definition
Function Specification: Displays the name of the function followed by its parameter
list (arguments). For example, in the following function specification:
PROFILES
226
MyFunction(x,y), MyFunction is the function name, and x,y is the parameter
list (arguments).
Function Body: The function is defined by any single line mathematical equation that
can be parsed by the OptiMode parser. For more information, see .Appendix C:
Parser supported functions. on page 167. The formula can contain the function
arguments, existing user variables and functions, and system and material constants.
When defining a function body, the arguments do not have numerical values. The
function is not evaluated even if you express it with the help of well defined additional
parameters and user variables having numerical values. The function definition forms
only a template. The function is evaluated in numerical simulations only after you
assign values to the function.
For example, you can define your function as:
MyVar i abl e*Wi dt h*exp( - ( x*x+y*y) )
Width is a parameter equal to 4. MyVariable is a user variable equal to 3. Still,
the function value is not determined since the values of x and y is not known.
Use Limits: Select to enable the application of limits on the function arguments and
the function value.
If the box is not selected, the function is evaluated and applied to all the mesh points
in the whole space below the Profile Surface level, i.e. the waveguide depth. When
selected, the function input arguments can be limited by specifying a Boolean
expression within the Use limits input box.
For example, enter the expression: x*x+y*y<1, to limit the function domain by a
circle of radius 1. You can also limit the function by using the variable _FnRsIt_,
which is the function value. If you enter the
Limits expression: abs(_FnRsIt_)<1, you ensure that your function is clipped
when its absolute value is equal or exceeds 1.
Material Association: Select a material from the material database. All the
accessible material constants are associated with the selected material. Ordinary and
diffused materials provide access to different sets of material constants. Ordinary
materials have only values of the refractive indices, whereas the diffused materials
can also provide values of the permittivity and electro-optic coefficients. If the function
argument is associated with a particular material constant, the constant should return
the correct value for selected material. For example, you can use the refractive
indices of available materials to define a profile.
Verify: Verifies correct definition of the user function profile, i.e. correct definitions and
availability of used variables and association of the input parameters of the user
profile function.
Note: Verification must be performed before the profile is saved.
PROFILES
227
Function is additive: Select if the refractive index of the created waveguide is
supposed to be the sum of the underlying refractive index and the perturbation
defined by the user-defined function:
If Function is additive is not selected, the refractive index profile is non-additive,
i.e., the refractive index of the waveguide is equal to value of the user-defined
function:
Profile function tab
The Profile function tab specifies the association and limits of the function input
parameters. Every input parameter needs to be associated with a user variable,
material, or system constant. Click on the association input field to view a list of all the
available variables and constants. You can also impose limits on the input arguments
of the user defined profile functions. The values in the lower limit and upper limit input
directly limit the values of input arguments. Using limits is not required.
Figure 103 Profile Function tab
User variables tab
The User variables tab displays a list of all the available user variables, which can be
used in the construction of user functions. The user variable has a symbolic name
(User Variable) and a numerical value determined by an expression (Expression).
The expression defining the variable can be a mathematical formula containing
existing parameters, variables, and functions. The variables can be modified within
the Variables and Functions dialog box (Variables and Functions dialog box on page
167).
Note: This is a read-only list.
n n0 f uments arg ( ) + =
n f uments arg ( ) =
PROFILES
228
Figure 104 User Variables tab
User functions/DLLs tab
The User functions/DLLS tab displays a list of all the available user functions. The
functions and variables can be modified within the Variables and Functions dialog box
(see .Variables and Functions dialog box. on page 53).
Note: This is a read-only list.
Figure 105 User Functions/DLLs tab
Material constants tab
The Material constants tab displays a list of material constants associated with the
material in the Material field (refractive indices for all materials, permittivity and
electro-optic coefficients in the case of diffused materials). The values can only be
edited through the appropriate material dialog boxes.
Note: This is read-only list.
Figure 106 Material Constants tab
Note: You can reuse existing objects on the lists to edit new objects. For example,
to use the wavelength that is the object _Wavelen on the Material Constants
list, you can drag it from the list to the edit box.
PROFILES
229
Example
You want to customize the waveguide index profile according to the formula:
where is the constant substrate refractive index (base index), and the graded
index variation is the user function. The function arguments, x and y, are
usually associated with the local layout transverse coordinates of the waveguide. In
this example, you define the user function profile MYPROFILE with function
specification deltaN and function body:
del t aN( x, y) = d*F*C0*( er f ( W/ ( 2*Dx) ( 1+2*x/ W) ) +
er f ( W/ ( 2*Dx) *( 1- 2*x/ W) ) ) *exp( - y*y/ ( Dy*Dy) )
Note: In general, the user function can have many arguments. In the above
example, the only arguments are x and y, while the remaining symbols d, F, C0,
W, Dx and Dy , represent parameters and user variables that are not the function
arguments in the present context. The variables and constants need to be defined
before the profile definition.
Select Function is additive.
In Profile function, make the following association:
x->_dx
y->_dy
Verify and Store the profile.
User DLL profile
The DLL based profiles are designed to provide tools to define complex refractive
index distribution. User DLL profiles provide more flexibility than function defined
profiles, because the profile function is a programmed function located in a DLL -
implementation is limited only by the programming skills of the user. The DLL function
is programmed in a C or C++compiler, and compiled into a DLL. The complexity of
the User DLL profile is therefore limited by the capabilities of the compiler and the
software development skills of the user. If necessary, multiple functions spanning
multiple files can be used to create the profile function. You can build the DLLs with
any compiler supporting DLL creation. However, we will focus on supporting only C,
C++(Microsoft) compilers. Use of other compilers may require some experimentation
with compilation and linking options.
User DLL profile - Function declaration
The function definition must be provided in the following form:
FunctionName (arg1, arg2, arg,3, , argN )
The FunctionName is a function name declarator. Its construction conforms to the
following rules:
It can consist of any letters of English alphabet, digits 0 -9, and an underscore
n x y , ( ) n
o
n x y , ( ) + =
n
0
n x y , ( )
PROFILES
230
It has to start with a letter or underscore
It is case sensitive
The Profile Function Name is internal to the Profile i.e. it is not visible to other features
of the software. The arguments are defined by their names. The arguments are given
by name only, without the type specification. The type is always double precision
(float) variable. There is no limit on the number of the function arguments. The
function declaration provides the application with the information on the function
exported from the developed DLL. It the user to specify a function located within a DLL
(also user specified) that will provide the refractive index distribution. This function
must be wholly contained within the DLL; it cannot require any data from the
application with the exception of the current input values for the arguments. It is critical
that the number of arguments in the function declaration and the function
implemented within the DLL is the same. The software will crash otherwise. All the
arguments of the function implemented in the DLL must be double precision (float)
numbers.
User DLL profile - Location (Function body)
In this case the function has no "body" i.e. implementation within the OptiMode
application. The whole function code is located inside the DLL. The user has to
provide a path to the location of the DLL where the declared function is implemented.
User DLL profile - Location specification
The user may provide the path to the DLL in few forms, each of these forms will
prompt different DLL search pattern. The generic form of the DLL location
specification:
[Directory path access]\FunctionDllName.dll
Full pathname
The user specifies the full pathname to the DLL. The full pathname specification starts
with the drive letter
e.g.:
D:\Optiwave Software\User DLLs\MyRIdxProfile.dll
In this case the application will directly examine the location for presence of the
specified DLL, then verify whether the specified function is exported from the DLL (i.e.
whether it is visible from outside of the DLL).
Relative pathname
The user may specify a relative pathname. The relative path name is a partial one: it
does not contain the drive letter specification, just the directory path. Few examples:
\User DLLs\MyRIdxProfile.dll
MyRIdxProfile.dll
Samples\ MyRIdxProfile.dll
In all these cases the DLL search pattern is the following:
PROFILES
231
The current directory (folder) is determined based on the processed data file.
Then the relative DLL pathname is appended to the current directory
pathname, and the newly constructed full path is tested for location of the
specified DLL. After the DLL file is located it is verified whether the specified
function is exported from this DLL.
Example
The currently processed data file is located at:
C:\My Documents\OptiModedata.bpd
The relative pathname of the DLL is specified as:
\OptiMode DLLs\MyRIdxProfile.dll
The full path-access to the DLL will be constructed as:
(C:\My Documents\) +(\OptiMode DLLs\MyRIdxProfile.dll)
resulting in the following pathname:
C:\My Documents\OptiMode DLLs\MyRIdxProfile.dll
The path: "C:\My Documents\OptiMode DLLs\" will be verified for presence of the
"MyRIdxProfile.dll", and then the DLL will be examined whether it the specified
function is available.
In case the relative DLL's pathname contains just the DLL name, the DLL is expected
to be located in the directory of the currently processed data file. If the previously
searched location does not contain the specified DLL, the application is going to rely
on the operating system DLL search pattern.
User DLL profile - Function limit
The User DLL profiles must be able to specify its domain or limits. This domain is
specified using a DLL defined function. It is declared the same way as the Profile
Function (see .User DLL profile - Function declaration. on page 99). Limit functions
must return a =double data type. The function must return 0 for FALSE if the profile
should be ignored for a given mesh point, or 1 for TRUE if the profile must supply a
refractive index value for a given mesh point. For example, a limit function might look
something like:
double mylimit( double x )
{
doubl e i ncl ude_t hi s_poi nt = 0;
i f ( x==1)
{
i ncl ude_t hi s_poi nt = 1;
}
r et ur n i ncl ude_t hi s_poi nt ;
}
By specifying a domain, we can allow the background refractive index value to tightly
surround non-rectangular profile shapes. We also prevent the Function defined profile
from overwriting everything under it across the entire wafer. (User defined profiles can
PROFILES
232
have influence beyond the waveguide width). Note that we do not have a system
variable, which would provide the 'background' refractive index value.
The DLL domain (Limit) function is independent from the DLL Profile Function. It
carries its own set of arguments, which also have to be associated with the system or
user defined variables. If the name of the arguments in the Limit Function is the same
as an argument in the Profile Function, then the arguments are assumed to be
represent the same parameter and only one name will appear on the association list
i.e. both arguments will be associated with the same variable.
Attention:
The arguments in the function declaration are only the placeholders. They are
independent from actual function argument names in the DLL. What is important is
the number of the arguments and their order.
It is enough to provide a different argument name in the Limit Function to make sure
that it can be associated with a distinct variable.
User DLL profile - Function evaluation
After you specify the DLL Function Profile, you may validate the specified function i.e.:
Correctness of the function declaration
Existence of the DLL
Availability of the specified profile function within the DLL
To validate your Profile Function, click Verify, and you will see the errors found in the
function specification.
To open the UserDLLPro dialog box, right-click on the User Function Profile folder
in the Master list and select New.
PROFILES
233
Figure 107 UserDLLPro Dialog box
User DLL Profile toolbar
See Channel Profile on page 199.
Profile name: Name used to distinguish the current profile from others you may
define. This name can also be used to access a profile from scripting.
Default: Set the default profile / material used for new projects. Any default in the
Master List will automatically go into the project list at creation time.
User DLL function definition
Function Specification: Displays the unique name of the function followed by
symbolic arguments.
For example, in the following DLL function specification: MyFunction(x,y),
MyFunction is the function name, and x,y are the arguments.
Note: You must provide the exact number of arguments of the DLL function.
DLL File Name: Specifies file name and location of the DLL file. A DLL file contains
computer code specifying the process function. To apply a function defined in the
DLL, you must provide the exact name of the DLL function.
PROFILES
234
Material: The Material constant tab displays a list of the parameters of a material
defined in the Material input box.
Verify: Verifies the definition of the user DLL profile, i.e. looks for correct definitions
and association of the input parameters of the user profile function.
Note: Verification must be performed before the profile is saved.
Function is additive: See definition in User Function definition on page 225
Arguments Association Table
The Arguments Association table displays the associations of the DLL function input
arguments. Every input parameter needs to be associated with a user variable,
material, or system constant. Click on the association input field to display a list of all
the available variables and constants.
PROFILES
235
Center point of a profile
The center point of a Waveguide Profile is located at the Waveguide Depth level, in
the middle of the Profile width (the waveguide width). The Waveguide Depth
determines the location of the specific reference Profile point in the global (wafer)
coordinate system. Since the Waveguide Depth, and the related Profile reference
point, has specific interpretations for different types of waveguides, the center point
will be positioned at the different depth (height) locations of the Profile window-frame.
However, it is always located in the middle of the window-frame width.
Channel Profile
The Waveguide Depth reference point of the Channel Profile window-frame is located
at its bottom. The center point of the profile is located at the bottom of the first layer.
The other layers are stacked up, increasing the Profile height.
Figure 108 Center Point for Channel Profiles
PROFILES
236
Figure 109 Center Point for Step Profiles
PROFILES
237
Fiber Profile
The Waveguide Depth reference point of the Fiber Profile window-frame is located in
its middle. The center point of the profile is aligned with the center (core) of the fiber
cross-section.
Figure 110 Center Point for Fiber Profiles
PROFILES
238
Diffused and User Defined Profiles
The Waveguide Depth reference point of the Diffused and User Defined Profile is
located at the Profile surface (top) level. The waveguide "body" is always located
below the Waveguide Depth, or the Profile surface level.
Figure 111 Center point for Diffused and Function Defined Profiles
Waveguide profiles allow the manipulation of waveguides in the Y direction
independent of the wafer definition. All waveguides are associated with exactly one
profile. Each profile knows how to represent itself in two-dimensional and three-
dimensional simulations. Default translations, defined by Optiwave, are supplied for
the profiles. Waveguide profiles are used by the Simulator to help generate the index
of refraction distribution of a wafer slice at any point along the direction of propagation
(the Z axis). The waveguide is used to determine the index of refraction distribution at
any point along the width of a waveguide. In order to do this, the waveguide profile
contains the materials used to construct the waveguide. Waveguides will not store
their materials directly, rather, the waveguide will store its profile. The profile will store
the waveguide material. It is the profile that determines the refractive index
distribution within the waveguides cross-section.
MATERIALS
239
Materials
OptiMode comes with a user-defined library of materials (material database). Each
region in the layout will be associated with a material from this library. When a
simulation is performed, the simulator will look in the library to find the appropriate
optical properties to assign to each region. The optical property used depends on
what kind of simulation is being done. For example, if the simulation is of a 3D
waveguide made from isotropic materials, the library element will use the refractive
index of the material. This is a complex number; the real part represents the influence
of the material on the phase velocity. A small negative number in the imaginary part
will take into account any losses that can be expected in the transmission. A material
with gain can be accommodated by using an imaginary part with a positive sign.
If the simulation to be performed is anisotropic mode solving, then the optical property
needed is the tensor relating the electric field to the electric displacement, the relative
permittivity tensor.
The tensor relates two vectors with three components, so the tensor has, in general,
9 components. On the other hand, the current mode solving algorithm is sensitive to
the anisotropy in the transverse plane and the propagation axis only, so the
components x-z, y-z, z-x, and z-y are neglected. Therefore, the 5 complex
numbers, , , , , will specify the anisotropic nature of the
material. By using the material database, the same layout can be simulated in several
ways with varying levels of detail. The database keeps the definition of the optical
properties which are appropriate for each case.
There are several kinds of materials: Dielectric, Electrode, Diffused, FDTD-
Dispersive, FDTD-Nonlinear, and FDTD-Perfect Conductor. As the names suggest,
only the first three appear in OptiBPM. In OptiFDTD, Dielectric, FDTD-Dispersive,
FDTD-Nonlinear, and FDTD-Perfect Conductor are available. When the Profile
Designer is opened by itself, only the Master List is displayed, and one can see all
available materials.
The following are the material types available for OptiMode:
Dielectric Material (OptiBPM and OptiFDTD now share the dielectric material
definition)
Electrode Materials
Diffused Material
D
0

xx

xy
0

yx

yy
0
0 0
zz
E
x
E
y
E
z
=

xx

xy

yx

yy

zz
MATERIALS
240
FDTD Dispersive
Dielectric Material
Usable in: OptiMode, OptiBPM, OptiFDTD.
To open the Dielectric Materials window, in the Master list, Materials folder, right
click on the Dielectric folder and select New.
Figure 112 Dielectric material - 2D Isotropic tab
2D Isotropic tab
The refractive index on this page is the refractive index used by the 2D OptiBPM
simulator and mode solver. By default this is the same as the 3D isotropic refractive
index. However, sometimes the 2D OptiBPM simulation is to use an effective index
instead of a real (physical) index. If a different refractive index should be required in
the 2D context, unselect the Use default checkbox and enter a new refractive index
in the field.
Refractive Index: Refractive Index of the material.
Use default: When checked, set refractive index to that of the Isotropic value. Editing
of the refractive index value is not allowed.
MATERIALS
241
3D Isotropic tab
Figure 113 Dielectric materials 3D Isotropic tab
Refractive Index: Enter the real and imaginary part of the refractive index of this
material that is to be used by the 3D Isotropic OptiBPM solver and the 3D Isotropic
mode solver.
Sellmeier: When checked, refractive index will come from sellmeier equations. Do
not allow edit of refractive index.
Electro Optic Effects: See the OptiBPM documentation for a description of the use
of this field.
Wavelength / Calculate: Use this field and button to calculate (and display) the
refractive index value at the given wavelength from the sellmeier equations.
Electrostatic Permittivity tab
In 3D isotropic simulations that have electrodes with potential, OptiBPM will find the
static electric field in the transverse plane. To determine this static field, it is necessary
MATERIALS
242
to define the relevant permittivity everywhere. Therefore all materials in the field
should have a defined static permittivity.
Figure 114 Dielectric Material - Electrostatic Permittivity tab
EpsXX, EpsYY: Enter the two main diagonal components for the calculation of
electrostatic field in the transverse (X, Y) plane.
3D Anisotropic tab
The anisotropic mode solving algorithm is sensitive to the anisotropy in the transverse
plane and the propagation axis only, so the components xz, yz, zx, and zy are
neglected. Therefore, the 5 complex numbers xx, xy, yx, yy, zz will specify the
anisotropic nature of the material.
The relative electric permittivity profile will, in general, be described by the complex
tensor of the form:
x y , ( )

xx

xy
0

yx

yy
0
0 0
zz
=
MATERIALS
243
Figure 115 Dielectric materials (Ordinary)3D AnIsotropic tab
Use default: When checked, the diagonal terms of the permittivity tensor are filled
with square of the 3D isotropic refractive index. The off-diagonal terms are set to zero.
Sellmeier will become unchecked. Editing of refractive index will not be allowed.
Sellmeier: When checked, refractive index will come from sellmeier equations. Use
Default will become unchecked. Editing of refractive index will not be allowed.
Note: Editing of refractive index is allowed when neither of the above options are
checked.
Iso Sellmeier tab
The refractive index of the material will be determined according to the formula in the
dialog box.
MATERIALS
244
Figure 116 Isotropic Sellmeier tab
Wavelength: The numerical value for refractive index displayed in the 3D Isotropic
tab will use the formula with the number in this field as the wavelength.
M: This is the desired number of terms in the Sellmeier equation.
: This is the permittivity in the short wavelength limit.
: Enter numerical values in these columns for and in the
Sellmeier formula.
RI Viewer: Click here to see a plot of the refractive index vs. wavelength.

0
A , ,
A
i

i
,

i
MATERIALS
245
Figure 117 Refractive Index-Wavelength Relationship Dialog box
A range of wavelengths can be entered from start to end. To update the graph click
the Apply button. If the Refractive Index is complex both Real and Imaginary parts
may be chosen. If it is anisotropic, use the combo box in the bottom left to choose the
components epsXX, epsYY, epsXY, epsYX, or epsZZ.
AnIso Sellmeier tab
Define the AnIsotropic Sellmeier equation term values with this page.
MATERIALS
246
Figure 118 AnIsotropic Sellmeier tab
See the section Iso Sellmeier tab above for common field definitions.
EpsXX,EpsYY... Combo: Use to choose the component the equation values are for.
Diffused Material
Usable in: OptiMode, OptiBPM.
To open the Diffused Materials window, in the Master list, Materials folder, right click
the Diffused folder and select New.
MATERIALS
247
Figure 119 Diffused material
Crystal Name: Name of the host crystal.
Default: Select to make the default material.
Refractive Index: Ordinary and extraordinary refractive index of the host crystal. The
Auto value of the refractive index is computed using the Sellmeier equations.
Ordinary :
Extraordinary :
where wavelength is in .
Electro optic coefficients
There are four electro optic coefiicients: r
33
, r
51
, r
13
and r
22
. Select Default to set the
electro optic coefficients to their default values.
n
o
n
o
0 ( )
( )
2
4.9048
0.11768
0.0475
2

---------------------------- 0.027169 =
n
e
n
0 ( )
e
4.582
0.099169
0.044432
2

---------------------------------- 0.02915
2
=

m
10
12
m V [ ]
MATERIALS
248
Permittivities
Eps
zz
and Eps
xx
: Low frequency permittivitys used for electric field calculations. The
permittivities are LiNb0
3
values (default).
Wavelength: Vacuum wavelength in microns. This data can be changed in the edit
box.
Crystal Cut: Refers to the crystal coordinate system, where typically, the Z-axis is the
optical axis.
Propagation direction (2D): Propagation direction can be measured in X, Y, or Z
direction.
Polarization: Refers to the wafer system, where the transverse electrical or magnetic
field is parallel to the crystal surface and the crystal surface is parallel to the layout
screen.
FDTD-Dispersive
Usable in: OptiMode, OptiFDTD.
For dispersion, the simulator calculates the complex refractive index values as a
function of wavelength. These are the available dispersion models:
Lorentz Dispersive
Drude Dispersive
Lorentz-Drude Dispersive
MATERIALS
249
Lorentz Dispersion
Figure 120 Lorentz Dispersive tab
Lorentz Model
where
is the strength
is the damping factor
is the resonant frequency
( )

X
0
G
m

2
om

2
m
i
m

2
+
--------------------------------------------
m 1 =
N

+ = G
m
m 1 =
N

1 =
G
m

m
MATERIALS
250
The OptiFDTD simulator can handle the materials which have a Lorentz model
resonant wavelength equal to the exciting fields wavelength. However the Mode
Solver may not be able to find the correct mode because the calculated refractive
index from Lorentz equation may go to infinity. An alternative is to use the Gaussian
beam as the input.
Converting the =Sellmeier equation to =Lorentz Model
Lorentz equation
;
Input parameters (symbol) Unit Name
F/m Permittivity at zero frequency.
F/m permittivity at infinite frequency.
- Strength.
Hz Resonance frequency.
Hz Damping factor.
( )

X
0
G
m

2
om

2
m
i
m

2
+
--------------------------------------------
m 1 =
N

+ = G
m
m 1 =
N

1 =

X
0
G
m

2
j

2
m
2c
-----------------




2
m
+
---------------------------------------------------------
m 1 =
N

+ =

m 2
m
=

G
m

om

m
MATERIALS
251
Sellmeier equation
;
Input parameters (symbol) Unit Name
F/m Permittivity at infinite frequency.
um Resonant wavelength.
F/m Permittivity at resonant frequency.
um Damping factor.
( )

A
m

2
j
m

m
2
+
--------------------------------------------
m 1 =
N

+ =
A
0

=
A
0

m
A
m

m
MATERIALS
252
Relation between the two models
You may enter the number of resonances in the Resonance box and enter the
coefficients for those resonances in the grid below. These boxes can be edited.
OptiFDTD uses only the Lorentz model during simulation. If the Sellmeier coefficients
are entered, they will automatically be transformed to Lorentz coefficients. To see the
effect of this transformation, you may click the .Transform to Lorentz Model. button.
The grid above .Sellmeier Equation. will be populated with the converted Lorentz
model parameters.
Select the Lorentz Model radio button to enter coefficients for the Lorentz
Dispersive model.
Drude Dispersion
Materials with Drude dispersion are optically linear materials for which the angular
frequency dependence of the dielectric permittivity can be described by the Drude
Dispersion relation:
A
m

0
G
m
= G
m
A
m

0
------ =

c
m

m
2
--------------- =

m
2
2c
------------
m
=
m
2
2c
m

m
2
------------------ = =

0
A
m
m 1 =
N

=
G
m
m 1 =
N

1
A
m

0
------
m 1 =
N

1
0

0

A
m
m 1 =
N

+ = = = =
A
0

=
MATERIALS
253
where is the plasma angular frequency, is the collision angular frequency, and
is the permittivity at infinite frequency. For example, for a cold plasma, =
1.803274183e11 rad/s, =2.0e10 rad/s, and =1.0.
Figure 121 Drude Dispersive tab
Lorentz-Drude Dispersion
The governing equation for Lorentz-Drude model in time domain can be expressed
as:

r
( )


p
2
i
2

----------------------- + =

MATERIALS
254
The FDTD algorithm is derived based on the above equation. The permittivity of
Lorentz-Drude can be expressed in frequency domain as following:
where is the relative permittivity at infinity frequency, G
m
is the strength of each
resonance term, is the plasma frequency, is the resonant frequency, and
is the damping factor or collision frequency.
For more details of this material model, please refer to the OptiFDTD Technical
Background. The Lorentz- Drude material definition found in the Lorentz-Drude
dispersive tab reflects Equation 3 and Equation 4.
(1)
(2)
(3)
(4)

0
H
t
------- E =

r ,

0
E
t
------
Pm
t
-----------
m 0 =
M

+ H =

2
Pm
t
2
-------------- m
Pm
t
-----------
m
2
P
m
+ +
0
G
m

2
m
E =

r
( )
r ,
G
m

2
m

m
2

2
j
m
+
--------------------------------------------
m 0 =
M

+ =

r ,

m

m

m
MATERIALS
255
Figure 122 Lorentz-Drude Dispersive tab
Use Wavelength: Specify the Lorentz-Drude model's resonance parameters using
the wavelength values in micrometers [m].
Use Frequency: Use the angular frequency values in [rad/s] to specify the Lorentz-
Drude model's resonance parameters. This option is selected by default.
Isotropic: Switch the Lorentz-Drude material type between isotropic and anisotropic
properties.
(F/m): Relative permittivity at infinite frequency.
Resonance: Number of resonators in Lorentz-Drude model. Please enter an integer
value.
Resonance parameters

MATERIALS
256
S: Strength of the corresponding resonance term.
P: Plasma frequency/wavelength.
R: Resonant frequency/wavelength.
D: Collision frequency/wavelength.
OPTIMODE 3D MODE SOLVER
257
OptiMode 3D Mode Solver
Introduction
In a waveguide, a mode is one of the various possible patterns of propagating
electromagnetic fields or standing electromagnetic fields. Each mode is characterized
by wavelength (frequency), field strength, and the electromagnetic field pattern of a
mode depending on the frequency, refractive indices, and waveguide geometry.
Main parts of the GUI
The 3D Mode Solver contains three main windows:
Ref Index
Modes found
Output
Layout window - 3D Isotropic calculations
Displays two different graphs of the simulation:
Refractive Index: 3D view of the Refractive Index.
Figure 123 Mode Solver layout window, Refractive Index
Major component Ex: 3D view of the major component of optical electric field parallel
to X.
OPTIMODE 3D MODE SOLVER
258
Figure 124 Mode Solver Layout window, Major component Ex
Layout window3D Anisotropic calculations
Displays seven different graphs of the simulation:
epsXX, epsXY, epsYX, epsYY, epsZZ: 3D view of the different components of the
permittivity tensors.
OPTIMODE 3D MODE SOLVER
259
Figure 125 Mode Solver layout windoweps XX
Major component Ex: 3D view of the major component of optical electric field parallel
to X.
Figure 126 Mode Solver layout window, Major component Ex
OPTIMODE 3D MODE SOLVER
260
Minor component Ey: 3D view of the major component of optical electric field
parallel to Y.
Figure 127 3D Mode Solver layout window, Minor component Ey
Mode found window
The Mode found window displays a list of the modes that were found with the modal
index and polarization.
Figure 128 Mode Solver-Mode found window
OPTIMODE 3D MODE SOLVER
261
Output window
The Output window can be moved around from its original location. The Notification
tab displays the time that the calculation starts, the number of modes found, and the
time that the calculation ends. The Error tab displays any notifications or errors that
may occur in the process.
Figure 129 Mode SolverOutput window
Main menu bar
The Main menu bar contains the menus that are available in the 3D Mode Solver.
Many of these menu items are also available as buttons on the toolbars.
Figure 130 Main menu bar
Toolbars
Select the toolbars that you want to have available.
Standard Available in all views. Displays
information about OptiMode
Solver.
Solving
Toolbar
Resume, pause, or abort the
simulation. Only available when
the solver is running.
OPTIMODE 3D MODE SOLVER
262
Data
View
Select the Real, Imaginary,
Amplitude, Phase, Intensity, or
dB views.
Dockers Open or close the Mode found
and Output windows.
Avis / 3D
Graph
Available for both the Refrac-
tive Index and Major compo-
nent EX views.
OPTIMODE 3DMSIM MENUS AND BUTTONS
263
OptiMode 3DMSim menus and buttons
This section describes the menus and buttons available in the 3D Mode Solver.
File menu
View menu
File Menu Item Toolbar Button Description
Exit Closes OptiMode Solver.
File Menu Item Toolbar
Button
Description
Toolbars Select the toolbars that you want to make available in the GUI.
Status Bar Select to display the Satus Bar. Displays the cursor position coordinates.
Output Window Select to display the Output Window. Displays notification and error
messages regarding the script.
3D Graph Items (Detailed in View menu on page 119)
Data View
Real Displays the real part of the simulation graph.
Imaginary Displays the imaginary part of the simulation graph.
Amplitude Displays the amplitude of the simulation graph.
Phase Displays the phase of the simulation graph.
Intensity Displays the intensity of the simulation graph.
dB Applies the dB to the simulation graphic. Available for amplitude and
intensity.
OPTIMODE 3DMSIM MENUS AND BUTTONS
264
Solve menu
Data menu
Customize Customize the toolbars and the buttons.
File Menu Item Toolbar
Button
Description
Pause Pauses the simulation.
Resume Resumes teh simulation after it has been paused.
Abort A message appears and prompts you to verify that you want to abort the
simulation.
Data Menu Item Description
Save Refractive Index (es)... Opens the Save Refractive Index dialog box. Select the folder to save the
file to.
Save Modal Indexes... Opens the Save Modal Indices dialog box. Select the folder to save the file
to.
Save Mode(s)... Opens the Save Mode(s) dialog box. Select the directory to save the file to
and the base file name
Customize Customize the toolbars and the buttons.
File Menu Item Toolbar
Button
Description
OPTIMODE 3DMSIM MENUS AND BUTTONS
265
Preferences menu
Help menu
OptiMode Solver functions
This section contains descriptions of the functions and dialog boxes that you access
from OptiMode Solver 3D menus.
Note: Standard Windows functions and dialog boxes are not described.
Mode Found
The Mode Found window displays the modes that are found. The modal index and
the polarization are displayed for each mode found. If you set the 3D Mode Solver to
find more modes than the number of modes that are present, a red symbol appears
beside the first unfound mode and the calculation stops.
Preferences Menu Item Description
Region of Interest Select the start and end points for the Z axis and the X axis.
Height Plot Settings Select five different styles: Wireframe, Surface, Bar chart, Lines and Points.
Axis Settings Select settings for the X, Y, and Z axes.
Image Map Settings Set the image orientation, aspect ratio, and grid density.
Palette Settings Select the different settings for the palette.
Data Clamping Select the diferent settings for refractive index XZ-plane axis and the
sampling resolution.
Save settings now Saves teh setting automatically as you work.
Save settings on close Saves the settings automatically when you close OptiMode.
Layout Options Select the Grid, Layout Axes, and Zoom Method. Only available in the
layout view.
Preferences Menu Item Description
Help Topics Provides information on OptiMode Solver.
About OptiMode Solver. Provides information about Optiwave - mailing address, telephone and fax
numbers, e-mail address, and URL.
OPTIMODE 3DMSIM MENUS AND BUTTONS
266
Figure 131 Mode found windowFirst unfound mode
A message appears in the output (error) window advising you that the mode could not
be found.
Figure 132 Output WindowUnfound Mode Notification
To save the settings, from the Data menu, select one of the following:
Save Refractive Index (es)
Save Modal Indexes
Save Mode(s)
OPTIMODE 3DMSIM MENUS AND BUTTONS
267
Status Bar
To view the Status Bar, from the View menu, select Status Bar.
Figure 133 Status bar
The Status Bar indicates whether the 3D Mode Solver is searching for modes or has
completed the search.
3D Graph Items
To view the following items in the layout, from the View menu, select 3D Graph Items,
and then select the item that you want to view. A check mark appears beside the
selected item. For item descriptions see 3D Graph Items on page 132.
Customize
Open the Customize dialog box to select the settings for the OptiMode Analyzer
layout.
Toolbars tab
Select the toolbars that you want available in the layout, and create new toolbars.
OPTIMODE 3DMSIM MENUS AND BUTTONS
268
Figure 134 Customize dialog boxToolbars tab
Select toolbars: Click the check box beside the toolbars that you want to select.
Show Tooltips: Displays the name of the button on a toolbar when you position the
cursor on top of the button.
Cool Look: Changes the outline appearance of the toolbar buttons. When you select
the Cool Look check box, the button outlines disappear.
Figure 135 Select Cool Look check box - result
When you clear the Cool Look check box, button outlines appear.
Figure 136 Clear Cool Look check box - result
OPTIMODE 3DMSIM MENUS AND BUTTONS
269
Large Buttons: Displays larger buttons.
Figure 137 Large buttons vs. Small buttons
New: To create a new toolbar, click New. The New Toolbar dialog box appears.
Figure 138 New Toolbar dialog box
Type a name for the toolbar, and click OK. The new toolbar appears in the list of
available toolbars.
Reset: Restores default settings.
Commands tab
Select a toolbar to view the buttons that are on the toolbar. Select a button to view a
brief description of what the button does.
OPTIMODE 3DMSIM MENUS AND BUTTONS
270
Figure 139 Customize dialog boxCommands tab
To add buttons to a new toolbar, drag the buttons that you want to use to the toolbar
that you want to add them to.
Data menu
Save Refractive Index (es)...
To open the Save Refractive Index dialog box, from the Data menu, select Save
Refractive Index (es). The file extension is *.rid.
OPTIMODE 3DMSIM MENUS AND BUTTONS
271
Figure 140 Save Refractive Index Dialog box
Save Modal Indexes...
To open the Save Modal Index dialog box, from the Data menu, select Save Modal
Indexes. The file extension is *.dat.
Figure 141 Save Modal Indices Dialog box
OPTIMODE 3DMSIM MENUS AND BUTTONS
272
Save Mode(s)...
To open the Save mode(s) dialog box, from the Data menu, select Save Mode(s).
Figure 142 Save mode(s) Dialog box
Select a mode and click to the .>. button to move the mode from the Modes window
to the File name window.
Note: To move all modes at once, click .>>..
All modes listed in the File name window will be saved into separate .f3d files when
you click OK.
A single page icon in the .File. box beside the filename means the file is new. An
overlapped page icon means the file exists. When .Separate. is checked, one of the
two files represented exist. In the following figure, the first file in the list already exists.
When .Ok. is pressed, a dialog will appear asking to confirm if overwriting this file is
acceptable.
Figure 143 Overlap File Indication
These files can later be viewed in the 3D Viewer.
OPTIMODE 3DMSIM MENUS AND BUTTONS
273
Figure 144 3D Viewer
Separate Field Components: Use this check box to save full vector results in
separate ..f3d. files. When selected, the filenames box will show entries with
(depending on the mode polarization) information of the form .Major_Ex/Minor_Ey.
appended. This means when .Ok. is pressed, two files will be produced for every
mode chosen.
OPTIMODE 3DMSIM MENUS AND BUTTONS
274
Figure 145 Save mode(s) Seperately Dialog settings
Iterated Results
When a script has been used to generate solve results, the mode save dialog will
resemble the next figure.
OPTIMODE 3DMSIM MENUS AND BUTTONS
275
Figure 146 Save mode(s) With Iteration Dialog box
Notice that filenames now include the iteration number in the format. Otherwise, using
the dialog is the same as without iterations.
3D Graph Settings
See the section 3D Graph Settings on page 148 for details.
OPTIMODE 3DMSIM MENUS AND BUTTONS
276
OPTIMODE ANALYZER
277
OptiMode Analyzer
After you run a simulation, view the results in OptiMode Analyzer.
Figure 147 OptiMode Analyzer Window
Main parts of the GUI
The OptiMode_Analyzer GUI contains the following main windows:
Analysis Tools
Layout
Output
OPTIMODE ANALYZER
278
Analysis Tools
The Navigator window displays the types of views that are available for a given
iteration.
Figure 148 Navigator Window
OPTIMODE ANALYZER
279
Layout Window
The Layout window displays the graph, iteration, notes, etc that you selected in the
Navigator window.
Figure 149 Layout Window - Refractive Index View
Figure 150 Layout Window - Modal Result View
OPTIMODE ANALYZER
280
Figure 151 Layout Window - Notes
Figure 152 Layout Window - Solver Information
OPTIMODE ANALYZER
281
Figure 153 Layout Window - Modal Index (optional)
Figure 154 Layout Window - Group Delay (optional)
OPTIMODE ANALYZER
282
Figure 155 Layout Window - Dispersion (optional)
Output window
The Output window can be moved around from its original location. The Notification
and Error tabs are there as tools to display any notifications or errors that may occur
in the process. The Error tab is only for layout objects.
Main menu bar
The main menu bar contains the menus that are available in OptiMode Analyzer.
Many of these menu items are also available as buttons on the toolbars.
Figure 156 Main menu bar
OPTIMODE ANALYZER
283
Toolbars
Select the toolbars that you want to have available.
OptiMode Analyzer menus and buttons
This section describes the menus and buttons available in OptiMode Analyzer.
File menu
Standard Contains the buttons to perform
typical windows application
actions. Available in all views.
Iterations Select the iteration that you want
to view from the drop-down list.
Modes Select the mode result that you
want to see in the graph
Data View Select the type of graph to view:
Real Part, Imaginary Part, Ampli-
tude, Phase, Intensity, Decibel.
Only available for those XZ Slice
graphs.
Dockers Open or close the Navigator win-
dow and the Output window.
Avis / 3D
Graph
Only available for the XZ Slice
graphs.
File Menu Item Toolbar Button Description
Open (Ctrl+O) Opens an existing project. Select the project from the Open dialog box.
Print (Ctrl+P) Prints the active project.
OPTIMODE ANALYZER
284
Print Setup Allows you to set up the printer, page size, orientation, and allows you to
set other printing option.
Recent files Lists the most recent files that you worked on.
Exit Closes OptiMode Analyzer.
File Menu Item Toolbar Button Description
OPTIMODE ANALYZER
285
View Menu
View Menu
Item
Toolbar Button Description
Toolbars Select the toolbars that you want to make available in the GUI.
Navigator Select to open or close the Navigator window. Displays the types of views
available in OptiMode Analyzer.
Status Bar Select to display the Status Bar.
Output Window Select to display the Output Window. Displays notification and error
messages regarding the script.
3D Graph Items (Detailed in View menu on page 119)
Data View
Real Displays the Real Refractive Index data view in the Analyzer graph.
Imaginary Displays the Imaginary Refractive Index data view in the Analyzer graph.
Amplitude Displays the Amplitude vs Distance data view in the Analyzer graph.
Phase Displays the Phase vs Distance data view in the Analyzer graph.
Intensity Displays the Intensity vs Distance data view in the Analyzer graph.
dB Displays the Decibel vs Distance data view in the Analyzer graph.
Iteration Select the iteration that you want to view in the layout window.
OPTIMODE ANALYZER
286
Export menu
Preferences menu
Modes See above Select the mode you want to view.
Export Menu Item Description
Refractive Index - XY Real: Opens the Real Refractive Index dialog box for you to save your file as a real refractive
index file *.rri.
Complex: Opens the Refractive Index dialog box for you to save your file as a refractive index
file *.rid.
Mode - Optical Field Amplitude: Opens the Field Amplitude vs Distance dialog box for you to save your file as a field
amplitude file *.amp.
Phase: Opens the Field Phase vs Distance dialog box for you to save your file as a field phase
file *.pha.
Complex: Opens the Optical Field dialog box for you to save your file as an optical field file *.f3d.
Save Modal Indexes... Save a text version of all the modes found. The file extension is *.dat.
Preferences Menu
Item
Description
3D Graph Settings
Region of Interest In the Region of Interest dialog box, you can change the properties of the axis direction. You can
select a region for viewing the data then enter this data into the edit field.
Height Plot Settings In the Height Plot Setting properties box, you can select five different styles: Wireframe, Surface,
Bar chart, Lines and Points.
Axis Settings Displays the Axis Settings dialog box. You can select settings for the X, Y, and Z axes.
Image Map Settings Opens the Image Map Settings dialog box. You can set the image orientation, aspect ratio and
grid density.
Palette Settings Opens the Palette Settings dialog box. You can select different settings for the palette.
Data Clamping
Settings
Opens the Data Clamping Settings dialog box. You can select different settings for the refractive
index XZ-plane axis and the sampling resolution.
View Menu
Item
Toolbar Button Description
OPTIMODE ANALYZER
287
Help menu
Save setting now Default setting. Saves the settings automatically as you work.
Save settings on close Saves the settings automatically when you close OptiMode.
Help Menu Item Toolbar Button Description
Help Topics Provides information on OptiMode.
About OptiMode
Analyzer
Provides information about Optiwave - mailing address, telephone and fax
numbers, e-mail address, and URL.
Preferences Menu
Item
Description
OPTIMODE ANALYZER
288
OptiMode Analyzer functions
This section contains descriptions of the functions and dialog boxes that you access
from the OptiMode Analyzer menus.
Note: Standard Windows functions and dialog boxes are not described.
Customize
Open the Customize dialog box to select the settings for the OptiMode Analyzer
layout. For more information, see Customize on page 267.
Export menu details
Mode - Optical Field
Select Amplitude, Phase or Complex.
Amplitude
Select Amplitude to open the Export Field Amplitude Vs. Distance dialog box.
Save the file.
Figure 157 Export Field Amplitude Vs. Distance Dialog box
Phase
Select Phase from the XZ Slice or YZ Slice to open the Export Field Phase Vs.
Distance dialog box. Save your file.
OPTIMODE ANALYZER
289
Figure 158 Export Field Phase Vs. Distance Dialog box
Complex
Select Complex to open the Export Optical Field dialog box. Save the file.
Figure 159 Export Optical Field
Refractive Index
Select Real or Complex.
Real
Select Real to open the Export Real Refractive Index dialog box. Save the file.
OPTIMODE ANALYZER
290
Figure 160 Export Real Refractive Index
Complex
Select Complex to open the Export Refractive Index dialog box. Save the file.
Figure 161 Export Refractive Index
Preferences menu details
For more information, see Preferences menu on page 286.
APPENDIX A: OPTI2D GRAPH CONTROL
291
Appendix A: Opti2D Graph Control
The Graph control is a versatile, powerful easy-to-use tool for observing data. This
section gives a brief description of some of the 2D graph control features and an
explanation of how to use them.
Figure 162 Opti2D Graph Control
APPENDIX A: OPTI2D GRAPH CONTROL
292
User interface features
Information windows
There are two main windows visible on the main display:
Info-window
Legend-window
Both can be launched using the Graph menu or Graph tools.
Feature Description
Large data handling capabilities Opti2d Graph control is capable of handling millions of points.
Optimized drawing Even with a large number of data points, Opti2D Graph Control is optimized to allow for
smooth tracing and planning of graphs.
Moveable information windows Moveable information windows allos for placement of the windows in the most
convenient location in the graph window.
Crosshair Visible cross to make seeing trace points easier.
Graph toolbox The popup Graph toolbox allows easier access to the view/organizing/editing
capabilities of the Opti2D Graph tool.
Graph Menu button The Graph menu button allows you to access a full list of functionality associated with
the graphs and their data.
APPENDIX A: OPTI2D GRAPH CONTROL
293
Info-window
Figure 163 Info-Window
When you access the Info-window, it displays in the work area of the graph view. By
default, it displays the current position (in data-base coordinates) of the cursor. When
you add marker, tracers, and regions, the Info-Window expands to show the details of
these components.
When you use the Select tool, if you double click in the window, the Info-Window
properties dialog displays (see Figure 164).
Figure 164 Info-Window settings dialog box
APPENDIX A: OPTI2D GRAPH CONTROL
294
Legend
You can switch the Legend on and off using the Legend tool in the Graph toolbox, or
the Graph menu. The Legend displays a list of all the curves displayed in the graph
with the corresponding line color that is used to display those curves. Use the
Minimize/Maximize button to change the display of the Legend, or close the Legend
by using the Close button.
Figure 165 Legend
Graph toolbox
To access the Graph toolbox, right-click in the graph view. Most graph
editing/viewing/organizing capabilities are accessible using the toolbox (see Figure
166).
Figure 166 Popup Graph Toolbox
APPENDIX A: OPTI2D GRAPH CONTROL
295
Graph tools
Graph menu
item
Toolbar button Description
Select Allows you to manipulate and move most of the objects on the Graph.
Note: To edit the properties of an object, double-click the object in the
graph view.
Zoom Zoom in: You can select a rectangular region, or click in the graph view for
proportional zoom in.
Extra features:
Zoom out: Hold Ctrl and click to perform a zoom out.
Reset Zoom Level: Double-click in the graph view to return to the default
Zoom level.
Pan Allows you to pan from side to side in the graph display to see parts of the graph
that may not be visible at the existing Zoom level or resolution.
To Pan, click to grab the display, and move teh cursor from side to side.
Extra features:
If you press Ctrl while panning the graph display, accelerated pan is engaged,
which makes the pan much faster. This feature is useful when you work under a
high zoom factor.
Grid Allows you to turn the grid lines on/off. Click on the grid tool to toggle the grid
lines.
Tracer Allows you to select a curve and trace over it while viewing the exact positional
values on the curve in the Info Winodw. To select a different curve, double click
in the graph view.
Extra features:
You can freeze the tracer by pressing Ctrl. Click to place a marker on the curve
at that position.
Press Shift and drag the cursor to put the tracer into a high-resolution trace that
iterates through each element in the source data array. This allows for a very
detailed scan of the data and to find peaks that the standard trace may omit.
Trace Allows you to select a curve and trace over it while viewing the exact positional
values on the curve in the Info Window. The Difference Tracer differs from the
Tracer tool because it allows you to create a second tracer to compare values on
either the same curve or on different curves. To select the next curve, double click
on the curve in the graph view.
Extra features:
By Pressing the Control Key the tracer will freeze in its present position. Then by
pressing the left mouse button a marker will be placed on that position on the
curve.
By Pressing the shift key and dragging the mouse the tracer jumps into a high
resolution trace that iterates through each element in the source data array. This
allows for a very detailed scan of the data and to find peaks that the standard
trace may omit.
APPENDIX A: OPTI2D GRAPH CONTROL
296
Graph menu
To open the Graph menu, click the blue icon at the top left corner of the Graph view.
Marker Allows you to place markers in the active graph view. The markers can be
horizontal, vertical or both. The position of the markers is displayed in the Info
Window.
Region Allows you to select a horizontal, vertical or rectangular region in the active graph
view. The coordinates of the selection are displayed in the Info Window.
Label Allows you to place customized labels in the active graph view.
Legend Allows you to toggle the Legend on and off within the active graph view.
Info Allows you to toggle the Info-Window on and off within the active graph view.
Layout Allows you to reset the layout and place all windows in their default positions.
Graph menu
item
Toolbar button Description
APPENDIX A: OPTI2D GRAPH CONTROL
297
Figure 167 Graph Menu
Graph Menu button
The Graph Menu button is in the top left corner of the graph view.
Tools
The tools available from the Graph menu include:
Select
Zoom
Pan
Grid
Tracer
Difference Tracer
Marker
APPENDIX A: OPTI2D GRAPH CONTROL
298
Region
Label
Windows
The information windows available in the Graph Menu include:
Legend
Info Window
Reset Layout
Printing and exporting files
Print
Opens the Print dialog box and allows you to print an image of the active graph view.
Figure 168 Print Dialog box
APPENDIX A: OPTI2D GRAPH CONTROL
299
Print to BMP file
Exports an image of the active graph view to a file in .bmp format using the Save As
dialog box.
Figure 169 Print to BMP File
Print to EMF file
Exports an image of the active graph view to a file in .emf format using the Save As
dialog box.
Figure 170 Print to EMF File
Copy image to clipboard
Copies an image of the active graph view to the clipboard.
APPENDIX A: OPTI2D GRAPH CONTROL
300
Utilities
Tool setup: Allows you to modify the properties of some of the tools.
Note: The tool property dialog only launches if the active tool allows settings to
be changed.
Set Active Display: Allows you to select the active display. For more information see
Displays on page 301.
Properties: Allows you to launch the Graph Properties dialog. For more information
see Graph Properties dialog on page 302.
Export Data...: Launches a dialog box that displays a list of all the curves on the
graph control and displays the data coordinates of those curves. It also allows you to
export the data points to a text file.
Figure 171 Data Table dialog box
Help
Launches a help dialog box specifically related to the Opti2D Graph Control.
Import Curve: Allows you to import a curve from a text file. The file must be in the
format below.
X1 (tab) Y1
X2 (tab) Y2
Etc
APPENDIX A: OPTI2D GRAPH CONTROL
301
Ex:
// (Beginning of file) (this line should not be in the file)
123.23 123.45
123.24 124.55
123.25 555.5
123.26 222.22
//(End of file) (this line should not be in the file)
Displays
The graph is made up of layered displays. Each display has a pair of axes. By default,
the control contains one display with Axis X on the bottom of the display and Axis Y
on the left. In the case of complex graphs that require more than one pair of axes,
more than one display exists.
Figure 172 Active Display Dialog box
Any objects that you place on the graph are placed on the active graph view.
Therefore, if you place a marker on the graph and Display 1 is active, the new marker
is based on the coordinate system of Display 1. If you want to add a marker on Display
2, you must select the main menu in the Graph menu. This launches the Graph
Display dialog, which permits you to select a different display. In complex graphs, the
displays are layered one on top of the other.
APPENDIX A: OPTI2D GRAPH CONTROL
302
Figure 173 Graph display
Graph Properties dialog
The Graph Properties dialog allows you to manage properties of the graph.
The Graph Properties dialog tabs include:
X-Axis
Y-Axis
Properties dialog boxY-Axis tab
Grid
Fonts
Legend
Properties dialog boxLegend Tab
Label Management
X-Axis
The X-Axis Tab allows you to set properties of the X-axis.
APPENDIX A: OPTI2D GRAPH CONTROL
303
Figure 174 Properties Dialog box - X-Axis tab
The values in Scale Type can be:
Linear
Logarithmic
DB
The values in Format Value can be:
Decimal: simple decimal values (1000.0, 2000.0, 3000.0)
Exponential: exponential notation (1.0-e3, 2.0-e3, 3.0-e3)
Engineering: engineering notation (1k, 2k, 3k)
Scientific: scientific notation (1.0 x 103,2.0 x 103, 3.0 x 103)
Prefix: You can place a prefix string before each of the scale values.
Suffix: You can place a suffix string after each of the scale values (e.g. 1000.0 nm)
Automatic Range, Min Value, Max Value: You can check Automatic Range, which
sets the range according to the curves in the displays, or force the axis range to
certain values.
Tick marks: You can set the number of major and minor tick marks on the Axis.
Y-Axis
The Y-Axis Tab allows you to set properties of the Y-axis. To see descriptions of the
Y-Axis dialog fields, see .X-Axis. above.
APPENDIX A: OPTI2D GRAPH CONTROL
304
Curve
The Curve tab allows you to set various properties of the curves that are added to the
control.
Figure 175 Properties dialog box - Curves tab
Curve List: Displays all of the curves on the active display.
Curve Properties
Color: Allows you to choose the color of the selected curve.
Line Style: Allows you to select the line style of the selected curve.
Plot Style: Allows you to select the plot style.
The values in Plot Style can be:
Point
Line
Segment Left
Segment Right
Segment Center
Step Left
Step Right
Drop Line
APPENDIX A: OPTI2D GRAPH CONTROL
305
Line Thickness: Allows you to select the thickness of the currently plotted curve line.
Values range from 1 to 8.
Point Style: Allows you to select the style in which each point on the curve will be
drawn.
The values in Point Style can be:
None
Circle
Square
Diamond
Cross
X
Triangle
Star
Grid
The Grid tab allows you to select which of the grid lines on the display are visible, and
what color they are to be displayed in.
Figure 176 Properties Dialog box - Grid tab
APPENDIX A: OPTI2D GRAPH CONTROL
306
Fonts
The Font Tab allows you to select the fonts used for displaying titles and axis values.
Figure 177 Properties Dialog box - Fonts tab
Legend
Legend tab simply has a toggle for the Legend Visible/Invisible.
Figure 178 Properties Dialog box - Legend Tab
APPENDIX A: OPTI2D GRAPH CONTROL
307
General
The General tab is used for editing the titles of any axis as well as the graph title itself.
Figure 179 Properties Dialog box - General tab
Label Management
The Label Management tab allows you to remove and edit labels on the graph. You
can also access the Label Management function using the Label tool in the Graph
toolbox.
Note: For removing a large number of labels or labels that may have been
positioned at coordinates that are not in the viewable area, it is easier to remove
or edit them using the Label Management tab, because of the multiple selection
feature.
APPENDIX A: OPTI2D GRAPH CONTROL
308
Figure 180 Properties Dialog box - Label Management tab
Use the Label Properties dialog box to edit the name or coordinates of the selected
label.
Figure 181 Label Properties Dialog box
APPENDIX B: FILE FORMATS
309
Appendix B: File Formats
Generic file format
The Generic file format is a text format that consists of three data columns; X, Y, and
Z, separated by space.
Note: This format is one of the export formats. It is not supported by any of the
viewers.
Generic File Format
Data file formats
Opti products use the text data format for saving the simulation results and reading
user defined fields and index of refraction distributions:
Real Data 2D File Format: BCF2DPC (not used in OptiMode)
Real Data 3D File Format: BCF3DPC
Complex Data 2D File Format: BCF2DCX (not used in OptiMode)
Complex Data 3D File Format: BCF3DCX
User Refractive Index Distribution File Format
Opti products also use several different formatted text files for reading and saving
optical fields and index of refraction distributions.
Table 3: Generic File Format
X Y Z
1 1 1
X Y Z
2 2 2
X Y Z
3 3 3
... ... ...
. . .
X Y Z
N N N
APPENDIX B: FILE FORMATS
310
Real Data 3D File Format: BCF3DPC
This format applies to input and output files that contain real data as text. The file
contains the file header, number of x and y data points, minimum and maximum
values of x, y and z, and the real z(x,y) data points. The data points are presented in
one column with the order determined by scanning the x and y coordinates.
Files that follow the BCF3DPC format
Output files in OptiMode Solver/Analyzer: [*-x.amp], [*-y.amp], [*-x.pha], [*-
y.pha], [*-x.rri], [*-y.rri]
Example: Real refractive index in OptiMode [*.rri]
In this example, the transverse mesh extends from -5.000000E+000 to
5.000000E+000 microns. The propagation distance extends from 0.000000E+000 to
1.000000E-001 millimetres. A Linear Waveguide with refractive index 1.5 is laid out
on a wafer with the index 1.3. The number of mesh points is 100 x 31.
BCF3DPC File header
NX NY number of x and y data points
XMIN XMAX minimum and maximum x values
YMIN YMAX minimum and maximum y values
ZMIN ZMAX minimum and maximum z values
Z1 real z data point with coordinates (xmin, ymin)
Z2 real z data point with coordinates (xmin+dx, ymin)
Z3 real z data point with coordinates (xmin+2dx, ymin)
.
ZNX real z data point with coordinates (xmax, ymin)
ZNX+1 real z data point with coordinates (xmin, ymin+dy)
.
.
ZN last real z data point with coordinates (xmax, ymax), where N=NXxNY
BCF3DPC file header
100 31 number of x and y data points
-5.000000E+000 5.000000E+000 minimum and maximum transverse mesh values
APPENDIX B: FILE FORMATS
311
Complex Data 3D File Format: BCF3DCX
This format applies to input and output files that contain complex data as text. The file
contains the file header, number of x and y data points, mesh widths in x and y, and
the complex z(x,y) data points. The data points are presented in one column with the
order determined by scanning the x and y coordinates.
0.000000E+000 1.000000E-001 minimum and maximum distance
0.000000e+000 1.000000E+000 unused values added to conform to the format
Note: OptiMode adds a line of default values 0 and 1 to
conform this format.
1.300000E+000 real z data point with coordinates (xmin, ymin)
1.300000E+000
1.300000E+000
.
1.300000E+000
1.300000E+000
.
.
1.300000E+000
BCF3DCX 3.0 file header
NX NY number of x and y data points
Xmin Xmax Ymin Ymax minimum and maximum x and y values
Z1 complex number z data point with coordinates (xmin, ymin)
Z2 complex number of z data point with coordinates (xmin+dx, ymin)
Z3 complex number z data point with coordinates (xmin+2dx, ymin)
.
ZNX complex number z data point with coordinates (xmax, ymin)
ZNX+1 complex number z data point with coordinates (xmin, ymin+cy)
.
.
ZN last complex number z data point with coordinates (xmax, ymax),
N=NXxNY
APPENDIX B: FILE FORMATS
312
where dx =(xmax-xmin)/(nx-1) and dy =(ymax-ymin)/(ny-1).
Files that follow the BCF3DCX format
Complex Mode results in OptiMode: [*.f3d]
Example: Complex field Mode values [*.f3d]
In this example, the number of data points is 100 and equals to the number of mesh
points. The transverse mesh extends from -5.000000E+000 to 5.000000E+000
microns giving the mesh width 1.000000E+001 microns.
BCF3DCX 3.0
100 100
1.000000E+001 1.100000E+001 2.000000 E+001 3.000000
E+001
-4.582487025358980E-004, -2.411965546811583E-002
1.813879122411751E-004, -2.322439514101689E-002
8.864140535377826E-004, -2.245463661588051E-002
.
.
.
-1.004141897700716E-002, 7.709994296904761E-003
-9.736326254112302E-003, 8.732395427319460E-003
APPENDIX B: FILE FORMATS
313
User Refractive Index Distribution File Format
Example
Default format for 3D Refractive Index Distribution (*.rid)
UPI2DRI 3.0 file header
NPM number of points in mesh
Xmin Xmax min and max mesh points
Z1 first complex number data point
Z2
.
.
.
second complex number data point
ZN last complex number data point
UPI2dRI 3.0
500
-50 50
1.491000000000000E+000, 0.000000000000000E+000
1.491000000000000E+000, 0.000000000000000E+000
.
.
.
1.491000000000000E+000, 0.000000000000000E+000
UPI3DRI 3.0 file header
NPMX NPMY number of points in mesh in X and Y
Xmin Xmax Ymin Ymax min and max mesh points in X and Y
Z1 first complex number data point
APPENDIX B: FILE FORMATS
314
Example
Complex Data 3D Vectorial File Format: BCF3DCXV
This format applies to input and output files that contain vectorial complex data. The
file contains the file header, number of x and y data points, mesh widths in x and y,
and the complex z(x,y) data points both for Ex and Ey field components. The data
points are presented in one column with the order determined by scanning the x and
y coordinates.
Z2
.
.
.
second complex number data point
ZN last complext number data point
UPI3DRI 3.0
151 121
-7.5 7.5 -3 3
3.300000000000000E+000, 0.000000000000000E+000
3.300000000000000E+000, 0.000000000000000E+000
3.300000000000000E+000, 0.000000000000000E+000
.
.
.
000000000000E+000, 0.000000000000000E+000
BCF3DCXV file header
Nx Ny number of x and y mesh points
Xmin Xmax Ymin Ymax minimum and maximum X and Y coordinates
Za1
complex field (Ex field component) at point with coordinates
(xmin, ymin)
Za2 complex field (Ex field component) at point with coordinates
(xmin+dx, ymin)
APPENDIX B: FILE FORMATS
315
where N=Nx*Ny, dx=(xmax-xmin)/(Nx-1), and dy=(ymax-ymin)/(Ny-1).
Note: The total number of data points is twice the number of the total mesh points
Nt=2*N.
Za3 complex field (Ex field component) at point with coordinates
(xmin+2dx, ymin)
.
ZaNX complex field (Ex field component) at point with coordinates
(xmax, ymin)
ZaNX+1
.
.
complex field (Ex field component) at point with coordinates
(xmin, ymin+dy)
ZaN (N=Nx*Ny) complex field (ex field component) at point with coordinates
(xmax, ymax)
Zb1 complex field (Ey field component) at point with coordinates
(xmin, ymin+dy)
Zb2 complex field (Ey field component) at point with coordinates
(xmin+dx, ymin)
Zb3
.
complex field (Ey field component) at point with coordinates
(xmin+2dx, ymin)
ZbNX complex field (Ey field component) at point with coordinates
(xmax, ymin)
ZbNX+1
.
.
complex field (Ey field component) at point with coordinates
(xmin, ymin+dy)
ZBN (N=Nx*Ny) complex field (Ey field component) at point with coordinates
(xmax, ymax)
APPENDIX B: FILE FORMATS
316
APPENDIX C: PARSER SUPPORTED FUNCTIONS
317
Appendix C: Parser supported functions
The following functions are supported by the internal parser of OptiMode. They are
not available in the Script page because that environment expects standard Visual
Basic. Use these functions in the Expression fields of Waveguide Properties dialog
boxes, or as the User Variables and Functions definitions. They may also be used in
the User Function Profile definitions, in the Function Body or Limits fields. These
parser functions are independent of VB Script. In the Scripting page of OptiMode,
please use only VB Script functions. See the OptiMode Visual Basic Reference Guide
for more information on VB functions.
Supported functions
abs( x ) absolute value of x: |x|
arccos({-1..1}) return values range: 0 to radians
arcsin({-1..1}) return values range: /2 to /2 radians
arctan( x ) return values range: /2 to /2 radians
arccosh({1}) return values type: [rad]
arcsinh({0}) return values type: [rad]
arctanh({-1..1}) return values type: [rad]
bessJ0( x ) Bessel function of the first kind: order 0
bessJ1( x ) Bessel function of the first kind: order 1
bessJn( n, x ) Bessel function of the first kind: order n
bessY0( x ) Bessel function of the second kind: order 0
bessY1( x ) Bessel function of the second kind: order 1
bessYn( n, x ) Bessel function of the second kind: order n
ceiling(x) returns the smallest integer greater or equal x
cerf(x) complementary error function for x (see erf(x)
function)
cos(x) cosine of x
cosh(x) hyperbolic cosine of x
APPENDIX C: PARSER SUPPORTED FUNCTIONS
318
delta(x) returns: 1, for x =0; 0, for all other values of x (see
sign(x), step(x), wnd(x, width) functions)
deg(radian) converts radians to degrees
erf(x) error function for x (see cerf(x) function)
exp(x) exponential function
floor(x) returns the nearest integer lesser than x
fmod(x,y) returns the remainder f of x / y such that x =i * y +f
where i is an integer, f has the same sign as x,
and the absolute value of f is less than the
absolute value of y
gamma(x) gamma function of 'x'
hermite(n, x) Hermite polynomial of order n for x
hypot(x, y) Sqrt(x2 +y2)
laguerre(n, x) Laguerre polynomial of order n for x
ldexp(x, p) x*2p
legendre(n, x) Legendre function Pn(x)
lg(x, b) log x in base b
ln(x) log in base e
log10(x) log in base 10
logb(x) Extracts the exponential value of x, as though x
were represented with infinite range. If the
argument x is denormalized, it is treated as if it
was normalized.
pow(x,p) computes x raised to the power of p: xp
poisson(x, mean) Poisson distribution at x
APPENDIX C: PARSER SUPPORTED FUNCTIONS
319
rad(degree) converts degrees to radians
sign0(x) return values:
-1 for x <0
0 for x =0
+1 for x >0
(see step(x), wnd(x, width), delta(x), sign(x)
functions)
sign(x) return values:
-1 for x <0
+1 for x >=0
(see step(x), wnd(x, width), delta(x), sign0(x)
functions)
sin(x) sine function of x, x [rad]
sinc(x) Sin(x) / x, x [rad]
sinh(x) hyperbolic sine function of x, x [rad]
sqr(x) power 2 of x
sqrt(x) square root of 'x'
step(x) returns:
0 for x <0
+1 for x >=0
(see sign(x), delta(x), wnd(x, width) functions)
tan(x) tangent function of x, return values range:
{0..inf}, x [rad]
tanh(x) hyperbolic tangent function of x, x [rad]
tcheby(order, x) Tchebychev function for x
APPENDIX C: PARSER SUPPORTED FUNCTIONS
320
wnd1(x) window function (window width =1), returns:
+1 for x in the range of: <-1/2 , +1/2 >
0 for x outside the range
(see step(x), sign(x), delta(x), wnd(x, width)
functions)
wnd(x, width) window function, returns:
+1 for x in the range of <-width/2 , +width/2 >
0 for x outside the range
(see step(x), sign(x), delta(x), wnd1(x) functions)
APPENDIX C: PARSER SUPPORTED FUNCTIONS
321
Mathematical constants
Physical constants
pi =3.141592653589793238462643
e =2.718281828459045235360287
euler =0.577215664901532860606512
catalan =0.915965594177219015054604
goldenRatio =1.618033988749894848204587
_c =2.9979e8 [m/s] Speed of light in free space
_e =8.8542e-12 [F/m] Permittivity in free space
_mi =4*pi*10e-7 [H/m] Permeability in free space
_kT =25.853 [meV] Thermal energy
_NA =6.022045e23 Avogadro number
_kB =1.3807e-23 [J /K] Boltzmann constant
_h =6.626e-34 [J s] Planck constant
_hr =1.05459 e-34 [J s] Reduced Planck Constant
_lc =2.4263096e-1 [m] Compton wavelength of electron
_Ry =13.6058 [eV] Rydberg energy
_ri =1.09737312e7 [1/m] Rydberg constant
_q =1.60219e-19 [C] Elementary charge
_me =9.1095e-31 [kg] Free electron mass
_u =1.660531e-27 [kg] Atomic mass unit
_mp =1.672614e-27 [kg] Proton rest mass
_mn =1.674920e-27 [kg] Neutron rest mass
_f =9.648 6e4 [C/mol] Faraday constant
_a0 =5.2917715e-11 [m] Bohr radius
_re =2.817939e-15 [m] Electron radius
_mb =9.274096e-24 [J /T] Bohr magnetron
APPENDIX C: PARSER SUPPORTED FUNCTIONS
322
System variables
System variables are related to the selected waveguide and its closest neighbour.
_d distance between the selected waveguide and its
closest neighbour
_dx distance from the selected waveguide center
_sdx signed distance from the selected waveguide
centre (-ve on left, +ve on right)
_dy distance from the substrate cladding interface
_W width of the selected waveguide
_W1 width of the closest neighbour
_x waver x coordinate
_y wafer y coordinate
_z wafer z coordinate measured from the beginning
of the layout
_Ere real part of the field component
_Eim imaginary part of the field component
_EE sum of squares of field components:
_Ere
2
+_Eim
2

_Emod magnitude of the field component:
(sqrt (_Ere
2
+_Eim
2
) )
_Polariz polarization: 0 =TE, 1 =TM
_Wavelen wavelength
_N_real real part of current value of refractive index
_N_real imaginary part of current value of refractive index
APPENDIX C: PARSER SUPPORTED FUNCTIONS
323
Figure 182 System variables definition
Figure 183 _sdx Definition
Notes
_dx is the distance from the waveguide centre. Use of this variable will always make
waveguides symmetric about the center. Use _sdx if an unsymmetric waveguide is to
be made.
_N_real and _N_imaginary are sometimes useful when waveguides overlap. For
example if waveguides are made by a non-linear process that occurs on exposure to
high energy radiation, and the point in question has been exposed by two processes,
then the refractive index assumed will be the refractive index from the more intense
exposure. If _N_real and _N_imaginary are observable in the User Function Profile
definition, suitable logic can be written to get each point to assume the correct value
of refractive index. For each point in the transverse plane, the waveguides are
considered one at a time, and the appropriate refractive index applied. If the _N_real
and _N_imaginary are observed at each profile application, the existing refractive
Wafer cross-section with 2 waveguides
substrate
cladding
(_x,_y,_z)
_dx
_dy
W W1
_d
APPENDIX C: PARSER SUPPORTED FUNCTIONS
324
index can be compared to the refractive index generated by the current profile, and
the update will occur only if the new refractive index is greater than the existing one.
More sophisticated algorithms could be implemented, if required.
Function Limits and _FnRslt_
You can limit your function by specifying the argument limits, for example enter the
expression: x*x+y*y<1 to limit the function domain by a circle of radius 1. You can also
limit the function by using the variable _FnRslt_ which is the function value. For
example, enter the Limits expression: abs(_FnRslt_)<1 to assure that your function is
clipped when its absolute value is equal or exceeds 1. After pressing Add/Apply you
add your function definition to the list of user functions. _FnRslt_ represents a result
value of the base function execution for given set of arguments. Predefined for use in
the Domain Function expressions.
Examples
Expression:
ln(-x)+ln(x)
will result in "out of domain" message when validated. During execution time it will
return zero as the result of expression evaluation. See the picture below
The same behavior will result from the following example of user defined functions.
Expression:
Fnc(x) =fncA(x)+fncB(x)
where
The fncA(x) exists only for x values smaller than 10, the fncB(x) exists for x values
greater than 10. The Fnc(x) domain is a "sum" of compound functions domains,
excluding each other. In effect there is no x, which could satisfy both domains
requirements, causing Fnc(x) always returning zero when executed, or "out of
domain" message when validated (see Figure 184).
ATTENTION
The Function Limits describes function's domain, i.e.: function does not exists
outside the specified area. Special care should be taken when building
expressions with use of functions, so the don't exclude each other.
fncA(x) =2*x Function Limits: x <10
fncB(x) =x/2 Function Limits: x >10
APPENDIX C: PARSER SUPPORTED FUNCTIONS
325
Figure 184 Variables and Functions dialog box
APPENDIX C: PARSER SUPPORTED FUNCTIONS
326
Operators and their precedence
Table 1 below lists operators and their precedence and associativity values. The lines
separate precedence levels. The highest precedence level is at the top of the table.
Table 1 OperatorsPrecedence and associativity values
Symbol Name or meaning Associativity
Highest precedence
() Function call
Unary minus
+ Unary plus
* Multiply left to right
/ Divide
+ Add left to right
Subtract
< Less than
< = Less than or equal to
> Greater than
> = Greater than or equal to
== Equal left to right
!= Not equal
= Assignment right to left
Lowest precedence
APPENDIX D: CREATING A DLL PROFILE
327
Appendix D: Creating a DLL profile
Overview
A Waveguide Profile can be implemented using a Win 32 Microsoft Dynamic Link
Library (DLL). These profiles are known as User DLL Profiles. A User DLL Profile is
defined using one or two functions: a Profile Function and an optional Limit Function.
These functions are described in the Profile Designer chapter. Each function is
defined in a similar way. For this discussion, we will normally not distinguish between
the Profile and Limit Functions. The following restrictions apply to the DLL used by
User DLL Profiles. Functions implemented using Microsoft 'C' version 6 or greater are
supported. However, it should be possible to use other languages as long as a
properly formatted DLL is created. If a Limit Function is used, it must reside in the
same DLL that contains the Profile Function. Creating a DLL for use with a User DLL
Profile is a three-phase process called the 'build process'. The phases of the build
process are:
Edit
Compile
Link
Phase 1: Edit
The first step in creating a DLL for use with a User DLL Profile is to create the C
programming instructions that will be used to define the profile. Any text editor can be
used to enter the C instructions. The editor provided by Microsoft's Visual Studio is
well suited to this purpose. The C instructions are stored in a file with a '.c' file
extension. This file is called a source file. The function name and the parameters to
that function are defined in the User DLL Profile View in the Profile Designer. You must
create a function whose function name and parameter list matches the parameters
specified in the User DLL Profile View.
Each parameter will have a type 'double' and the function must return a double value.
The Profile Function and Limit Function can call other functions. These functions can
be created by you or can be packaged in a third party library. Many source files
containing many functions can be used to implement a User DLL Profile. The only
restriction is that at least one of those functions must match the name and parameter
list of the Profile Function specified in the User DLL Profile. If a Limit Function is used,
then at least one of these functions must match the name and parameter list of this
function.
Phase 2: Compile.
The C code created in phase 1 can be compiled using a C or C++compiler such as
Microsoft Visual C++. However, the code must be compiled as C code. This means
the source file extension must be '.c'. The Microsoft C++compiler will compile files
with a '.c' extension as C code. No C++constructs can be used in the Profile Function
or Limit Function. The compiler will report any errors or warnings discovered while
APPENDIX D: CREATING A DLL PROFILE
328
parsing the source file(s). Any errors must be corrected by returning to the edit phase
the process. The
Edit and Compile phases of the process must be repeated until all source files compile
without error.
Phase 3: Link
The compiled C code is then passed to a linker for the final link phase of the build
process. This phase creates the file with the '.dll' extension that is specified in the 'DLL
file name' field of the User DLL Profile view. As in the compile stage, the linker may
encounter errors. These errors must all be corrected before the dynamic link library is
created.
Summary
The complexity of the User DLL profile is limited by the capabilities of the compiler and
the software development skills of the user. If necessary, multiple functions spanning
multiple files can be used to create the profile function. Optiwave supports this feature
for the Microsoft C compiler. However, you should be able to build the DLLs with any
compiler supporting DLL creation. Use of other compilers may require some
experimentation with compilation and linking options.
Creating a dynamically linked library (DLL) for User DLL profile using
Microsoft Visual Studio VC6++
To create a .dll suitable for OptiMode User DLL profiles using Microsoft Visual Studio
VC6++, perform the following procedure:
Step Action
1 Select File >New to create a new win32 dll project.
2 On the Projects tab, select Win32 Dynamic-Link Library.
3 Specify a file name, for example UserDLL.
4 Click OK.
5 Select An Empty Dll Project.
6 Click Finish and OK.
7 Manually add .c and .h files to the project (for example, testdll.c and
testdll.h).
Note: testdll.h contains declarations of the functions to be exported.
Make sure that the declaration is preceded by the following directive
APPENDIX D: CREATING A DLL PROFILE
329
=__declspec(dllexport). If not, the function is not going to be exported.
testdll.cpp contains function definitions.
8 Build the .dll file.
Alternatively, you can use the template project (UserDLL.dsp) distributed with
OptiMode (see samples directory) and simply update the dll functions according to
your needs.
APPENDIX D: CREATING A DLL PROFILE
330
APPENDIX E: BATCH PROCESSING
331
Appendix E: Batch Processing
Overview
The Batch Processing feature is useful for projects that take a long time for the
simulation to finish. Instead of starting the simulation from the OptiMode Designer in
an interactive session, the simulations can be listed in a batch file. Running the batch
file will start each simulation in the order of the list. This will create a series of analyzer
files (and, if requested, batch processing log files) that can be reviewed at a later time.
The analyzer .m3a files will be written to the current directory. If you want to view the
individual data files, you manually start the analyzer, and open the .m3a data files.
Stucture of the Batch Command Line
The first word in the command line (required) is the name of the OptiMode simulator
executable file, Opt i Mode_Sol ver . This is followed by a sequence of switches for
specifying which OptiMode simulator to use, which project file (.mxd file) to use, and
other options in the batch simulation. To let the computer know where to find the file
Opt i Mode_Sol ver . exe, you need to set the path to that file, e.g. C:\Program Files
(x86)\Optiwave Software\OptiBPM 12\bin (or wherever you have installed OptiMode
on your computer).
The second word in the command line (required) is a switch specifying which
simulator you would like to call. The table below lists all the switch names for all the
simulators:
Table, Switches for specifying mode solvers
The third word in the command line (optional) is /BATCH. This will direct output to
stdout (which usually contains comments on the run-time progress) away from the
Notification window in the Analyzer file. Used alone, the stdout comments will go to
the window with the batch file. These comments can also be redirected to a file with
the /LOG switch (see below).
Mode Solving Simulator Switch
Real valued modes by ADI method /SOLVEREALADI
Complex modes by ADI method /SOLVECOMPLEXADI
Modes in anisotropic materials /SOLVEANISO
Vector modes in fibres /SOLVEFIBREVECTOR
LP modes in fibres /SOLVEFIBRELP
Modes by the finite difference method /SOLVECOMPLEXFD
APPENDIX E: BATCH PROCESSING
332
The next word in the command line (required) is the path and project file name. It is a
string contained in quotation marks, e.g.
C: / Fol der A/ Fol der B/ pr oj ect name. mxd.
The next two words are optional: /LOG and a path and file name for the log data, e.g.
C: / Fol der A/ Fol der B/ l ogf i l e. l og If no file name is specified, a default one
will be used: Opt i LogFi l e. l og. The messages document any warnings as well as
any errors that may have resulted in the solving not continuing to completion. The
format of the stdout file starts with the name of the solver file, and is followed by the
solver type. Each output message is streamed to stdout until the solver has exited,
either by error or successfully. This exit is also logged to stdout. All the messages are
time stamped, and no extraneous system or 3rd party data is added to the log file
unless it is relevant to the success or failure of the simulation.
Examples of logged exiting scenarios:
Normal termination: end of simulation
Security error: protection key not found, invalid server
Application failure: user closes application, out of memory or hard drive space
Design problems: mode not found, insufficient data for simulation
Example of a Batch Processing File
Opt i Mode_Sol ver / SOLVEREALADI / BATCH " C: \ r eal Sol veTest . mxd" / LOG t est _l ogf i l e. l og
Opt i Mode_Sol ver / SOLVECOMPLEXADI / BATCH " C: \ compl exSol veTest . mxd" / LOG t est _l ogf i l e. l og
Opt i Mode_Sol ver / SOLVEANI SO / BATCH " C: \ r eal Sol veTest . mxd" / LOG t est _l ogf i l e. l og
Opt i Mode_Sol ver / SOLVEFI BREVECTOR / BATCH " C: \ r eal Sol veTest . mxd" / LOG t est _l ogf i l e. l og
Opt i Mode_Sol ver / SOLVEFI BRELP / BATCH " C: \ r eal Sol veTest . mxd" / LOG t est _l ogf i l e. l og
Example of stdout output, format in ascii
***Fr i Mar 26 14: 17: 52: START Opt i Mode_Sol ver
Fr i Mar 26 14: 17: 52: Fi l e: C: \ r eal Sol veTest . mxd
Fr i Mar 26 14: 17: 52: The cur r ent out put f i l e i s
C: \ r eal Sol veTest I . m3a
Fr i Mar 26 14: 17: 55: I t er at i on 1 st ar t ed. Fr i Mar 26 14: 18: 25:
I t er at i on 1 f i ni shed successf ul l y.
***Fr i Mar 26 14: 18: 25: End - Si mul at i on f i ni shed
Automatic loading of VB script from command line
Automatic loading of VB script from command line (BATCH mode) allows loading of
text files containing VB script. The feature is intended for the users who develop a
number of VB script files or modify them dynamically in-between solving. The idea is
very simple: Solver loads a Layout Design project, and into its space, loads content
of a text file, containing VB script. Solves start with execution of the VB script, in the
same way as solves of a regular project file equipped with a script.
APPENDIX E: BATCH PROCESSING
333
Command line syntax
The command line syntax supporting automatic loading of VB script files is the
following:
/SCRIPT::VBS_Filename
where VBS_Filename is the file whose contents will be read into the internal Script
buffer. If the file name contains spaces, the file name must be surrounded by quotation
marks. For example."My VB Scrtipt.txt".
Notes:
There are no spaces between the /SCRIPT command, the two colons or the file name.
The file name can contain the file path and drive letter, or it can be a relative path.
If the path and drive letter are omitted, an attempt to open the file in the current
directory (where the batch file/command is being executed) is made.
If no file of that name exists in the current directory, an attempt to open a file of that
name in the folder that contains the layout project file is made.
If this fails, the file cannot be located and an error will be reported and the solving will
stop.
The VB script will execute when the solver is invoked. The 'Solve Using Script' solve
option is automatically asserted when the /SCRIPT:: command line option is
encountered. Any existing script stored in the layout project file is replaced by the
contents of the loaded-in script file.
Batch command examples
The following are sample batch commands that instruct the application to load VB
Script code from files:
Opt i Mode_Sol ver / SOLVEREALADI / BATCH / SCRI PT: : " C: \ Pr oj ect s\ VBScr i pt . t xt " " C: \ Pr oj ect s\ t est Pr oj ect . mxd"
In the following example, the VB Script code file is expected to be in the same folder
as the Layout Design data file. If the script code file name contains spaces, make sure
to surround it with quotes (""):
Opt i Mode_Sol ver / SOLVEREALADI / BATCH / SCRI PT: : " VBScr i pt . t xt " " C: \ Pr oj ect s\ t est Pr oj ect . mxd"
APPENDIX E: BATCH PROCESSING
334
Optiwave
7 Capella Court
Ottawa, Ontario, K2E 8A7, Canada
Tel.: 1.613.224.4700
Fax: 1.613.224.4706
E-mail: support@optiwave.com
URL: www.optiwave.com

Das könnte Ihnen auch gefallen