DEVICE Reference Guide

April 28, 2018 | Author: sreevatsakurudi | Category: Simulation, Scientific Modeling, Areas Of Computer Science, Physics & Mathematics, Physics
Share Embed Donate


Short Description

Descrição: Lumerical Device user manual complete...

Description

DEVICE Reference Guide

Release 3.1

Contents

1

Table of Contents Part I New Features

11

1 New features ............................................................................................................ for version 1.5 11 2 New features ............................................................................................................ for version 2.0 12 3 New features ............................................................................................................ for version 3.1 13

Part II Solver physics

15

1 FDTD ............................................................................................................ 15 FDTD ................................................................................................................................................. and Maxw ell's equations 16 Meshing ................................................................................................................................................. in FDTD 18

2 Eigenmode ............................................................................................................ Solver 19 Meshing ................................................................................................................................................. in the Eigenm ode solver 20

3 Propagator ............................................................................................................ 21 2.5D................................................................................................................................................. FDTD 21 Eigenm ................................................................................................................................................. ode expansion 23 Meshing ................................................................................................................................................. in the propagator 23

4 INTERCONNECT ............................................................................................................ 24 Tim................................................................................................................................................. e Dom ain Sim ulator 24 Frequency ................................................................................................................................................. Dom ain Sim ulator 25

5 DEVICE ............................................................................................................ 25 System ................................................................................................................................................. of Equations 25 Meshing ................................................................................................................................................. in DEVICE 28

Part III CAD layout editor

29

1 Main title ............................................................................................................ bar 29 2 Toolbars ............................................................................................................ 30 Main ................................................................................................................................................. 30 Edit ................................................................................................................................................. 31 Mouse ................................................................................................................................................. m ode 33 View ................................................................................................................................................. 34 Sim................................................................................................................................................. ulation 35 Search ................................................................................................................................................. bar 36

3 View ports ............................................................................................................ 36 4 Object............................................................................................................ Tree 37 Enable/Disable ................................................................................................................................................. Sim ulation Object 37

5 6 7 8 9

Results............................................................................................................ View Optimization ............................................................................................................ and Sweeps Script ............................................................................................................ Prompt and Script Editor Script ............................................................................................................ Workspace and Script Favorites Changing ............................................................................................................ the CAD layout

Part IV Material database © 2003 - 2013 Lumerical Solutions, Inc

38 38 38 39 39

42

2

Reference Guide 1 Material ............................................................................................................ database 42 2 Electrical ............................................................................................................ models 43 Conductors ................................................................................................................................................. 44 Insulators ................................................................................................................................................. 44 Sem................................................................................................................................................. iconductors 44

3 Mesh order ............................................................................................................ 54

Part V Simulation objects

56

1 Structures ............................................................................................................ 58 Prim................................................................................................................................................. itives 58 Geom ................................................................................................................................................. etry tab 59 Material ................................................................................................................................................. tab 59 Rotations ................................................................................................................................................. tab 60 Graphical ................................................................................................................................................. Rendering tab 60 Im port ................................................................................................................................................. Data tab 60 Properties ................................................................................................................................................. tab 65 Script ................................................................................................................................................. tab 65

2 Simulation ............................................................................................................ 65 General ................................................................................................................................................. tab 66 Mesh ................................................................................................................................................. tab 67 Geom ................................................................................................................................................. etry tab 67 Transient ................................................................................................................................................. tab 67 Results ................................................................................................................................................. 68 Advanced ................................................................................................................................................. options tab 68 Solver ................................................................................................................................................. type 69 Ferm ................................................................................................................................................. i statistics 70

3 Monitors ............................................................................................................ 70 General ................................................................................................................................................. tab 71 Geom ................................................................................................................................................. etry tab 72

4 5 6 7

Generation ............................................................................................................ Doping............................................................................................................ Contacts ............................................................................................................ Equation ............................................................................................................ interpreter

Part VI Running simulations and analysis

72 72 74 76

77

1 Resource ............................................................................................................ Manager 77 Resources ................................................................................................................................................. Advanced Options 79

2 Running ............................................................................................................ a simulation 80 3 Analysis ............................................................................................................ tools 81 Analysis ................................................................................................................................................. tools and the sim ulation environm ent 82 Figure ................................................................................................................................................. w indow s for plots and im ages 82 Data................................................................................................................................................. export 83 Visualizer ................................................................................................................................................. 83 Results ................................................................................................................................................. Manager 93

4 Optimization ............................................................................................................ and parameter sweeps 97

© 2003 - 2013 Lumerical Solutions, Inc

Contents

3

Optim ................................................................................................................................................. ization 99 Particle ................................................................................................................................................. Sw arm Optim ization 101 Param ................................................................................................................................................. eter Sw eeps 103 Nested ................................................................................................................................................. Sw eeps 104 Yield ................................................................................................................................................. Analysis 105

Part VII Scripting Language

108

1 System ............................................................................................................ 109 new ................................................................................................................................................. project 112 new ................................................................................................................................................. m ode 112 save ................................................................................................................................................. 113 load ................................................................................................................................................. 113 del................................................................................................................................................. 113 rm................................................................................................................................................. 114 dir................................................................................................................................................. 114 ls ................................................................................................................................................. 114 cd ................................................................................................................................................. 115 pw................................................................................................................................................. d 115 cp ................................................................................................................................................. 115 m v................................................................................................................................................. 116 exit ................................................................................................................................................. 116 system ................................................................................................................................................. 116 fileexists ................................................................................................................................................. 117 currentfilenam ................................................................................................................................................. e 117 filebasenam ................................................................................................................................................. e 117 fileextension ................................................................................................................................................. 118 filedirectory ................................................................................................................................................. 118 getcom ................................................................................................................................................. m ands 118 Run ................................................................................................................................................. script 118 getpath ................................................................................................................................................. 119 addpath ................................................................................................................................................. 119 w hich ................................................................................................................................................. 119 pause ................................................................................................................................................. 120 break ................................................................................................................................................. 120 Excape ................................................................................................................................................. key 120 form ................................................................................................................................................. at 121 loaddata ................................................................................................................................................. 121 savedata ................................................................................................................................................. 121 savedcard ................................................................................................................................................. 122 readdata ................................................................................................................................................. 122 w rite ................................................................................................................................................. 123 asapexport ................................................................................................................................................. 123 asapload ................................................................................................................................................. 124 asapim ................................................................................................................................................. port 124 m atlabsave ................................................................................................................................................. 124 m atlabsavelegacy ................................................................................................................................................. 125 m atlabload ................................................................................................................................................. 125 m atlab ................................................................................................................................................. 125 m atlabget ................................................................................................................................................. 127 m atlabput ................................................................................................................................................. 127

© 2003 - 2013 Lumerical Solutions, Inc

4

Reference Guide copytoclipboard ................................................................................................................................................. 127 pastefrom ................................................................................................................................................. clipboard 128 debug ................................................................................................................................................. 128 vtksave ................................................................................................................................................. 128 lookupread ................................................................................................................................................. 129 lookupopen ................................................................................................................................................. 129 lookupclose ................................................................................................................................................. 129 lookupw ................................................................................................................................................. rite 130

2 Manipulating ............................................................................................................ variables 130 = ................................................................................................................................................. 132 : ................................................................................................................................................. 132 [] ................................................................................................................................................. 132 % ................................................................................................................................................. 133 linspace ................................................................................................................................................. 133 m atrix ................................................................................................................................................. 133 randm ................................................................................................................................................. atrix 133 randnm ................................................................................................................................................. atrix 134 histogram ................................................................................................................................................. 134 m eshgridx ................................................................................................................................................. 134 m eshgridy ................................................................................................................................................. 135 m eshgrid3dx ................................................................................................................................................. 135 m eshgrid3dy ................................................................................................................................................. 135 m eshgrid3dz ................................................................................................................................................. 136 m eshgrid4d ................................................................................................................................................. 136 clear ................................................................................................................................................. 136 w orkspace ................................................................................................................................................. 136 Accessing ................................................................................................................................................. and assigning m atrix elem ents 137 Matrix ................................................................................................................................................. operators 138 Pre-defined ................................................................................................................................................. constants 138 m atrixdataset ................................................................................................................................................. 139 rectilineardataset ................................................................................................................................................. 139 addparam ................................................................................................................................................. eter 140 addattribute ................................................................................................................................................. 140 getparam ................................................................................................................................................. eter 140 getattribute ................................................................................................................................................. 141 eye................................................................................................................................................. 141 Datasets ................................................................................................................................................. 141 struct ................................................................................................................................................. 146 cell................................................................................................................................................. 147 unstructureddataset ................................................................................................................................................. 147

3 Operators ............................................................................................................ 148 . ................................................................................................................................................. 149 * ................................................................................................................................................. 150 / ................................................................................................................................................. 150 + ................................................................................................................................................. 150 - ................................................................................................................................................. 150 ^ ................................................................................................................................................. 151 == ................................................................................................................................................. 151 alm................................................................................................................................................. ostequal 151 != ................................................................................................................................................. 152 © 2003 - 2013 Lumerical Solutions, Inc

Contents

5

= ................................................................................................................................................. 152 < ................................................................................................................................................. 153 > ................................................................................................................................................. 153 & ................................................................................................................................................. 153 and ................................................................................................................................................. 153 | ................................................................................................................................................. 154 or ................................................................................................................................................. 154 ! ................................................................................................................................................. 154 ~ ................................................................................................................................................. 155 " ................................................................................................................................................. 155 ' ................................................................................................................................................. 156 endl ................................................................................................................................................. 157 ? ................................................................................................................................................. 157 com ................................................................................................................................................. m ents 157

4 Functions ............................................................................................................ 157 sin................................................................................................................................................. 162 cos................................................................................................................................................. 162 tan................................................................................................................................................. 162 asin ................................................................................................................................................. 162 acos ................................................................................................................................................. 163 atan ................................................................................................................................................. 163 atan2 ................................................................................................................................................. 163 real ................................................................................................................................................. 164 im ag ................................................................................................................................................. 164 conj ................................................................................................................................................. 164 abs................................................................................................................................................. 164 angle ................................................................................................................................................. 165 unw ................................................................................................................................................. rap 165 log................................................................................................................................................. 165 log10 ................................................................................................................................................. 165 sqrt ................................................................................................................................................. 166 exp ................................................................................................................................................. 166 size ................................................................................................................................................. 166 length ................................................................................................................................................. 166 pinch ................................................................................................................................................. 167 sum ................................................................................................................................................. 167 m ax ................................................................................................................................................. 168 m in ................................................................................................................................................. 168 dot................................................................................................................................................. 168 cross ................................................................................................................................................. 168 eig................................................................................................................................................. 169 m ult ................................................................................................................................................. 169 flip................................................................................................................................................. 170 perm ................................................................................................................................................. ute 170 reshape ................................................................................................................................................. 170 inv................................................................................................................................................. 171 interp ................................................................................................................................................. 171 interptri ................................................................................................................................................. 172 spline ................................................................................................................................................. 172

© 2003 - 2013 Lumerical Solutions, Inc

6

Reference Guide integrate ................................................................................................................................................. 173 integrate2 ................................................................................................................................................. 173 find ................................................................................................................................................. 174 findpeaks ................................................................................................................................................. 174 transpose ................................................................................................................................................. 175 ctranspose ................................................................................................................................................. 175 num ................................................................................................................................................. 2str 175 str2num ................................................................................................................................................. 176 eval ................................................................................................................................................. 176 feval ................................................................................................................................................. 176 substring ................................................................................................................................................. 176 findstring ................................................................................................................................................. 177 replace ................................................................................................................................................. 177 replacestring ................................................................................................................................................. 178 splitstring ................................................................................................................................................. 178 fft ................................................................................................................................................. 178 fftw ................................................................................................................................................. 180 fftk................................................................................................................................................. 181 invfft ................................................................................................................................................. 182 czt................................................................................................................................................. 183 polyarea ................................................................................................................................................. 183 centroid ................................................................................................................................................. 184 polyintersect ................................................................................................................................................. 184 inpoly ................................................................................................................................................. 185 polygrow ................................................................................................................................................. 185 polyand ................................................................................................................................................. 186 polyor ................................................................................................................................................. 186 polydiff ................................................................................................................................................. 186 polyxor ................................................................................................................................................. 187 lineintersect ................................................................................................................................................. 187 linecross ................................................................................................................................................. 188 ceil................................................................................................................................................. 188 floor ................................................................................................................................................. 188 m od ................................................................................................................................................. 189 sign ................................................................................................................................................. 189 round ................................................................................................................................................. 189 rand ................................................................................................................................................. 190 lognrnd ................................................................................................................................................. 190 randn ................................................................................................................................................. 190 randreset ................................................................................................................................................. 191 finite ................................................................................................................................................. 191 solar ................................................................................................................................................. 191 stackrt ................................................................................................................................................. 192 m ean ................................................................................................................................................. 192 all ................................................................................................................................................. 192 any................................................................................................................................................. 193 var................................................................................................................................................. 193 std................................................................................................................................................. 194 m apfind ................................................................................................................................................. 194 quadtri ................................................................................................................................................. 195 expand ................................................................................................................................................. 195 © 2003 - 2013 Lumerical Solutions, Inc

Contents

7

norm ................................................................................................................................................. 196

5 Loop ............................................................................................................ and conditional statements 196 for................................................................................................................................................. 196 if ................................................................................................................................................. 197

6 Plotting ............................................................................................................ commands 197 plot ................................................................................................................................................. 198 plotxy ................................................................................................................................................. 199 polar ................................................................................................................................................. 200 polar2 ................................................................................................................................................. 200 polarim ................................................................................................................................................. age 201 histc ................................................................................................................................................. 202 legend ................................................................................................................................................. 202 im age ................................................................................................................................................. 202 visualize ................................................................................................................................................. 203 selectfigure ................................................................................................................................................. 204 setplot ................................................................................................................................................. 204 exportfigure ................................................................................................................................................. 204 closeall ................................................................................................................................................. 205 vectorplot ................................................................................................................................................. 205

7 Adding ............................................................................................................ Objects 205 sw................................................................................................................................................. itchtolayout 208 layoutm ................................................................................................................................................. ode 209 addgroup ................................................................................................................................................. 209 addstructuregroup ................................................................................................................................................. 209 addanalysisgroup ................................................................................................................................................. 210 addobject ................................................................................................................................................. 210 addcontact ................................................................................................................................................. 210 addcircle ................................................................................................................................................. 211 addcustom ................................................................................................................................................. 211 addim ................................................................................................................................................. port 211 addpyram ................................................................................................................................................. id 212 addpoly ................................................................................................................................................. 212 addrect ................................................................................................................................................. 212 addtriangle ................................................................................................................................................. 213 addring ................................................................................................................................................. 213 addsphere ................................................................................................................................................. 213 addsurface ................................................................................................................................................. 214 addfdtd ................................................................................................................................................. 214 addeigenm ................................................................................................................................................. ode 214 addpropagator ................................................................................................................................................. 214 addm ................................................................................................................................................. esh 215 addm ................................................................................................................................................. ode 215 addm ................................................................................................................................................. odesource 215 adddipole ................................................................................................................................................. 215 addgaussian ................................................................................................................................................. 216 addplane ................................................................................................................................................. 216 addtfsf ................................................................................................................................................. 216 addim ................................................................................................................................................. portedsource 217 addindex ................................................................................................................................................. 217 addtim ................................................................................................................................................. e 217 © 2003 - 2013 Lumerical Solutions, Inc

8

Reference Guide addm ................................................................................................................................................. ovie 218 addprofile ................................................................................................................................................. 218 createbeam ................................................................................................................................................. 218 adddevice ................................................................................................................................................. 219 adddope ................................................................................................................................................. 219 adddiffusion ................................................................................................................................................. 219 addim ................................................................................................................................................. portdope 219 addbulkgen ................................................................................................................................................. 220 addim ................................................................................................................................................. portgen 220 addgridattribute ................................................................................................................................................. 220 addelem ................................................................................................................................................. ent 221 addm ................................................................................................................................................. odeexpansion 222 addeffectiveindex ................................................................................................................................................. 222 addchargem ................................................................................................................................................. onitor 222 addfieldm ................................................................................................................................................. onitor 223

8 Manipulating ............................................................................................................ objects 223 groupscope ................................................................................................................................................. 226 deleteall ................................................................................................................................................. 226 delete ................................................................................................................................................. 227 selectall ................................................................................................................................................. 227 unselectall ................................................................................................................................................. 227 select ................................................................................................................................................. 227 selectpartial ................................................................................................................................................. 228 shiftselect ................................................................................................................................................. 228 shiftselectpartial ................................................................................................................................................. 229 flipelem ................................................................................................................................................. ent 229 rotateelem ................................................................................................................................................. ent 229 m ove ................................................................................................................................................. 229 copy ................................................................................................................................................. 230 addtogroup ................................................................................................................................................. 230 adduserprop ................................................................................................................................................. 231 set................................................................................................................................................. 231 setnam ................................................................................................................................................. ed 232 setglobalm ................................................................................................................................................. onitor 232 setglobalsource ................................................................................................................................................. 233 setm ................................................................................................................................................. odes 233 setposition ................................................................................................................................................. 233 setrectangle ................................................................................................................................................. 234 getposition ................................................................................................................................................. 234 getrectangle ................................................................................................................................................. 234 get................................................................................................................................................. 235 runsetup ................................................................................................................................................. 235 getnum ................................................................................................................................................. ber 236 getnam ................................................................................................................................................. ed 236 getnam ................................................................................................................................................. ednum ber 237 getglobalm ................................................................................................................................................. onitor 237 getglobalsource ................................................................................................................................................. 237 getsolver ................................................................................................................................................. 238 haveproperty ................................................................................................................................................. 238 im portsurface ................................................................................................................................................. 238

© 2003 - 2013 Lumerical Solutions, Inc

Contents

9

im portsurface2 ................................................................................................................................................. 240 im portnk ................................................................................................................................................. 241 im portnk2 ................................................................................................................................................. 243 im portnkobfuscated ................................................................................................................................................. 245 im portbinary ................................................................................................................................................. 246 im portbinary2 ................................................................................................................................................. 248 im portbinaryobfuscated ................................................................................................................................................. 250 updatesourcem ................................................................................................................................................. ode 251 setsourcesignal ................................................................................................................................................. 252 updatem ................................................................................................................................................. odes 253 clearsourcedata ................................................................................................................................................. 254 clearm ................................................................................................................................................. odedata 254 seteigensolver ................................................................................................................................................. 255 geteigensolver ................................................................................................................................................. 256 redraw ................................................................................................................................................. 256 redraw ................................................................................................................................................. off 257 redraw ................................................................................................................................................. on 257 redraw ................................................................................................................................................. m ode 257 setview ................................................................................................................................................. 258 getview ................................................................................................................................................. 259 orbit ................................................................................................................................................. 259 fram ................................................................................................................................................. erate 260 undo ................................................................................................................................................. 260 redo ................................................................................................................................................. 260 addport ................................................................................................................................................. 261 rem ................................................................................................................................................. oveport 261 connect ................................................................................................................................................. 262 disconnect ................................................................................................................................................. 262 setexpansion ................................................................................................................................................. 262 rem ................................................................................................................................................. oveexpansion 263 setactivesolver ................................................................................................................................................. 263 getnam ................................................................................................................................................. e 263 setnam ................................................................................................................................................. e 263 im portdataset ................................................................................................................................................. 264 cleardataset ................................................................................................................................................. 264

9 Running ............................................................................................................ simulations 265 runparallel ................................................................................................................................................. 265 addjob ................................................................................................................................................. 266 runjobs ................................................................................................................................................. 266 clearjobs ................................................................................................................................................. 266 runsw ................................................................................................................................................. eep 267

10 Measurement ............................................................................................................ and optimization data 267 getsw ................................................................................................................................................. eepdata 268 getsw ................................................................................................................................................. eepresult 269 getdata ................................................................................................................................................. 269 getresult ................................................................................................................................................. 270 runanalysis ................................................................................................................................................. 270 havedata ................................................................................................................................................. 271 haveresult ................................................................................................................................................. 271 havesw ................................................................................................................................................. eepdata 272 © 2003 - 2013 Lumerical Solutions, Inc

10

Reference Guide havesw ................................................................................................................................................. eepresult 272 copydcard ................................................................................................................................................. 273 clearanalysis ................................................................................................................................................. 273 cleardcard ................................................................................................................................................. 274 getelectric ................................................................................................................................................. 274 getm ................................................................................................................................................. agnetic 274 Read ................................................................................................................................................. and w rite data to files 275 loadsw ................................................................................................................................................. eep 275 savesw ................................................................................................................................................. eep 275

11 Material ............................................................................................................ database 276 addm ................................................................................................................................................. aterial 276 copym ................................................................................................................................................. aterial 277 setm ................................................................................................................................................. aterial 277 getm ................................................................................................................................................. aterial 277 getindex ................................................................................................................................................. 278 getfdtdindex ................................................................................................................................................. 278 getm ................................................................................................................................................. odeindex 279 getnum ................................................................................................................................................. ericalperm ittivity 280

12 GDSII............................................................................................................ 281 gdsopen ................................................................................................................................................. 282 gdsclose ................................................................................................................................................. 282 gdsbegincell ................................................................................................................................................. 283 gdsendcell ................................................................................................................................................. 283 gdsaddpoly ................................................................................................................................................. 284 gdsaddcircle ................................................................................................................................................. 284 gdsaddrect ................................................................................................................................................. 285 gdsaddref ................................................................................................................................................. 286 gdsim ................................................................................................................................................. port 286

13 User defined ............................................................................................................ GUIs 288 m essage ................................................................................................................................................. 288 new ................................................................................................................................................. w izard 289 new ................................................................................................................................................. w izardpage 289 w izardw ................................................................................................................................................. idget 289 w izarddata ................................................................................................................................................. 290 runw ................................................................................................................................................. izard 291 w izardgetdata ................................................................................................................................................. 291 killw ................................................................................................................................................. izard 291 w izardoption ................................................................................................................................................. 292 fileopendialog ................................................................................................................................................. 292 filesavedialog ................................................................................................................................................. 292

14 Creating ............................................................................................................ your own script commands 293

Index

295

© 2003 - 2013 Lumerical Solutions, Inc

New Features

1

11

New Features DEVICE is constantly being upgraded. See the following sections for a list of the latest new features. New features for version 1.5 New features for version 2.0 New features for version 3.1

1.1

11 12 13

New features for version 1.5 New solver option In the initial versions of the software, the Gummel’s method was used in the solver, in which the voltage and charge were solved sequentially (one was used as a input to the other) until the two were consistent. In DEVICE 1.5, the Newton solver has been introduced, which solves for the charge and voltage simultaneously. The Newton solver is more sensitive to the initial conditions (it may not converge), but will converge much faster for a wider variety of problems if it’s given a good initial guess.

Advanced contact models Several modifications have been made to the contact models for DEVICE: Lumped element loads (R and C) can now be added on device terminals. Custom specification of DC sweep bias voltages is available. Non-ohmic contacts will use a Schottky barrier model accounting for barrier lowering due to the applied electric field.

© 2003 - 2013 Lumerical Solutions, Inc

12

Reference Guide

Adaptive transient simulation Transient simulations now employ adaptive time-stepping to optimally vary the simulation interval while maintaining accuracy. Coupled with the full Newton solver, a wider variety of transient simulations can now be performed efficiently with DEVICE. To view the new settings associated with the transient simulation, consult the "Transient" tab in the Device region properties. Here, the user may specify time step constraints, down-sampling, and shuttering for optical generation objects.

Results selection In the Device region properties, users now how the option to retain a reduced set of spatial data. Under the "Results" tab, a list of all available results can be viewed, and may be toggled on or off to reduce memory requirements. By default all results are included.

1.2

New features for version 2.0 Results manager and Visualizer The Results Manager 93 is a tool for analyzing simulation data. This includes a Results View window which displays all the results for the simulation object that is currently selected in the Object Tree. The Results Manager also includes a Script Workspace and a Script Favorites window, providing additional GUI-based functionalities. Also featured in DEVICE 2.0 is the more improved Visualizer 83 , which significantly simplifies the process of visualizing simulation data. When used in conjunction, Results Manager and the Visualizer provide a very useful and intuitive way of analyzing and visualizing variables and results through the GUI, greatly reducing the need for scripting.

Datasets Lumerical datasets are structured data objects that collect a set of related matrices into a single convenient object. See Dataset introduction 141 for more information.

Yield analysis tool A new yield analysis tool is available in the Optimization and Sweeps window. The yield analysis tool gives users the ability to run extensive Monte Carlo analysis, sweeping

© 2003 - 2013 Lumerical Solutions, Inc

New Features

13

across multiple parameters to assess statistical variations of circuit elements on overall circuit performance. Please see the Yield analysis 105 page in the Reference Guide for more details, and the Running a yield analysis task example in the User Guide.

Other new script commands The following script functions were added in DEVICE 2.0. For more information, see the function descriptions in the scripting section of the Reference Guide. . operator 149 , addattribute 140 , addparameter 140 , eig 169 , debug 128 , getattribute 141 , getparameter 140 , getresult 270 , getsweepresult 269 , integrate2 173 , matrixdataset 139 , addmodeexpansion 222 , mult 169 , permute 170 rectilineardataset 139 , reshape 170

1.3

New features for version 3.1 3D solver DEVICE is now capable of simulating fully three dimensional geometries. The solver type can be chosen by the user to be 2D or 3D. This means that arbitrary structures particularly where slicing or averaging of imported 3D data is not valid can now be solved for in 3 dimensions.

Visualization The visualizer has been updated for 3D simulations to allow the user to better view the results, enabling image plots, arbitrary slices of the 3D geometry or line plots of various types of data.

Field and charge monitors A new object type, monitor, has been added to DEVICE. 2D/3D monitors can be placed anywhere within the simulation region to record the total charge within the monitor and/or electric field through the monitor boundaries.

Continue from previous solution It is now possible to specify a project file that has already been run as a reference project for solving another simulation. The initialization step in the solver can be skipped with this feature, using the converged solution of the specified file. This will save a lot of time in memory intensive simulations.

© 2003 - 2013 Lumerical Solutions, Inc

14

Reference Guide

Electron-hole density grid attribute FDTD Solutions 8.7 and MODE Solutions 6.6 (and beyond) can import electron-hole density data recorded on a finite-element mesh directly from a DEVICE simulation. This approach, which offers significant improvement over the previous (n, k) import option, reduces simulation memory requirements and interpolation errors.

XML lookup table support As of version 3.0, users can simulate a wide range of device designs with Lumerical's TCAD tools, the results of which get incorporated into an XML lookup table. This XML lookup table can then be associated with a specific element as the basis for a validated compact model within an INTERCONNECT project. Please see Parameter Extraction and PDKs for detailed examples.

Export viewports to image As of version 3.1, users can export CAD viewports into JPEG figures by selecting "View -> Export view" from the main title bar.

new script commands The following script functions were added in DEVICE 3.0. For more information, see the function descriptions in the scripting section of the Reference Guide. all, any, quadtri, unstructuredataset, loadsweep, savesweep, var, std

© 2003 - 2013 Lumerical Solutions, Inc

Solver physics

2

15

Solver physics This chapter describes the basic physics and algorithms used in Lumerical's various 'Physics' based solvers:

FDTD Solutions

15

The Finite-Difference Time-Domain method, which is the method behind both FDTD Solutions and MODE Solutions' Propagator.

MODE Solutions Eigenmode Solver

19

The method behind MODE Solutions' Eigenmode Solver and FDTD Solutions' Integrated MODE Solver.

MODE Solutions Propagator 21 The method behind MODE Solutions' omnidirectional propagator for planar integrated systems.

INTERCONNECT

24

The method behind Lumerical's INTERCONNECT circuit simulator.

DEVICE

25

The method behind Lumerical's DEVICE electronic device simulator.

2.1

FDTD The finite-difference time-domain (FDTD) method1,2,3 is a state-of-the-art method for solving Maxwell's equations in complex geometries. Being a direct time and space solution, it offers the user a unique insight into all types of problems in electromagnetics and photonics. In addition, FDTD can also obtain the frequency solution by exploiting Fourier transforms, thus a full range of useful quantities can be calculated, such as the complex Poynting vector and the transmission / reflection of light. This section will introduce the basic mathematical and physics formalism behind the FDTD algorithm used in FDTD Solutions and MODE Solutions' propagator, starting from the linear Maxwell's equations. The simulator can be used for advanced research and development or as an ideal teaching and learning environment in photonics, optics, and electromagnetics. See the FDTD Numerical methods video for additional information: http://www.lumerical. com/support/courses/fdtd_numerical_methods/video.html

© 2003 - 2013 Lumerical Solutions, Inc

16

Reference Guide

1 Dennis M. Sullivan, Electromagnetic simulation using the FDTD method. New York: IEEE Press Series, (2000). 2 Allen Taflove, Computational Electromagnetics: The Finite-Difference Time-Domain Method. Boston: Artech House, (2005). 3 Stephen D. Gedney, Introduction to the Finite-Difference Time-Domain (FDTD) Method for Electromagnetics. Morgan & Claypool publishers, (2011).

2.1.1 FDTD and Maxwell's equations FDTD solves Maxwell's curl equations in non-magnetic materials:

D t

D( )

H t

H 0 r

1

( )E( )

E

0

where H, E, and D are the magnetic, electric, and displacement fields, respectively, while r

( )

is the complex relative dielectric constant (

r

( )

n2

, where n is the refractive

index). In three dimensions, Maxwell equations have six electromagnetic field components: Ex , Ey ,

© 2003 - 2013 Lumerical Solutions, Inc

Solver physics

17

Ez and Hx , Hy , and Hz. If we assume that the structure is infinite in the z dimension and that the fields are independent of z, specifically that r

( , x, y , z )

E z

H z

r

( , x, y )

0

then Maxwell's equations split into two independent sets of equations composed of three vector quantities each which can be solved in the x-y plane only. These are termed the TE (transverse electric), and TM (transverse magnetic) equations. We can solve both sets of equations with the following components: TE: Ex , Ey , Hz TM: Hx , Hy , Ez For example, in the TM case, Maxwell's equations reduce to:

Dz t

Hy x

Dz ( )

0 r

Hx t

Hy t

Hx y

1 0

1 0

( ) Ez ( )

Ez y

Ez x

FDTD Solutions can solve the two and three dimensional Maxwell's equations in dispersive media and some simple non-linear media, where the user can specify arbitrary geometric structures and various input excitation sources. The two dimensional FDTD simulator solves the TE and/or TM Maxwell equations. FDTD is a time domain technique, meaning that the electromagnetic fields are solved as a function of time. In general, FDTD Solutions is used to calculate the electromagnetic fields as a function of frequency or wavelength by performing Fourier transforms during the simulation. This allows it to obtain complex-valued fields and other derived quantities such as the complex Poynting vector, normalized transmission, and far field projections as a function of frequency or wavelength. The field information can be returned in two different normalization states, please see the section on frequency domain normalization for more details.

© 2003 - 2013 Lumerical Solutions, Inc

18

Reference Guide Dispersive materials with tabulated refractive index (n,k) data as a function of wavelength can be solved using the multi-coefficient models with auto-fitting. Alternatively, specific theoretical models such as Plasma (Drude), Debye or Lorentz can be used. See the chapter on the Material Database 42 for details. Boundary conditions are very important in electromagnetics and simulation techniques. FDTD Solutions/propagator supports a range of boundary conditions, such as PML, periodic, and Bloch. See the boundary conditions section here for the complete list. Sources are another important component of a simulation. FDTD Solutions/propagator supports a number of different types of sources such as point dipoles, beams, plane waves, a total-field scattered-field (TFSF) source, a guided-mode source for integrated optical components, and an imported source to interface with external photonic design softwares. Detailed information about each of these sources is contained in the Radiation sources section. Unless otherwise specified, all quantities in FDTD Solutions/propagator are calculated in SI units. Please see Units and Normalization for more information. The online User Guide at http://docs.lumerical.com/en/fdtd/knowledge_base.html has many more details about the physics of FDTD and how to obtain advanced results. Please see, for example, the sections on coherence, and far field calculations in the online User Guide.

2.1.2 Meshing in FDTD FDTD Solutions uses a rectangular, Cartesian style mesh, like the one shown in the following screenshot. It's important to understand that of the fundamental simulation quantities (material properties and geometrical information, electric and magnetic fields) are calculated at each mesh point. Obviously, using a smaller mesh allows for a more accurate representation of the device, but at a substantial cost. As the mesh becomes smaller, the simulation time and memory requirements will increase. FDTD Solutions provides a number of features, including the conformal mesh algorithm, that allow you to obtain accurate results, even when using a relatively coarse mesh. By default, the simulation mesh is automatically generated. To maintain accuracy, the meshing algorithm will create a smaller mesh in high index (to maintain a constant number of mesh points per wavelength) and highly absorbing (resolve penetration depths) materials. In some cases, it is also necessary to manually add additional meshing constraints. Usually, this involves forcing the mesh to be smaller near complex structures (often metal) where the fields are changing very rapidly.

© 2003 - 2013 Lumerical Solutions, Inc

Solver physics

2.2

19

Eigenmode Solver The Eigenmode Solver (Eigensolver) solves for optical modes in a cross-section of an arbitrary waveguide geometry. The waveguide mode as a transverse field distribution that propagates along the waveguide without changing shape.

In the z-normal eigenmode solver simulation example shown in the figure above, we have the vector fields:

E ( x, y )e i (

t

z)

H ( x, y )e i (

t

z)

and where ω is the angular frequency and β is the propagation constant. The modal effective

neff index is then defined as

c .

MODE Solutions find these modes by solving Maxwell's equations on a cross-sectional mesh of the waveguide. The finite difference algorithm is the current method used for meshing the waveguide geometry, and has the ability to accommodate arbitrary waveguide structure. Once the structure is meshed, Maxwell's equations are then formulated into a matrix eigenvalue problem and solved using sparse matrix techniques to obtain the effective index and mode profiles of the waveguide modes. This method is based on Zhu and Brown1 , with proprietary modifications and extensions.

© 2003 - 2013 Lumerical Solutions, Inc

20

Reference Guide

Z. Zhu and T. G. Brown, “Full-vectorial finite-difference analysis of microstructured optical fibers,” Opt. Express 10, 853–864 (2002), http://www.opticsexpress.org/abstract.cfm? URI=OPEX-10-17-853

2.2.1 Meshing in the Eigenmode solver The MODE Solutions Eigenmode Solver uses a rectangular, Cartesian style mesh, like the one shown in the following screenshot. It's important to understand that of the fundamental simulation quantities (material properties and geometrical information, electric and magnetic fields) are calculated at each mesh point. Obviously, using a smaller mesh allows for a more accurate representation of the device, but at a substantial cost. As the mesh becomes smaller, the simulation time and memory requirements will increase. MODE Solutions provides a number of features, including the conformal mesh algorithm, that allow you to obtain accurate results, even when using a relatively coarse mesh. By default, the simulation will use a uniform mesh. You simply set the number of mesh points along each axis. In some cases, it is necessary to add additional meshing constraints. Usually, this involves forcing the mesh to be smaller near complex structures where the fields are changing very rapidly. Note: In FDTD-based simulations, it's important to use a smaller mesh in high index materials, and to maintain a minimum number of mesh points per wavelength. This constraint does not exist for the Eigenmode solver.

© 2003 - 2013 Lumerical Solutions, Inc

Solver physics

2.3

21

Propagator MODE Solutions currently supports 2 methods of propagating fields. 1) The 2.5D FDTD 21 propagator. This propagator accurately describes the propagation of light in planar integrated optical systems, from ridge waveguide-based systems to more complex geometries such as photonic crystals. The propagator allows for planar (omnidirectional) propagation without any assumptions about an optical axis, which allows for structures like ring resonators and photonic crystal cavities to be efficiently modeled – devices that have been traditionally treated with 3D FDTD. The propagator can model devices on the scale of hundreds of microns quickly. 2) The eigenmode expansion 23 propagator. This script based, unidirectional eigenmode expansion propagator allows you to decompose one input or waveguide mode onto the modes of another waveguide section and propagate the modes an arbitrary distance. It is useful for waveguide couplers, long tapers and other devices where the propagation can be assumed to be essentially unidirectional.

2.3.1 2.5D FDTD The FDTD propagator is based on collapsing a 3D geometry into a 2D set of effective indices that can be solved with 2D FDTD 15 . This works best with waveguides made from planar structures. For additional information on the 2.5D Propagator, see the Lumerical’s 2.5D FDTD Propagation Method whitepaper on our website. The main assumption of this method is that there is little coupling between different supported slab modes. For many devices, such as SOI based slab waveguide structures, that only support 2 vertical modes with different polarizations, this is an excellent assumption. The calculation steps involve: 1. Identification of the vertical slab modes of the core waveguide structure, over a desired range of wavelengths. 2. Meshing of the structure and collapse of the 3rd dimension by calculation of the corresponding effective 2D indices (taking into account the vertical slab mode profile). There are currently two approaches to doing this in the Propagator: Variational A variational procedure based on Hammer and Ivanova1. Here, the effective permittivities of the TE and TM-like modes have the form:

© 2003 - 2013 Lumerical Solutions, Inc

22

Reference Guide

TE eff

r

( x, y , )

2

( x, y , z )

2

r

( z , ) M ( z , ) dz

z 2

k

M ( z , ) dz z

1 2 TM eff

r

( x, y , )

k z

| M | dz

r

z

2

1

2

z

1 | M |2 dz ( x, y , z )

r

k2 z

1 M dz ( x, y , z ) z 1 2 M dz ( x, y , z )

where εr, M and βr are the 1-D reference permittivity profile, the associated guided slab mode and the propagation constant. Reciprocity Based This is a procedure based on the reciprocity theorem, as described in Snyder and Love2:

neff ( x, y, )

r

0

k

0

2

( x, y , z )

1 2

r ( z , ) E ( z , ) dz

z

P ndz z

Note that in both cases, the generated effective materials are also dispersive, where the dispersion comes both from the original material properties (material dispersion) and the slab waveguide geometry (waveguide dispersion). These new materials are then fitted using Lumerical Solutions' multi-coefficient model into a time-domain form that can be used in the 2D FDTD simulation in step 3. Note that the effective index treatment may lead to generated materials that have properties that are unphysical (for example, having an artificial negative imaginary index). In this case, one has the option of restricting the range of generated indices to the min/max values defined by the physical material properties of the original materials. All of these settings can be found under the Effective index tab of the Propagator simulation region. 3. Simulation of the structure in 2D by FDTD 15 . 4. If desired, re-expansion of the fields into 3D. The Ring resonator getting started example contains step-by-step instructions and discussions on how to carry out a propagator simulation using the variational FDTD method. 1 Manfred Hammer and Olena V. Ivanova, MESA Institute for Nanotechnology, University of Twente, Enschede, The Netherlands

© 2003 - 2013 Lumerical Solutions, Inc

Solver physics

23

"Effective index approximation of photonic crystal slabs: a 2-to-1-D assessment", Optical and Quantum Electronics ,Volume 41, Number 4, 267-283, DOI: 10.1007/s11082-009-93493 2 Allan W. Snyder and John D. Love, Optical Waveguide Theory. Chapman & Hall, London, England, 1983.

2.3.2 Eigenmode expansion This unidirectional eigenmode expansion method is implemented in the propagate command. The propagate command calculates the resulting mode profile of an arbitrary mode after it has propagated through a waveguide for some distance. This is done by decomposing the mode into modes supported by the waveguide (ie. the currently calculated modes) using overlap integrals. Each supported mode is then propagated through the waveguide. The resulting modes are then added coherently to give the final mode profile. This technical is useful for waveguide couplers, long tapers and other devices where the propagation can be assumed to be essentially uni-directional. Please see MODE Solutions' applications library for some use case examples: Evanescent waveguide couplers Tapered waveguides Polarization rotator

2.3.3 Meshing in the propagator The MODE Solutions Propagator uses a rectangular, Cartesian style mesh, like the one shown in the following screenshot. It's important to understand that of the fundamental simulation quantities (material properties and geometrical information, electric and magnetic fields) are calculated at each mesh point. Obviously, using a smaller mesh allows for a more accurate representation of the device, but at a substantial cost. As the mesh becomes smaller, the simulation time and memory requirements will increase. MODE Solutions provides a number of features, including the conformal mesh algorithm, that allow you to obtain accurate results, even when using a relatively coarse mesh. By default, the simulation mesh is automatically generated. To maintain accuracy, the meshing algorithm will create a smaller mesh in high index (to maintain a constant number of mesh points per wavelength) and highly absorbing (resolve penetration depths) materials. In some cases, it is also necessary to manually add additional meshing constraints. Usually, this involves forcing the mesh to be smaller near complex structures (often metal)

© 2003 - 2013 Lumerical Solutions, Inc

24

Reference Guide where the fields are changing very rapidly. Note: meshing time The general meshing algorithm can take a reasonable amount of time compared to the simulation because the mesh must be effectively completed in 3D. It is possible for the user to specify if the structure is composed of purely extruded structures - that is structures that are extruded along z with perfectly vertical sidewalls. In this case, the meshing can be accomplished much faster.

2.4

INTERCONNECT INTERCONNECT is a circuit simulator that can support mixed signal representation of optical single and multi-mode signals as well as electrical signals. The signals can propagate fully bidirectionally through the circuit topology for both Time Domain 24 and Frequency Domain 25 simulations.

Users can choose elements from an extensive list of pre-defined PIC elements, as well as create custom elements from pre-defined primitives or via Lumerical’s powerful script language. In addition, elements can also be characterized accurately using results directly from Lumerical's electromagnetic simulators (FDTD Solutions and MODE Solutions).

2.4.1 Time Domain Simulator Time domain simulation is performed using a data flow system simulator, allowing for more flexibility than using traditional discrete time or time-driven simulators. The simulator scheduler calculates each element in order to generate time domain waveform samples and propagate them bidirectionally. Very close coupling between components can be simulated allowing, for example, the analysis of optical resonators.

© 2003 - 2013 Lumerical Solutions, Inc

Solver physics

25

2.4.2 Frequency Domain Simulator Frequency domain simulation is performed using scattering data analysis to calculate the overall circuit response.

The circuit is composed a series of elements connected by an arbitrary number of input/ output (or bidirectional) ports. Users can define all the modes supported by the device and their frequency dependent properties. Once all the ports are defined, INTERCONNECT carries out the scattering data analysis for the entire circuit by solving a sparse matrix that represents the circuit as connected scattering matrices, each one of them representing the frequency response of an individual element.

2.5

DEVICE DEVICE is an physics-based electrical simulation tool for semiconductors, which selfconsistently solves the system of equations describing the electrostatic potential and density of free charge (electrons and holes). DEVICE solves the drift-diffusion equation to describe the spatial distribution of electrons and holes, and solves the Poisson equation to establish the electrostatic potential. Solving the drift-diffusion (DD) equations is an established and robust method that will produce accurate results for a wide range of semiconductor devices under common operating conditions. This section will introduce the basic mathematical and physics formalism behind the selfconsistent algorithm used in DEVICE, starting from the non-linear Poisson and driftdiffusion equations. The simulator can be used for advanced research and development or as an ideal teaching and learning environment in semiconductor electronics and optoelectronics.

2.5.1 System of Equations DEVICE solves the drift-diffusion equations for electrons and holes (carriers)

Jn

q

n

n E qDn n

Jp

q

p

p E qD p p

where Jn,p is the current density (A/cm2), q is the positive electron charge, µ n,p is the mobility, E is the electric field, Dn,p is the diffusivity, and n and p are the densities of the

© 2003 - 2013 Lumerical Solutions, Inc

26

Reference Guide electrons and holes, respectively (the subscripts n and p indicate quantities that are specific to the carrier type). Each carrier (electron or hole) moves under the influence of two competing processes: drift due to the applied electric field, and random thermal diffusion due to the gradient in the density. These processes are represented in the drift-diffusion equations as the sum of two terms. The mobility µ n,p describes the ease with which carriers can move through the semiconductor material, and is related to the diffusivity Dn,p through the Einstein relation

Dn , p

n, p

k BT q

where kB is the Boltzmann constant. The mobility is a key property of the material, and may be modeled as a function of temperature, impurity (doping) concentration, carrier concentration, and electric field. For further details, please see the section on material models. To solve the drift-diffusion equations, the electric field must be known. To determine the electric field, Poisson's equation is solved:

V

q

where ε is the dielectric permittivity, V the electrostatic potential net charge density,

(E

V)

and ρ the

p n C which includes the contribution C from the ionized impurity density. Finally, the auxiliary continuity equations are required to account for charge conservation

n t p t

1 q

Jn 1 q

Jp

Rn Rp

where Rn,p is the net recombination rate (the difference between the recombination rate and generation rate). The physical processes associated with the material are assumed to act equivalently when applied to electrons or holes, and as a result, R = Rn = Rp. The recombination and generation processes are important factors in the material-specific calculation of carrier behavior. Multiple recombination and generation processes are modeled, which may depend on temperature, impurity (doping) concentration, carrier concentration, electric field, and current density. For further details, please see the section on material models.

© 2003 - 2013 Lumerical Solutions, Inc

Solver physics

27

DEVICE discretizes and solves the drift-diffusion and Poisson’s equations on an unstructured finite-element mesh in one and two dimensions. The simulation region is partitioned into multiple domains along boundaries between materials with unique physical descriptions. The materials used in the simulation may be categorized as insulators, semiconductors, or conductors; each type of material has an associated user-specified model or collection of models that describe its behavior. In particular, specialized multicoefficient models are provided for semiconductors that describe the fundamental properties, mobility, and recombination processes inherent to that material. The system of equations solved by DEVICE admits both a steady-state and time-varying result. By enforcing the condition

n t

p t

0

in the continuity equations, the carrier density and electrostatic potential can be solved at steady-state. Steady-state simulations can be used to examine the system’s behavior at a fixed operating point, and are also useful when extracting small-signal parameters for a component (e.g. for frequency response analysis). Alternately, by specifying an initial condition for the carrier density and electrostatic potential, the equations can be solved in a sequence of discrete times. The time-dependent behavior of the component can then be used to directly evaluate its large-signal time-domain response or extract large-signal AC parameters. Boundary conditions are very important in an accurate semiconductor device simulation. Two categories of boundary condition are present in DEVICE: those that relate to the electrostatic potential (Poisson’s equation) and those that relate to the carrier densities (the drift-diffusion equations). Poisson’s equation and the drift-diffusion equations are second-order partial differential equations (PDE), and each requires that the solution be explicitly specified for at least one location. This is known as a Dirichlet boundary condition. For the electrostatic potential, the Dirichlet condition takes the form of a boundary (internal or external) with a fixed voltage specified,

V ( x)

V1

as is typical of an electrical contact. For the carrier densities, the majority carrier concentration is set to its equilibrium value at the interface between a contact and the semiconductor, such that

p n C

0

At internal boundaries between two domains that are not contacts, the boundary conditions are determined from the physical properties of the interface. In the case of the electrostatic potential, the electric flux density must be continuous across the boundary in the absence of a surface charge. For the electron and hole densities, boundary conditions between the

© 2003 - 2013 Lumerical Solutions, Inc

28

Reference Guide semiconductor and adjacent materials may be specified in terms of a surface recombination current density, which will default to zero (no carrier flux across the boundary) for insulators or an infinite recombination velocity (forcing the carrier density to its equilibrium value) for contacts. At the external (open) boundaries of the simulation domain, homogenous Neumann boundary conditions are applied: the electric field normal to the boundary is set to zero as is the surface recombination current density. Physically, this corresponds to an insulating boundary across which no charge can flow. By convention, the length units in semiconductor models are chosen to be centimeters. This is reflected in the semiconductor device literature, and in the parameter coefficients for the material models. Energies are calculated in electron Volts (eV), where the electron energy E is related to the local electrostatic potential (voltage) as E = -qV. All energies (and voltages) are referenced from the (equilibrium) Fermi level of an electrical contact in the system.

2.5.2 Meshing in DEVICE DEVICE uses an unstructured, finite-element mesh, like the one shown in the following screenshot. The solution to the system of equations used to determine the physical quantities of interest is estimated from the discrete formulation of those equations. Consequently, it's important to understand that of the fundamental simulation quantities (material properties, geometry information, electrostatic potential, and carrier concentrations) are calculated at each mesh vertex. A finer mesh (with shorter edge lengths and smaller elements) will better approximate the exact solution to the system of equations, but at a substantial cost. As the mesh features become smaller, the simulation time and memory requirements will increase. DEVICE provides a number of tools, including the automatic and guided mesh refinement, that allow you to obtain accurate results, while minimizing computational effort.

© 2003 - 2013 Lumerical Solutions, Inc

CAD layout editor

3

29

CAD layout editor The image below shows a typical Lumerical CAD Layout Editor. This tool is used to setup and analyze all simulations, and to run all script files. In this screenshot, different regions of the CAD in Layout mode are highlighted. They include: Main title bar 29 Toolbars 30 View ports 36 Object Tree 37 Optimization and Sweeps 38 Script Prompt 38

The Layout Editor has two modes of operation: Layout mode and Analysis mode. Layout mode is used to setup your simulation. Simulation objects can be added, modified and deleted in this mode. After a simulation runs, the Layout Editor automatically switches to Analysis mode. In analysis mode, it is not possible to edit the simulation objects, since we want the object settings to match the data from the simulation. To edit simulation objects, switch back to layout mode with the

3.1

button.

Main title bar The menus on the main title bar are listed below. If any of the options can be selected using a button on a toolbar, the icon is drawn to the left of the name. Similarly, shortcut keys are located to the right. File The file menu includes options to create, save and load simulation files. The Import menu allows users to import structural data stored in GDSII files 60 files.

© 2003 - 2013 Lumerical Solutions, Inc

30

Reference Guide Edit The edit menu allows users to undo/redo their actions, and to copy/paste/edit object in the simulation. View The view menu provides options to control the layout and visibility windows and toolbars. Setting This setting menu contains options to change the unit setting within the graphical interface. These option only apply to the GUI. Scripts always use SI units. Simulation This menu contains settings for configuring resources and running simulations. Help The help menu provides links to local PDF copies of the product documentation and links to the larger set of online documentation, as well as options for checking which version of the software is installed.

3.2

Toolbars The following sections describe the various toolbars. Toolbars visibility can be controlled in the View - Toolbars menu.

3.2.1 Main The main toolbar contains buttons to add various Simulation objects, open the Material database 42 and import files, as described below. When available, clicking the arrow to the right of the icon expands a drop-down menu containing related buttons. If one of the related buttons is pressed, it replaces the default button in the toolbar. See the Simulation objects chapter for information about specific objects.

Material Database This button opens material database window. For more information, see the Material database 42 chapter.

Structures This button will insert the shown structure primitive into the simulation. Pressing the arrow will show all available primitives.

© 2003 - 2013 Lumerical Solutions, Inc

CAD layout editor

31

Groups This button will add an analysis, container or structure group into the simulation. Pressing the arrow will allow selection of which group to add.

Simulation This button will insert simulation or mesh override regions. Pressing the arrow will allow selection of which simulation object to add.

Import This button will open a window for importing files from other programs. Pressing the arrow will allow selection of which kind of import.

Doping This button will insert various doping regions into the simulation. Pressing the arrow will allow selection of which monitor to add.

Generation This button will insert various generation rate objects into the simulation. Pressing the arrow will allow selection of which monitor to add.

3.2.2 Edit The edit toolbar contains tools used to copy, delete, or modify settings of simulation objects.. When applicable, the shortcut key used to run the function from the keyboard is given in brackets next to the name of the tool. An object must be selected in order to use these tools.

Edit properties (E) This command opens the edit properties window. See the Simulation objects chapter for information about specific properties for each object. Tip: Group edit of multiple objects

© 2003 - 2013 Lumerical Solutions, Inc

32

Reference Guide The properties of multiple structure objects can be edited together by selecting multiple objects prior to entering edit mode. This option is only available for structure objects, not sources or monitors. Any properties which are identical between all of the selected objects results in the common value being displayed in the edit dialog box.

Duplicate (D) This command makes a duplicate of the currently selected object. The copies that are created are identical to the originals, apart from a one grid cell offset in their x position which allows the user to distinguish between the original and the copy. When multiple objects are selected, all of the selected objects will be copied. When copying sources and monitors, it is important to rename the copies so that each object has a unique name.

Move The move command allows shifting a single or multiple selected objects by a specified distance in each of the x,y,z dimensions. A pop-up window appears with field entries to specify the shift amount.

Array The array command allows the user to create an array or arrays of objects. The array edit window that pops up contains several properties : A1 LATTICE: the distance between adjacent elements in the a1 direction A2 LATTICE: the distance between adjacent elements in the a2 direction ANGLE BETWEEN A1 AND X-AXIS: the angle (in degrees) between the a1 direction and the x-axis ANGLE BETWEEN A1 AND A2: the angle (in degrees) between the a1 and the a2 directions. COLUMNS, ROWS: the number of rows and columns that comprise the array. AZ LATTICE: the distance between adjacent elements in the z direction (valid for 3D simulations only) LAYERS: the number of elements in the z direction (valid for 3D simulations only) The parameters in the edit window below produce the resulting array shown in the diagram.

© 2003 - 2013 Lumerical Solutions, Inc

CAD layout editor

33

Delete (Del) The delete command removes the currently selected object, or objects, from the simulation.

3.2.3 Mouse mode The mouse mode allows you to control the behavior of the mouse. Depending on the mode, the user can edit objects, pan or zoom in the view ports or measure the distance from one point to another. When applicable, the shortcut key used to run the function from the keyboard is given in brackets next to the name of the tool. Only one mouse mode may be selected at a time.

Select (S) This function puts the mouse into the select mode. This allows objects to be selected through the view ports (objects may be selected in the objects tree regardless of whether the mouse is in select mode or not). For reference, the current location of the mouse within the view ports is shown in the field at the bottom right-hand corner of the CAD window (see the image below). The < and > buttons at the right decrease or increase the number of decimal places shown.

Changing aspect ratio settings A feature available when in the select mode is changing aspect ratio settings. Right click in one of the view windows to see the menu, and then select Change aspect ratio settings.

Zoom (Z)

© 2003 - 2013 Lumerical Solutions, Inc

34

Reference Guide This function sets the mouse to be in the zoom mode. The default aspect ratio of the XY view and perspective views are locked at 1:1, which means circles always appear round (rather than as ovals). The aspect ratio for the XZ and YZ is not locked. Use the left click to zoom in and the right click to zoom out. To zoom to a particular area, drag diagonally across the desired region. Finally, double clicking either button zooms to extent. To adjust the view, it's easiest to set the XY view first, then adjust the Z view in the XZ or YZ views.

Pan view (P) The pan view mode allows the user to drag the view in the plane of the view port. In the Perspective window, the pan mode is used to rotate the view. Scrolling in the view ports The other method of adjusting the view ports is by using the arrow buttons on your keyboard. Each press of a button results in the view shifting in the direction indicated by the arrow.

Ruler (R) Once the ruler mode is selected, a distance measurement can be made by pressing the left mouse button and then dragging the mouse. A non-permanent triangle is drawn between the locations where the mouse button was pressed (A) and released (B). The distances are given in the lower left-hand corner of the CAD window (see the image below). The dx and dy fields correspond to the horizontal and vertical distance between A and B, and the AB field corresponds to the length of the hypotenuse.

3.2.4 View The view toolbar contains tools to zoom to the extents of objects, edit grid settings and view the mesh used for the simulation. When applicable, the shortcut key used to run the function from the keyboard is given in brackets next to the name of the tool.

Zoom Extent (X) Selecting this tool centers and scales the view ports around the selected simulation objects. For instance, pressing zoom extent while a structure is selected arranges the view such that only the structure are shown, while other simulation objects may appear outside the extent of the view. When no objects are selected, pressing this button zooms to the the largest object in the model. This function is also accessed via double-clicking either the left- or right-hand mouse button while in zoom mode.

© 2003 - 2013 Lumerical Solutions, Inc

CAD layout editor

35

Drawing Grid Clicking on the drawing grid brings up a window in which the following options can be edited: SHOW GRID: when checked, the grid will be plotted in the drawing palette SNAP TO GRID: when checked, objects can only be moved so that their centers align with intersection points of the grid A1 LATTICE: the distance between grid lines in the a1 direction A2 LATTICE: the distance between grid lines in the a2 direction AZ LATTICED: the distance between grid lines in the z direction ANGLE BETWEEN A1 AND X-AXIS: the angle (in degrees) between the a1 direction and the x-axis ANGLE BETWEEN A1 AND A2: the angle (in degrees) between the a1 and the a2 directions Recalculate simulation mesh (F5) Mesh generation is too computationally intensive to be done constantly as the simulation setup is modified. If you wish to see the current mesh, use this option to update and recalculate the mesh. The mesh is always recalculated before running a simulation.

3.2.5 Simulation The simulation tools are: Resources Opens the resource configuration manager. This window can add/remove and enable/ disable computational resources. It also contains a useful configuration test tool to check the resource setup.

Run Run the current simulation. For more information on how to run simulation, see Running a simulation.

Run scripts This function will allow the user to run a Lumerical script file (*.lsf) to perform automated commands such as plotting and saving data. This button is located in the CAD environment twice if the script editor is open: once in the simulation toolbar and once at the top of the script editor. Pressing the button on the toolbar brings up an open file dialog. Pressing the button in the script editor runs the script that is selected in the editor window.

© 2003 - 2013 Lumerical Solutions, Inc

36

Reference Guide

Switch to layout editor This function returns the simulation environment from analysis mode back to the layout editor mode. If you switch to layout editor and then save the file, the data from the simulation will be overwritten and lost.

3.2.6 Search bar The search toolbar can be used to quickly search for topics in the online product documentation knowledge base. This will bring up the search results in a new tab in your default browser.

Online help toolbar Search the online knowledge base for the specified term. Requires internet connection. If an internet connection is not available, some product documentation is available in the Help - Reference Guide menu.

3.3

View ports The view ports show a graphical representation of the simulation from an XY, XZ, YZ and 3D perspective view. Depending on the current mouse mode, the mouse pointer will either have the shape of an arrow (select), a hand (pan), a magnifying glass (zoom) or a ruler (measurement). You can toggle between these options with the mouse mode toolbar. When objects are selected, the vertices are drawn with red squares (also, the object will be highlighted in the Object tree. It is possible to copy and paste selected objects between different CAD windows using the standard Ctrl+C and Ctrl+V shortcut keys.

© 2003 - 2013 Lumerical Solutions, Inc

CAD layout editor

3.4

37

Object Tree As previously discussed, a simulation requires that the user define a set of objects, simulation region, sources and monitors. As a complete setup may contain a large number of objects, the object tree was designed to allow for organization and easy selection. All simulation objects are within the group, model, which represents the current simulation. Within 'model', objects are listed as they are inserted by the user. Press F2 or double-click to change the name.

To move the objects up and down the tree as well as into groups, we use the orange arrows at the top of the window. The up and down arrows shift the objects relative to each other, while the left and right arrows move them out of and into groups. To add groups, we use the button called groups in the main toolbar. Structure groups can only contain structures and likewise, analysis groups can only contain monitors. See the online user guide section for more information and examples about Structure groups and Analysis groups. The third group, "Containers" act like folders and can hold any type of object. In the image above, the 'Sources/Monitors' container group has both individual sources and monitors as well as an analysis group. Note that there are buttons with green crosses at the top of the objects tree. These buttons can be used to hide or display certain types of objects. When objects are selected, they are highlighted blue in the objects tree and the vertices are marked with red squares in the view ports. Objects can always be selected by left-clicking on their name in the object tree or edited by right-clicking. Using the tree is the preferred method of selection especially in complicated simulation setups with many overlapping elements. In the image above, the power monitor, above, is selected.

3.4.1 Enable/Disable Simulation Object User can enable/disable simulation objects by right-clicking on each and selecting "Enable/Disable". Disabled simulation objects will remain in the object tree (and can be

© 2003 - 2013 Lumerical Solutions, Inc

38

Reference Guide re-enabled), they will have no effect on the simulation.

See also setnamed 232 , set 231

3.5

Results View See the Results View

3.6

93

section of the Reference Guide for more information.

Optimization and Sweeps See the Optimization and parameter sweeps information.

3.7

97

section of the Reference Guide for more

Script Prompt and Script Editor The scripting language is useful for setting up complex structures and advanced data analysis. See the Scripting chapter for a list of all the script commands, as well as examples on how to use them. By default the script editor is located on the right hand side of the view ports and shares the same frame as the analysis window. When both windows are open, it is possible to toggle between the two through tabs located at the right side of the frame. The script file editor contains buttons to create, open, save and run script files. When multiple script files are open, pressing on the run script button runs the one in the forefront. Note that when entering scripting code in the script file editor, each command must be followed with a semicolon. When running a script file in the a different directory using the GUI, the current working directory is unchanged, but the directory of the script file is added to the scripting path. This way, any files called by that script will be found. However, the search order is the current directory first, then any other folders in the path, and then the directory of the script file.

© 2003 - 2013 Lumerical Solutions, Inc

CAD layout editor

39

By default the script prompt is located at the bottom of the CAD window. Script commands are executed as soon as the ENTER button is pressed on the command line. If a semicolon is missing at the end of the command line, it is automatically inserted it for you. Multiple lines can be pasted into the script prompt, and will run as in the script editor. In this case though, only the last semicolon can be neglected.

3.8

Script Workspace and Script Favorites See the Script Workspace and Script Favorites information.

3.9

95

section of the Reference Guide for more

Changing the CAD layout There are pre-defined CAD layouts that can be accessed through main title toolbar. Change between the default layouts by selecting the drop-down menu VIEW->SET DEFAULT LAYOUT, and choosing one of them. In addition, have control over hiding and docking location of the the windows and toolbars. The current layout is saved when CAD closes so the next time the program is opened, your previous layout will be used.

© 2003 - 2013 Lumerical Solutions, Inc

40

Reference Guide Hiding/showing windows and toolbars There are two methods to hide or show windows and toolbars 1) In the main title toolbar select VIEW->WINDOWS or VIEW>TOOLBARS. The visible windows/ toolbars have a check mark next to their name; the hidden ones do not. 2) By clicking the right button anywhere on the main title bar or the toolbar, the following pop up menu will show up. As before, check marks indicate when windows and toolbars are visible.

Moving and undocking windows Windows can be undocked by double clicking the name with the left mouse button. This is particularly useful when you want to make the script file editor window larger. Non-view-port windows can be docked on top of each other either to the right or to the left of the view ports. If they are placed on top of each other, tabs on the sides allow toggling between them. Tip: To reposition an undock ed window on Linux, hold down the Alt k ey before attempting to move the window. Moving toolbars To move a toolbar, hover the mouse over the top of the toolbar, where the dotted line is. When the mouse cursor becomes a four-headed arrow, press the left mouse button and

© 2003 - 2013 Lumerical Solutions, Inc

CAD layout editor drag-and-drop the toolbar. If you reach a region where you can place a toolbar, the CAD environment makes room for the toolbar indicated by a blue void.

© 2003 - 2013 Lumerical Solutions, Inc

41

42

Reference Guide

4

Material database This chapter explains the Material Database. See the following pages for details. Users may also find the Material modeling recorded video to be helpful. Material database 42 The Materials Database allows for the definition of complex materials using experimental data or parametrized models. It can be accessed by clicking the material database button on the Structures tab. The Material Database stores the material data to be used in the simulation. It also provides an interface to change material properties like color, mesh order, and model parameters. Experimental data can also be loaded into the database. To view the resulting index profile, use the Material Explorer. Electrical models 43 See this section for information on the available material models; insulators, semiconductors, and conductors. Mesh order 54 See this section for information on the mesh order property, which defines the meshing behavior (priority) for overlapping objects.

4.1

Material database The Materials Database allows you to manage (create, modify, delete) the materials that are available for use in your simulations. A copy of the database is stored in each simulation file. A change to the database in one file does not automatically change the materials in any other files. To modify the default materials that appear when you create a new simulation, edit the simulation file in the Defaults subdirectory of the installation directory.

Import / Export The import and export buttons allow you to transfer material data between simulation files via Material Database Files (.mdf) files.

© 2003 - 2013 Lumerical Solutions, Inc

Material database

43

Material list The material list shows the materials stored in the material database. A number of materials are provide with the product installation. To create additional materials, use the Add button. You can also modify some of the material properties (name, color, mesh order, etc) in the list view. Default materials provided with the product installation are write protected, and can not be directly modified. To modify the properties of a default material, simply use the Copy button to duplicate the material. The copy will be unlocked. The first column of the list shows which materials are write protected. Materials currently used in the simulation can not be deleted. The second column of the list shows which materials are in use. To delete these materials, first modify the simulation so they are not used.

Material Properties Use the Material properties window to view and edit the material model parameters. For model parameter definitions, see the material models section.

4.2

Electrical models This section describes the electrical material models supported by the Material Database. Model parameters can be edited in the Material property panel of the Material Database window. Materials are categorized by their physical characteristics. The three types of supported materials are conductors, insulators, and semiconductors.

Conductor Materials that are defined as conductors are treated as ideal electrical conductors in DEVICE: they are assumed to have zero resistivity. Consequently, the internal electric field must be zero, and the voltage applied to the conductor will be constant across its domain. Materials specified as conductors will be treated as ideal electrical contacts in the simulation. See more detailed information on Conductors

44

.

Insulator Materials that are defined as insulators are treated as ideal electrical insulators in DEVICE: they are assumed to be perfect dielectrics without free charge. See more detailed information on Insulators

44

.

Semiconductor Semiconductors, like insulators, are band gap materials. The band gap of a semiconductor is typically small enough to allow a significant fraction of electrons to be thermally excited

© 2003 - 2013 Lumerical Solutions, Inc

44

Reference Guide from the valence band to the conduction band at room temperature (300K). The band gap for a semiconductor typically ranges from 0.5-1.5eV. When energetically excited to a conduction band state, electrons leave behind a positively charged mobile vacancy, known as a hole, which behaves much like a free electron in the semiconductor. The mobility of the electrons and holes and the rates at which they are generated and recombine are determined by the models described in this section. See more detailed information on Semiconductors

44

.

4.2.1 Conductors Conductor Fundamental Properties Work Function The defining characteristic of the conductor is its work function, which describes the energy cost of removing an electron from the material.

4.2.2 Insulators Insulator Fundamental Properties Relative Dielectric Permittivity The relative permittivity (or dielectric constant) of the material is equal to the square of the refractive index, and is assumed to be the DC (zero frequency) value.

4.2.3 Semiconductors In This Section: Semiconductor Fundamental Properties Mobility 46 Bulk Recombination and Generation 50 Surface Recombination 53 References 54

44

Semiconductor Fundamental Properties Relative Dielectric Permittivity The relative permittivity (or dielectric constant) of the material is equal to the square of the refractive index, and is assumed to be the DC (zero frequency) value. Work Function In a semiconductor, the work function φs describes the energy cost of removing an electron from the intrinsic energy level (the Fermi energy of the undoped semiconductor) and placing it at "infinity." A related value is the electron affinitiy χs, which is the energy cost of removing an electron from the conduction band edge.

© 2003 - 2013 Lumerical Solutions, Inc

Material database

s

s ,i

EG 2

45

k BT N C ln 2 NV

where EG is the band gap and NC and NV are the effective density of states in the conduction band and valence band, respectively. Effective Mass To account for the influence of the crystal lattice potential of the semiconductor, electrons and holes can be approximated as free charges with an effective mass (relative to the electron rest mass) that depends on the electronic band-structure of the material. In DEVICE, the effective mass is treated as a parameter of the material model. The temperature variation in the effective mass can be accounted for with a quadratic model

mn*, p (T )

mn*, p (0)

T

T2

where coefficients α and β, and the effective mass at T=0K are inputs to the model. Related to the effective mass is the effective density of states in the conduction and valence bands

NC

NV

2 mn* k BT 2 h2

3/ 2

2 m*p k BT

3/ 2

2

h2

where h is Planck’s constant. Band Gap A key physical property of the material is the band gap, which, like the effective mass, is derived from the electronic band-structure of the material. In DEVICE, the band gap energy is treated as a parameter of the material model. The temperature variation in the band gap can be accounted for with a "universal" empirical model

EG (T )

EG , 0

T2 T

where coefficients α and β, and the band gap energy at T=0K are inputs to the model. Band Gap Narrowing

© 2003 - 2013 Lumerical Solutions, Inc

46

Reference Guide When impurities are added to the intrinsic (pure) semiconductor, localized allowed energy states may be introduced at energies that lie within the band-gap. In the case of dopants, these impurity states will exist with energies near the conduction or valence band edges (such that the dopants readily ionize at moderate temperatures). When the concentration of dopants is large, these discrete states will begin to merge and form a thin "band" of allowed states within the band gap, effectively narrowing the band gap. This can be viewed as a narrowing of the band gap or an increase in the effective density of states. The Slotboom model1 effect,

EG

V1 ln

54

ND

for band gap narrowing is provided in DEVICE to account for this

NA N0

ln 2

ND

NA N0

C

where the coefficients V1, N0, and C are inputs to the model, and the effect can be specified independently for electrons and holes. Note that the sign implies a narrowing effect for positive coefficients. Intrinsic Carrier Concentration The intrinsic carrier concentration is calculated from the effective mass and band gap, and is only displayed in the Material Database for reference. It is calculated as

ni

N C NV exp

EG / 2k BT

where T=300K is assumed, and the effective density of states and band gap are treated are treated as intrinsic quantities (before band gap narrowing).

Mobility The mobility parameter in the drift-diffusion equations is the physical link between the motion of carriers (electrons and holes) and the semiconductor material. The mobility can be viewed as a measure of how readily electrons and holes can move through the crystal lattice of the semiconductor. In the absence of any interactions with the lattice, impurities, or other carriers, electrons and holes would move freely in the periodic potential of the lattice; interactions that change the momentum of the carriers are termed scattering events. Different types of scattering contribute to the mobility of the electrons and holes, including lattice scattering, ionized and neutral impurity scattering, and carrier-carrier scattering. In addition, the velocity of the carriers is observed to saturate at high-fields. Each of these scattering mechanisms can be addressed in DEVICE by applying the appropriate models, which are detailed in the following sections. Lattice Scattering

© 2003 - 2013 Lumerical Solutions, Inc

Material database

47

The fundamental process that impedes the free motion of the carriers in the lattice is thermal scattering off of the lattice itself. The mobility due to lattice scattering is treated as a basic input into the DEVICE semiconductor model, and may be entered as a constant value or with a temperature dependence described by the "universal" temperature model,

A(T )

A(300)

T 300

where A(300) is the value of the parameter at T=300K, and η is a temperature exponent. In the case of the lattice scattering mobility µ L, the temperature dependence reads L n, p

L n, p

(T )

(300)

T 300

. where subscripts n and p refer to electrons and holes, respectively. Impurity and Free-Carrier Scattering Many models exist to account for the influence of impurities on the carrier mobility. DEVICE provides support for three common models with wide-ranging applicability: the 54 54 54 Caughey-Thomas model2 , the Masetti model3 , and the Klaassen model4 . Each model requires a variety of coefficients; default values are provided with DEVICE for common semiconductors. For general modeling purposes, the Caughey-Thomas model or Masetti models are often sufficient, and coefficients are available for multiple semiconductor materials. The Klaassen model is primarily tuned for silicon at T=300K, and coefficients for other materials are not available. At moderate doping densities, the mobility predicted by all models reduces to that of the Caughey-Thomas model. The most basic model is the Caughey-Thomas model, LI n, p

min n, p

L n, p

1

min n, p

N / N ref

where N is the total doping concentration (N = NA + ND ), µ L is the lattice scattering mobility (as determined from the model chosen in the previous section), and µ min, Nref, and α are temperature-dependent coefficients described the universal temperature model. To account for extremely large doping concentrations, the Masetti model can be selected, which adds a correction to the Caughey-Thomas model for large N: LI n, p

min n, p

L n, p

1

min n, p

N / Cr

( 2) n, p

1

Cs / N

. Again, N is the total doping concentration (N = NA + ND ) and µ L is the lattice scattering

© 2003 - 2013 Lumerical Solutions, Inc

48

Reference Guide mobility. Parameters µ min, µ (2), Cr (replacing Nref of the Caughey-Thomas model), Cs , α, and β are each temperature-dependent coefficients described the universal temperature model. Finally, the mobility model proposed by Klaassen can be used to account for the aforementioned doping effects (at moderate and high impurity concentrations), as well as the influence of carrier-carrier scattering. The Klaassen model combines the basic lattice scattering with the impurity and carrier-carrier scattering using Matthisen’s rule

1

1

1

LIC n, p

L n, p

IC n, p

where µ L is the lattice scattering mobility and µ IC is Klaassen’s impurity and carrier-carrier (IC) scattering mobility. The formulation of the IC scattering mobility is complex and involves multiple levels of coefficients and models accounting for majority carrier scattering by dopants, minority carrier scattering by dopants, and electron-hole scattering. To begin, the IC mobility is defined as a function of the dopant and carrier concentrations, L 2 L min N nsc, p N ref 1 n p n, p n, p n, p IC N , N , n , p n, p D A L min sc.eff . L min sc.eff . N nsc, p n, p n, p N n, p n, p n, p N n, p where µ L is the lattice scattering mobility, and coefficients µ min, Nref 1 (equivalent to Nref or C r

), and α are defined as for the Caughey-Thomas or Masetti models. Note that the Klaassen

model accounts for temperature dependence separately, therefore constant a constant value should be used for the lattice scattering mobility. In the preceding equation, the "scattering densities" are

N nsc

ND

NA

p

sc p

NA

ND

n

N

where the donor and acceptor densities, ND and NA respectively, are corrected according to the clustering function:

ND

ND

NA

NA

ND CD

N ref , D / N D

2

NA CA

N ref , A / N A

2

© 2003 - 2013 Lumerical Solutions, Inc

Material database

49

Here, CD , Nref ,D , CA, and Nref ,A are coefficients of the model. The "effective scattering densities" are defined as (using the same clustering-corrected acceptor and donor concentrations)

N nsc.eff .

ND

G Pn N A

p F Pn

N psc.eff .

N A G Pp N D

n F Pp

The function G describes the ratio of scattering cross-sections between repulsive and attractive screened Coulomb potentials as a function of the factor P (itself a function of carrier density and majority dopant density). The factor P accounts for the screening effect, and is calculated as the weighted harmonic mean of two parameters accounting for the free-carrier and ionized impurity screening, 1

Pn N D , n

f CW PCW ,n N D

Pp N A , p

f CW PCW , p N A

f BH PBH ,n n 1

f BH PBH , p p

Weights fCW and fBH are coefficients of the model. The same factor P is used in the calculation of the function F, which describes the mobility ratio between stationary, infinite-mass secondary scatters (e.g. ionized impurities) and mobile, finite-mass secondary scatters (e.g. free carriers). Both functions F and G are parameterized fitting functions to physical processes, and the coefficients of those functions (r1 to r6 for function F and s 1 to s 7 for function G) are also coefficients of the model. High-Field Saturation As the electric field within the semiconductor increases, the drift-velocity of the carriers is commonly observed to saturate, reducing the mobility accordingly. To account for this effect, DEVICE includes a saturation velocity mobility model LIC n, p

LICE n, p

1

LIC n, p

v

n, p sat n, p

where µ LIC is the mobility accounting for lattice, impurity, and carrier-carrier scattering (as

© 2003 - 2013 Lumerical Solutions, Inc

50

Reference Guide calculated using the active models for those processes) and vsat is the model coefficient that determines the saturation velocity. The product of the low-field mobility µ LIC and the gradient of the quasi-Fermi level is equivalent to the velocity in the context of the driftdiffusion equations.

Bulk Recombination and Generation Recombination describes the processes by which an electron from the conduction band makes an energetic transition and neutralizes a hole in the valence band. Generation describes the complementary behavior, where an electron is excited from the valence band to the conduction band, creating a hole in the process (often, the term electron-hole-pair is used when referring to generation). The models for bulk recombination and generation processes relate to the physical mechanisms by which the carriers make the energetic transition. DEVICE provides models describing trap-assisted (Shockley-Read-Hall) recombination, Auger recombination, and radiative recombination. These models and their parameterizations are the subject of the following sections. Trap-Assisted (Shockley-Read-Hall) Recombination The recombination process in the trap-assisted model assumes that there are unoccupied "trap" states (also referred to deep-level defect states) within the band gap. Typically, these states result from impurities (either intentional or unintentional), and the most active have energy levels near the middle of the band gap. Recombination occurs when an electron relaxes (transfers energy to the lattice or emits a photon) to the trap state from the conduction band, and sequentially, a hole from the valence band relaxes to the same trap state. This process is modeled using the Shockley-Read-Hall (SRH) equation,

RSRH p

np ni2 n n1 n p

p1

where τn and τp are the electron and hole lifetimes, respectively, and n1 and p1 are the effective densities of carriers in the trap states. The trap states are characterized by their densities Nt , capture cross-section σ t , and energy level Et - Ei (commonly abbreviated as Et and referenced to the intrinsic energy level). The constants n1 and p1 are calculated as

n1

niee Et / k BT

p1

niee

Et / k B T

The carrier lifetime can be determined from the capture cross-section and trap density as 1 n, p

n, p

Nt

3k BT mn*, p

© 2003 - 2013 Lumerical Solutions, Inc

Material database

51

but is commonly taken as an input to the model. DEVICE provides a temperature dependent model for the SRH carrier lifetime, as well as models that include corrections for doping density. The basic temperature-dependent model for the carrier lifetime follows the usual power-law relation srh, 0 n, p

srh, 0 n, p

(T )

(300)

n,p

T 300

Alternately, a constant value can be supplied for both electrons and holes. To account for doping concentration effects, DEVICE provides two correction models that use the previous expression for the SRH carrier lifetime as an input. First, a modified model in the form proposed by Fossum is described by srh, 0 n, p

srh n, p n, p

n, p

N n, p

n, p

N n, p

n,p

, where N n , p

N A ND N nref, p

The original model of Fossum can be obtained by setting coefficients α, β, and σ to one (1) and setting γ to zero (0), and this is the default model used in DEVICE. Alternately, a formulation proposed by Klaassen can be selected, where the SRH carrier lifetime correction is given by the equation srh n, p

1

srh, 0 n, p srh, 0 n, p n, p

N n, p

T 300

n,p

,

where N n , p

N A ND N nref, p

Note that this model explicitly includes the temperature dependence, and should only be used in concert with a constant value for the baseline SRH carrier lifetime. Auger Recombination Auger transitions are three-particle transitions (two carriers scatter and transfer energy and/ or momentum to a third carrier) that describe four related processes, which are illustrated in the figures below. Each process has an associated rate coefficient. According to the principle of detailed balance, the net rate for each type of carrier must be zero at equilibrium, such that

CcnAU ni2

CenAU and CcpAU ni2

CepAU

Assuming that the value of the rate coefficients does not change as the system moves from equilibrium, the net Auger recombination rate is

RAU

CcnAU n CcpAU p np ni2

Note that Auger transitions depend only on carrier density, differentiating them from other recombination processes.

© 2003 - 2013 Lumerical Solutions, Inc

52

Reference Guide

Recombination by electron excitation

RnAU

Recombination by hole Generation by Generation by excitation electron relaxation hole relaxation

CcnAU n 2 p

R pAU

CcpAU np 2

GnAU

CenAU n

G pAU

CepAU p

DEVICE supports three models for the capture rate coefficients, including the universal temperature model proposed by Klaassen, an empirical model by White accounting for a reduction in the recombination rate at high carrier concentrations, and a model by Clugston and Basore accounting for both high and low injection conditions. The universal temperature model proposed by Klaassen takes the usual power-law form,

Cn0, p

Cn , p (300)

T 300

n,p

and is suitable for devices where Auger recombination is moderate (low injection conditions). The Auger rate coefficients are only weakly dependent on temperature, and constant values may be used as well. An alternate empirical model proposed by White can be used as a correction to the previous model, taking that coefficient as an input. The White model accounts for the reduction in the Auger recombination rate observed at high carrier densities (due to strong screening effects), and is expressed as

Cn

Cn0 1

n

, Cp

C p0 1

p

where the coefficient α determines the transition density.

© 2003 - 2013 Lumerical Solutions, Inc

Material database

53

A related model proposed by Clugston and Basore is designed to account for the two regimes related to minority carrier injection:

Cn

Cn0

Cp

0 p

C

ND ND

p

CnHI p 2 ND p

NA

C pHI

n

NA n

2

NA n

DEVICE will use the Auger capture rate coefficient defined in the Klaassen model (or a constant value) for the low injection conditions, and apply a second coefficient when strong minority carrier injection dominates according to the preceding formulations. Radiative Recombination In a radiative transition, a conduction band electron will relax directly, emitting a photon whose energy approximately equals that of the band gap, and then recombine with a hole in the valence band. The opposite process occurs when a photon is absorbed by an electron in the valence band, promoting it to the conduction band and leaving a hole in its place. Radiative recombination transitions are typically significant only in materials with a narrow bandgap, or a bandstructure that permits direct transitions in momentum (e.g. GaAs). Radiative recombination is typically negligible in bulk silicon. The recombination rate is determined from the product of a capture rate coefficient and the carrier density product,

ROPT

CcOPT np

and the corresponding generation rate is simply the emission rate constant,

GOPT

CeOPT

Once again, the coefficients are related by the principle of detailed balance at thermal equilibrium, such that

ROPT

CcOPT np ni2

The optical capture rate coefficient can be modeled in DEVICE either as a constant or using the universal temperature power-law,

CcOPT (T ) CcOPT (300)

T 300

Surface Recombination Trap-Assisted Model Like bulk Shockley-Read-Hall (SRH) recombination, the presence of deep-level trap states

© 2003 - 2013 Lumerical Solutions, Inc

54

Reference Guide at the semiconductor surface catalyzes recombination. The surface recombination process is modeled by a formula similar to that of the bulk case,

Rsurf

np ni2 1 1 n n1s p sp sn

p1s

but differs slightly from the bulk process since it is occurs on a two-dimensional surface. The trap density Nts is now given per unit area, such that the carrier lifetime of the bulk case is replaced by a surface recombination velocity,

sn , p

n, p

N ts

3k BT mn*, p

The surface recombination velocity is treated as an input parameter in DEVICE, chosen to reflect the non-ideal nature of the material surface. The surface recombination velocity may be temperature dependent. Like the bulk case, the constants n1s and p1s are calculated as

n1s

niee Ets / k BT

p1s

niee

Ets / k BT

References 1. 2. 3. 4.

4.3

Slotboom, J.W., Solid-State Electron., 20, 279 (1997) Caughey, D. M. and Thomas, R. E., Proc. IEEE, 52, 2192 (1967) Masetti, G., et al., IEEE Trans. Electron Devices, ED-30, 764 (1983) Klaassen, D. B. M., Solid State Electronics, 35, 953 (1992); Klaassen, D. B. M., Solid State Electronics, 35, 961 (1992)

Mesh order The mesh order property governs how overlapping objects are meshed in the simulation. It serves no role for objects which do not overlap. The mesh order can be set at the material level (in the material database), or the object object level (in the object properties). Materials with a lower mesh order take priority over materials with a higher priority number (i.e. order 1 takes priority over 2). Areas which overlap are assigned the material properties of the higher priority material (see the following figure).

© 2003 - 2013 Lumerical Solutions, Inc

Material database

55

In the figure to the left, there are two objects that partially overlap. Depending on their mesh orders, the object that is actually being simulated will be different.

In the event that both overlapping materials have the same order, the mesh order will be inferred from the Object tree. Objects at the bottom of the tree will take priority over objects at the top of the tree. To ensure your simulation is well defined, it is recommended that you avoid situations where two different overlapping structure have the same mesh order. Tip: Plot the geometry after meshing to confirm that the structures was meshed as intended.

© 2003 - 2013 Lumerical Solutions, Inc

56

Reference Guide

5

Simulation objects There are several types of simulation objects in FDTD Solutions, MODE Solutions' propagator, MODE Solutions' Eigenmode Solver and DEVICE. These objects are used to model the physical structure, define the solver region, any sources of light or doping/generation regions as well as monitors to collect data.

The following sections provide detailed descriptions of each simulation object. Each simulation object can be added by clicking on the corresponding icon in the GUI. For example, in the screen shot on the right, clicking on the button would add a circle physical structure object. Once the object is selected, pressing the EDIT button will bring up a window where it is possible to modify the properties of the simulation object. The corresponding window for the circle object is shown below.

TIP: In-field equation interpreter The fields for numeric parameters can be used as a simple calculator. For instance, if you

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

57

wish to set a value to the square root of 3 divided by e, just enter sqrt(3)/exp(1) into the field. For more information, see the Equation interpreter 76 section. Notes: Structure objects support Multi-object editing. If you select multiple objects then click EDIT, you can edit properties that are common to all of the selected objects. Monitors and sources have some global properties that apply to many objects. For example, the global source frequency range can be applied to all sources. The global properties can be edited with the GLOBAL PROPERTIES

button.

Groups Simulation objects can be organized into various types of groupings.

Container Group A container group is the simplest type and can contain all object types as well as other groups. This object acts like a simple folder allowing the user to collapse and expand its contents in the object tree. Its only user setting is a position offset in x,y,z for all contained objects.

Structure Group Structure groups are one step above container groups in that they allow scripting commands of structures properties. This group contains user-generated variables and scripts that can be utilized to edit and set up parts of the structure. For example, a script can be set up to insert many circles to create a photonic crystal cavity of a certain shape and size. See the Properties tab 65 and Script tab 65 sections for more information. Structure groups can contain other structure groups.

The purpose of this section of the Reference Guide is to describe all of the available simulation objects and their properties. This section is organized as follows. There are five subsections. The first four subsections correspond to the four types of object categories. Each of these sections begins with a brief overview of the simulation objects followed by a description of their property settings. The properties are organized according to the tab that they are located in when the EDIT button is pressed. The last of the five subsections describes the syntax for the equation interpreter.

© 2003 - 2013 Lumerical Solutions, Inc

58

Reference Guide

5.1

Structures Structures in a simulation interact with light/electrical sources to produce interesting effects. They are split into 3 groups:

Structures (Primitives) These are the primitive shapes that make up all structure setups.

Imports These options open windows that can be used to import structure data from other sources such as pictures or text files.

5.1.1 Primitives

The

button includes options to to add the following primitive structures:

Triangle Triangular objects denote physical objects that appear triangular from above. For 2D simulations, these objects represent triangles while in 3D these objects are extruded in the z direction to a specific height. They are actually polygon objects, with the number of vertices set to 3.

Rectangle Rectangular regions denote physical objects that appear rectangular from above. For 2D simulations, these objects represent rectangles while in 3D these objects are extruded to a specific height.

Polygon Polygons allow the user to define a custom object with a variable number of vertices. The location of each vertex can be independently positioned within a plane, and the vertices are connected with straight lines. For 3D simulations, the object is extruded in the z dimension. In DEVICE, the vertices have to be entered in a counter clock wise manner for the structure to be defined and meshed properly.

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

59

Circle Circles denote physical objects which appear circular or ellipsoid from above. They are either circles/ellipses in 2D, or circular/ellipsoid cylinders in 3D.

Ring Ring regions represent physical objects that consist of full or partial rings when viewed from above. Rings in 3D simulations are extruded in the z direction to a specific height. Sphere In 3D simulations, users can define spherical regions of constant refractive index through the spherical physical object. Spherical objects only exist in 3D simulations.

Pyramid Pyramids can be configured to half flat tops and/or flat bottoms, and either narrow or expand in the vertical z direction. Pyramids are only available for 3D simulations.

5.1.2 Geometry tab The geometry tab contains options to change the size and location of the structure.

5.1.3 Material tab The material options are as follows: MATERIAL: This field can be set to any material included in the material database. It is possible to include new materials in the database, or edit the materials already included. See the material database section for more information. OVERRIDE MESH ORDER FROM MATERIAL DATABASE: Select to override the mesh order from the material database and manually set a mesh order. The mesh order is used by the simulation engine to select which material to use when two materials overlap. See the mesh order 54 section for more details. MESH ORDER: Set the mesh order in this field if the OVERRIDE MESH ORDER FROM MATERIAL DATABASE option is selected. If the option is not selected, the field displays the material's default mesh order from the database. For example, a material of mesh order 1 will take precedence over a material of mesh order 2.

© 2003 - 2013 Lumerical Solutions, Inc

60

Reference Guide

5.1.4 Rotations tab Rotate objects by setting the following variables: FIRST, SECOND, THIRD AXES: Select rotation axis. Up to three different rotations can be applied. ROTATION 1,2,3: The rotation of the object in a clockwise direction about each axis, measured in degrees.

5.1.5 Graphical Rendering tab The graphical rendering tab is used to change how objects are drawn in the layout editor. The options are: RENDER TYPE: The options for drawing the objects are detailed or wireframe. Detailed objects are shaded and their transparency can be set using OVERRIDE COLOR OPACITY FROM MATERIAL DATABASE. DETAIL: This is a slider which takes values between 0 and 1. By default it is set to 0.5. Higher detail shows more detail, but increases the time required to draw objects. This setting has no effect on the simulation. OVERRIDE COLOR OPACITY FROM MATERIAL DATABASE: When unselected the opacity is determined from the material database. When selected, you can specify a value for ALPHA between 0 (transparent) and 1 (opaque) for the object, depending on how transparent you want the object to be.

5.1.6 Import Data tab

The

button includes options to import from a variety of formats:

GDSII This file format is commonly used to store 2-dimensional geometric data. For details, see GDSII Import 60 .

5.1.6.1 GDSII Import

The GDSII import function allows you to import structures from a GDSII file into the layout editor. The GDSII file format is commonly used to store 2-dimensional geometric data. This data can be directly imported into a 2D layout environment, or it can be used to import 3D objects into a 3D layout environment by extruding the 2D data in the Z dimension.

Characteristics of the GDSII file © 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

61

Lumerical products support most, but not all features of the GDSII file format. Unsupported features should not prevent the file from being imported, however, the results may not be as expected. The following table details the supported and unsupported features. Features

Supported

General Multiple cells in GDSII library file

Yes

Layer numbers for drawing objects

Yes

Primitives/Objects Box/Rectangle

Yes

Polygon

Yes

Path (see note below)

Yes

Node

No

Text

No

Symbolic cell reference

Yes

Array cell reference

Yes

Advanced Cell references in external library/file

No

Magnifications in array and symbolic references

Yes

Rotations and mirroring in array and symbolic references

Yes

Note: Path corners Path objects in GDSII files are piecewise linear lines plus a width and optionally some information on how to handle corners and ends. In general, GDSII files support several types of corner style options (squared, rounded, extended squared, etc). Our import function supports type 0 (squared ends flush to the end-point) and will default to type 2

© 2003 - 2013 Lumerical Solutions, Inc

62

Reference Guide (square ends with 1/2 the width added to the end-point) for all other types. Note: Flattened GDSII files While we do include scale, rotate, flip, and automatic flattening of references, not all features of GDSII are currently supported. If you run into any problems, you may have better results by flattening the file first.

GDSII Import Import using GUI GDSII import is initiated by accessing the IMPORT->GDSII option from the FILE menu, or by pressing the Import GDS button located on the main toolbar. This will bring up a standard file browser, which will allow you to select a file with the extension .gds or .db. Selecting a GDSII file will bring up the Single layer GDSII Import window as shown below.

The following 3 input parameters control how the GDSII data is imported: Cell name: This selection menu contains the valid cells available in the GDSII library. Select the cell you wish to import. Layer number: This selection menu contains all of the layer number present in the GDSII file. Only structures with the selected layer number will be imported by this operation. Material: This selection menu contains a list of the valid materials in your current simulation environment. This material will be assigned to the imported structures. Selecting the Import layer button imports all the structures with the selected layer number in the selected cell into the layout environment. These structures are automatically inserted

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

63

into a structure group. The material is set as an input parameter for the structure code, and the script in the structure group sets all the objects to the desired material. The name of the structure group includes the original number of layers. For 3D simulations, the structure group contains a variable "z span". This used to set the width of the layer in the z direction. The origin of the structures, as well as their orientation, can be changed by changing the properties of the structure group. Import using script command The GDSII file can also be imported via script, the command gdsimport can be used. For more information of the script commands, please visit Reference Guide - GDSII chapter 281 . See Also Userguide - GDSII - Import and export 5.1.6.2 Surface import window

Options in the surface import window include: After surface data has been imported, the Import data tab allows the following properties to be modified: IMPORT: You can import new data into the object, or clear the imported data via a simple GUI. For properties of the import GUI, see bottom of page. X,Y FINE SCALE ADJUSTMENTS: Re-scale the object X,Y span. Modifying these properties will change the X,Y span properties. Z SCALE property not used for surface import. DATA SIZE: These properties provide some information about the imported data. They are read-only. LOWER, UPPER REF HEIGHT: Set the vertical location of the reference plane (height=0 in the imported data). Modifying these properties will change the Z, Z span properties. Note: Related properties It is important to notice that the 'x, y scale' and 'x, y span' properties are linearly related. Doubling the object 'x span' will automatically double the 'x scale' property. Similarly, the 'lower, upper ref height' properties are related to the 'z and z span' properties, although the relationship is slightly more complex. See the following figure for details. The surface's can be truncated by setting the 'z span' property to a small value.

© 2003 - 2013 Lumerical Solutions, Inc

64

Reference Guide

Note: Overlapping surfaces If the z span is small enough such that the upper and lower surfaces overlap (as shown below), no structure will be included in the simulation in that region.

For additional information and example files, see the Import object surfaces page in the User Guide section of the Online help. Import surface GUI settings: SELECT FILE: let the user specify the data file to be imported. X0, Y0, Z0: the data origin in the global coordinates of the Graphical Layout Editor. X,Y: This defines the span of surface that you are importing. INVERT X AND Y AXIS: It is often easy to invert the x and y axis when exporting the file. Selecting this checkbox means that the x and y axes are automatically reversed. UPPER SURFACE, LOWER SURFACE: Choose which surface is being imported. FILE UNITS: Select units for the data in your file.

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

65

5.1.7 Properties tab The properties tab is only available for structure groups. The properties tab is used to set the origin of the group, and to create the custom properties of the group that are the inputs of the group script. Custom user property variables may be added with the ADD button, and removed with the REMOVE button. Each user property has a name and a type (number, frequency ect). The user properties can be set manually in the edit GUI or through script commands. For more information and examples, see the Structure groups page of the User Guide section of the Online Help.

5.1.8 Script tab The script tab is only available for structure groups. The script tab can contain script commands that are used to set up a structure or edit the properties of structures located within the structure group. The structure group has access to the user variables defined in the PROPERTIES tab, and can change properties of any objects that are contained in the group. The script does not have access to objects which are not located in the group, and does not share the same variable space as the script prompt. The script is run every time the TEST or OK button is pressed, or when one of the user properties is changed with a script command. The following buttons and regions are available in the script tab: SCRIPT: This is where the script commands are written. To find a list of script commands, see the Scripting Language 108 section of the Reference Guide. TEST/SCRIPT OUTPUT: Press the TEST button to run the script. If there are no syntax errors in the script the SCRIPT OUTPUT will read . For more information and examples, see the Structure groups page of the User Guide section of the Online Help.

5.2

Simulation Simulation objects are used to define simulation parameters like boundary conditions and mesh size.

Simulation region The simulation region defines most simulation parameters including the size and mesh size.

Mesh Constraint The mesh constraint region is used to override the default mesh element area in some part of the simulation region. Normally the meshing parameters are set in the Simulation

© 2003 - 2013 Lumerical Solutions, Inc

66

Reference Guide region. However, if some specific meshing conditions are required in part of the simulation region, a mesh constraint region can be specified. Note that only one simulation region per simulation is supported, but multiple mesh constraint regions may be used. TIP: Objects which lie outside the simulation region. Any simulation objects contained or partly contained within the simulation region are included in the simulation, while any objects which fall completely outside of the simulation region are not included in the simulation. Those physical structures (and portions thereof) lying within the simulation region are included in the simulation (i.e. the simulation is performed on that portion of the physical structure lying within the simulation region). Physical monitors and sources are treated in a similar fashion, such that any portion of a monitor or source lying within a simulation region will be used. The user is warned when at least one source or monitor falls completely outside the simulation region.

5.2.1 General tab The options in the general tab depend on whether the item being edited is a simulation region or a mesh refinement region. Simulation region The simulation region contains several settings: SIMULATION TEMPERATURE (K): The temperature in Kelvin at which the simulation will be done. SOLVER GEOMETRY: This drop down menu gives the choice of a 2D simulation plane or a 3D simulation. NORM LENGTH: The length of the device in the direction perpendicular to the plane of the simulation; any normalizations length will be with respect to this value. SOLVER MODE: DC mode for dc simulations and transient mode for time dependant simulations. The color of the simulation region will change depending on which option is picked. Also, the available options in the contacts table will change accordingly. CONTINUE FROM PREVIOUS SOLUTION: If this option is checked, the user has the choice to specify a file that has already been run with a solution. This solution will be used as the starting point for the Newton solver. In simulations where the starting point isn't at zero volts, this can be very useful to save time. . Mesh Constraint region For the mesh constraint region, the maximum element area can be set.

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

67

5.2.2 Mesh tab Global Mesh Constraints The global mesh settings section contains several settings: MAXIMUM EDGE LENGTH: The maximum length of an edge of a triangle (in 2D) used in the mesh. MAXIMUM EDGE LENGTH: The minimum length of an edge of a triangle (in 2D) used in the mesh. TRIANGLE QUALITY: The quality of mesh triangle, defined the minimum angle used in the triangular mesh cells. The higher the angle, the higher the quality of the triangle Auto Refinement Settings The auto refinement settings section contains several settings: MAX REFINE STEPS: The automatic refinement proceeds in multiple stages, creating a quality triangulation and refining the mesh according to the change in doping density and, if present, optical generation rate. This setting limits the number of refinements at each stage, and corresponds to the number of vertexes that can be added to the mesh at each stage. SENSITIVITY: This setting controls the threshold at which the mesh will be refined due to the gradient in the doping density or optical generation rate. The default value will roughly correspond to a limit of a factor of 2 change in the doping density or generation rate over the span of an element in the mesh.

5.2.3 Geometry tab The geometry tab contains options to change the size and location of the simulation or mesh refinement region.

5.2.4 Transient tab Transient Simulation Controls The transient simulation controls section contains several settings: MIN TIME STEP: The smallest time step that will be used in the transient simulation (used as the initial time step) MAX TIME STEP: The largest time step that will be used in the transient simulation. Downsampling DOWN SAMPLE MODE: The type of downsampling to use, None, for no downsampling, count, for specifying the number of point to downsample at, and interval to specify the downsample step size. Global Optical Shutter

© 2003 - 2013 Lumerical Solutions, Inc

68

Reference Guide The global optical shutter will apply a shutter to all the optical generation objects in the simulation. SHUTTER MODE: disabled, for no shutter, step on and step off for step functions, pulse on and pulse off for a pulse with on and off times. The time shutter function will be plotted as the option is chosen for ease of use. The on and off times can then be specified.

5.2.5 Results This tab contains a list of all the spatial results that can be recorded throughout the simulation. One can pick to enable or disable one or more of the results to save memory as needed.

5.2.6 Advanced options tab WARNING: This tab includes options which should only be changed if you are quite familiar with the meshing algorithm and techniques used . DEVICE: DEVICE: SOLVER TYPE can be set to gummel or newton. Please see this page 69 to learn about the function of each solver type. MULTITHREADING if enabled, the user can choose to divide up and run the simulation over multiple threads FERMI STATISTICS if enabled, fermi statistics will be used in the solvers. Please see this page 70 to learn more about the details of the fermi statistics model. The following applies to both sections on Poisson Solver Controls and Drift-Diffusion Solver Controls: USE DEFAULTS: checked by default, will use an iteration limit of 40, absolute tolerance of 1e-06 volts and a maximum update value of 5 volts. ITERATION LIMIT: Takes a value between 1 and 10000. This limits the number of iterations of the Poisson or drift-diffusion solver that may be run. ABSOLUTE TOLERANCE: For a calculation to be considered converged, this determines the maximum absolute change between iterations that can exist. For the Poisson solver, the step converges when

Vk

1

Vk

where δ is the tolerance and V is the electrostatic potential. For the drift-diffusion solver, both the electron and hole quasi-Fermi levels must converge:

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

69

k 1 k E Fn E Fn k 1 k E Fp E Fp

MAXIMUM UPDATE: To help the calculation converge, the maximum change that will be applied to estimate the solution at the next step can be clamped. This value is in multiples of the thermal voltage (kT/q). Initialization: INITIALIZATION: disabled by default, but can be enabled if the start bias in a voltage sweep is far from the solver's initial guess. More steps will help bring the initial guess closer to the start value but will cause the simulation to take longer.

5.2.7 Solver type DEVICE simultaneously solves the equations for the electrostatic potential (Poisson’s equation) and charge (drift-diffusion equations). The solutions to these equations must be self-consistent, i.e. the charge calculated from the drift-diffusion equations satisfies the Poisson equation, and vice versa. Two common approaches are used to solve this system of equations: Gummel’s method and Newton’s method. Gummel’s method decouples the charge problem from the electrostatic potential problem at each step. As both of these equations are non-linear, they must in turn be solved using an iterative or direct method. First, the electrostatic potential is solved holding the charge fixed. Next, this solution to the electrostatic potential is used as a fixed input to the charge equations, and those are updated. This process continues until the solution is selfconsistent. Gummel’s method is stable and efficient for devices where the currents are small and the variations in the charge distribution are not too extreme (meeting the criteria that the charge and electrostatic potential are weakly coupled problems). Gummel’s method should not be used for transient simulations or simulations involving high levels of charge injection. Newton’s method is the classic approach to solving a system of non-linear equations. In this method, the electrostatic potential and charge are solved for simultaneously, and all are updated at each step. Newton’s method requires a good initial guess in order that it will converge, and can be more difficult to converge than Gummel’s method. However, Newton’s method can handle devices where the variations in charge density are large. Newton’s method must be used for transient simulations.

© 2003 - 2013 Lumerical Solutions, Inc

70

Reference Guide

5.2.8 Fermi statistics Electrons and holes are fermions, and therefore obey Fermi-Dirac statistics. At a finite temperature, the energy distribution of the electrons is described by the Fermi-Dirac function,

where k is the Boltzmann constant, T is the temperature, and Ef is the Fermi energy. When E-Ef>>kT, the Fermi-Dirac distribution can be approximated by the Boltzmann distribution,

Often in semiconductor devices, when the net doping density is sufficiently low (nondegenerate), the Fermi energy is located within the band gap (carriers are forbidden from having energies within the range of the band gap), far from the band edges. When the condition E-Ef>>kT is satisfied (typically for |E-Ef|> 3kT), the Fermi-Dirac distribution can be replaced with the Boltzmann distribution. The carrier density is calculated from the integrated product of the Fermi-Dirac distribution (probability of occupancy) and the density of states (available states to occupy). For electrons, the equation is

When the Fermi-Dirac distribution is used, this integral does not have an analytic solution, and must be approximated numerically. However, for non-degenerate conditions, the FermiDirac distribution is approximated by the Boltzmann distribution, and the preceding equation reduces to

describing the electron density at equilibrium (Nc is the effective density of states and is a constant related to the specific properties of the semiconductor).

5.3

Monitors The following types of monitors are available in DEVICE:

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

71

Charge monitors Charge monitor records electron and hole densities in the monitor space. It can also integrate the total charge within the monitor surface/volume.

Electric Field monitors Electric field monitor records the electric field within the monitor region as well as the electrostatic potential. Using this information, it can also calculate the total charge within the monitor surface/volume.

5.3.1 General tab

Charge monitor MONITOR TYPE: The monitor geometry can be chosen. It can be a point, a line in any direction, a plane normal to any of the axis or a 3D monitor. RECORD ELECTRONS/HOLES: If this option is checked, the electron/hole densities will be recorded. These will be in units of 1/cm^3 for both n and p. TRUNCATE MESH: Since the generated mesh is triangular and the monitors are rectangular, if this option is chosen, the mesh points will be interpolated onto the monitor boundaries. INTEGRATE TOTAL CHARGE: The total number of electrons/holes will be calculated within the monitor surface/volume. This will be in unitless ( total number of charged carriers) in 3D and in units of 1/m ( number of carriers in a meter) in 2D for both n and p. Electric field monitor MONITOR TYPE: The monitor geometry can be chosen. It can be a point, a line in any direction, a plane normal to any of the axis or a 3D monitor. RECORD ELECTRIC FIELD: If this option is checked the electric field across the monitor is recorded.E will be in units of volts/m. RECORD ELECTROSTATIC POTENTIAL: If this option is checked, the electrostatic potential across the monitor is recorded. V is in units of volts. CALCULATE NET CHARGE: If this option is checked, the net charge within the monitor surface/volume is calculated using Gauss's law by integrating the electric field flux through the box surface. The results are in units of Coulombs in 3D simulations and Coulombs/m in 2D simulations.

© 2003 - 2013 Lumerical Solutions, Inc

72

Reference Guide

5.3.2 Geometry tab The geometry tab contains options to change the size and location of the monitors.

5.4

Generation The following types of Optical generation objects are available to be superimposed on the structure in DEVICE:

Bulk Generation The bulk generation object allows the user to define a region of bulk optical generation. The region geometry as well as the parameters below can be specified: ILLUMINATION FACE: The direction of illumination can be chosen by picking one of the six sides of the cubic region. SPECTRUM: The spectrum of the illumination can be chosen. For example, solar (AM 1.5G) will import the spectrum of the sun. MATERIAL: The semiconductor onto which the generation is superimposed can be chosen from this drop down menu. INTERFACE REFLECTION: Either an air interface or an anti reflective coating interface can be chosen as the boundary of the generation region. In the case of the ideal anti reflective coating, all light will be assumed to penetrate into the semiconductor, whereas in the air interface case, reflections from the air-semiconductor interface could take place. A plot of the generation rate versus position will be generated on the bottom right corner of the edit window.

Import Generation The Import generation object allows the import of a user defined optical generation region. The location of the object is specified via the edit window. IMPORT NEW DATA: opens file browser to select data file. The file must be in Matlab format (.mat) and contain fields "x", "y", "z", and "G", where "x", "y", and "z" are 1D arrays specifying the rectilinear grid, and "G" is a 3D array (with dimensions NX x NY x NZ corresponding to the rectilinear grid) whose entries are the optical generation rate in units of m-3s -1.

5.5

Doping The following types of Doping objects are available to be superimposed on the structure in DEVICE:

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

73

Constant Doping Region The constant doping object allows the user to define a region with constant doping. The region geometry as well as parameters can be entered. DOPANT TYPE: The dopant type can be n-type (donors) or p-type (acceptors). CONCENTRATION: The concentration of the dopant can be entered.

Diffusion Region The diffusion region object allows the user to define a region with a dopant concentration profile. The region geometry as well as parameters can be entered. DOPANT TYPE: The dopant type can be n-type (donors) or p-type (acceptors). SURFACE CONCENTRATION: The concentration of the dopant at the surface (the peak concentration) can be entered. FACE: The side of the region where the surface concentration is defined (i.e. where the diffusion source originates). For example, "upper y" refers to the face defined by "y max". JUNCTION WIDTH: The width of the doping profile from surface (peak) concentration to reference concentration at the edge of the diffusion region. DIFFUSION FUNCTION: The doping concentration profile, can be gaussian or the complementary error function (erfc). REFERENCE CONCENTRATION: The doping concentration on the exterior of the box (excluding the originating face).

Import Doping Region The Import doping object allows the import of a user defined spatial doping profile. The location of the object is specified via the edit window. IMPORT NEW DATA: opens file browser to select data file. The file must be in Matlab format (.mat) and contain fields "x", "y", "z", and "N", where "x", "y", and "z" are 1D arrays specifying the rectilinear grid, and "N" is a 3D array (with dimensions NX x NY x NZ corresponding to the rectilinear grid) whose entries are the doping concentrations in units of cm-3. DOPANT TYPE: The dopant type can be n-type (donors) or p-type (acceptors).

© 2003 - 2013 Lumerical Solutions, Inc

74

Reference Guide

5.6

Contacts The Contacts table allows the user to define electrical contacts in the simulation region and assign a bias to them.

The add/delete/edit buttons can be used to add a new contact, delete a contact or edit the properties of a contact respectively. The name of the contact can be typed in the Name column, the geometry of the contact can be picked from a drop down menu from the choices available according to the simulation objects. The contact can be set to Ohmic, Schottky or None. SOLVER MODE: The mode of the solver is consistent with the mode picked in the simulation region and can be set to dc to transient. DC MODE: In the DC mode, the bias assigned to each contact can either be fixed at a value or swept over a range of DC values. In the sweep case, the start and stop biases as well as interval and the number of points in the sweep can be specified. Alternatively, the user can manually enter a range of values for the voltage to sweep over. Series and shunt resistors can also be added to the voltage source to model more complicated circuits.

© 2003 - 2013 Lumerical Solutions, Inc

Simulation objects

75

TRANSIENT MODE: In the transient mode, the bias assigned to each contact can either be fixed at a value ( this is the same as the fixed bias in DC mode) or transient, swept over a range of time dependant values. In the transient case, the values for each voltage point as well as the time point can be entered in a table. Series and shunt resistors and capacitors can also be added to the voltage source to model more complicated circuits. The resistance and capacitance for these elements can also be specified as a function of time. If only one point is specified in the table, then a constant value is assumed for that element. The values for the voltage Rs and Cs will be linearly interpolated in time for consistency.

© 2003 - 2013 Lumerical Solutions, Inc

76

Reference Guide

5.7

Equation interpreter The fields for numeric parameters can be used as a simple calculator. For instance, if you wish to set a value to the square root of 3 divided by e, just enter sqrt(3)/exp(1) into the field. The expression will be automatically evaluated when you press Enter or click on a different field. Equations which become undefined (i.e. 1/0) should be avoided. The following table provides a list of available operators and constants. Category

Syntax

Algebraic operators

+, -, *, /

Trigonometric operators

sin, cos, tan, asin, acos, atan, atan2, sinh, cosh, tanh

Power operators

^ or **, exp, log10, log, sqrt

Logical operators

>, =, E vs x, y, z, lambda/f To output the actual attribute or parameter values, do something like: ?E_field.x; # output the 'x' position vector > result: > -6.58393e-006 > -6.5442e-006 > -6.50447e-006 > .....

Accessing data in a dataset: the dot '.' operator Individual matrices stored in the dataset can be accessed with the dot '.' operator. For example, to get the raw x, y, and Ex data from an Electric field dataset, do something like: x = E_field.x; y = E_field.y; Ex = E_field.Ex;

Dataset types: matrixdataset and rectilineardataset © 2003 - 2013 Lumerical Solutions, Inc

146

Reference Guide Data without spatial parameters (such as example 1) will use matrix datasets. Data with spatial information from a rectilinear grid (such as the FDTD mesh) will use rectilinear datasets.

Operations on datasets Datasets are primarily intended to be a convenient way to manage and store a collection of related data. It is not possible to apply mathematical operations, such as addition, directly to dataset objects. Instead, the dot operator must be used to get the desired data into a matrix. The operation can then be applied to the matrix. You may choose to create a new dataset to store the result, or you may simply keep the result as a standard matrix.

Scalar and vector attributes It is possible to add both scalar and vector attributes to datasets. Scalar The command R.addattribute("R",reflection); # add reflection attribute adds a scalar quantity 'R' to a dataset with the same name. To access the 'R' raw data, use: R.R; Vector The command E.addattribute("E",Ex_raw,Ey_raw,Ez_raw); # add vector E field attribute adds a vector quantity 'E' to a dataset with the same name. In this case, we can access the raw 'E' data in the following ways: E.Ex; # get Ex component E.Ey; # get Ey component E.Ez; # get Ez component E.E2; # get |E|^2 E.E; # get all components in a single matrix. An extra dimension of length 3 will be added to the matrix, for each vector component. See Also rectilineardataset 139 , addattribute 140 , addparameter 140 , visualize 203 , datasets 141 , getparameter 140 , getattribute 141 , matrixdataset 139 , struct 146

7.2.29 struct The script command struct adds an unstructured dataset. Any data type (such as matrix, string, dataset) can be added to struct objects.

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language Syntax

Description

a = struct;

Creates an unstructured dataset.

a.a = "string";

Adds a string field to the structure.

a.b = matrix(5,5);

Adds a field of matrix of 5x5 to the structure.

147

See Also Datasets 141 , matrixdataset 139 , rectilineardataset 139 , cell 147

7.2.30 cell The script command cell creates a cell array variable with specified number of elements. The cell array element can be any data type, such as matrix, string, and dataset. Syntax

Description

a = cell(n);

Creates a cell array with n elements.

a{n} = "string";

Adds a string to the specified element of the cell array.

a{n} = matrix(5,5);

Adds a field of matrix of 5x5 to the specified element of the cell array.

See Also Datasets 141 , matrixdataset 139 , rectilineardataset 139 , struct 146 , splitstring 178

7.2.31 unstructureddataset Unstructureddataset script command creates an empty dataset that is associated with arbitrary x/y/z coordinate in space, and with additional matrix, a connectivity matrix to connect them. The connectivity matrix comes after x, y, and z. Like rectilinear datasets, unstructured datasets can be parameterized, and can contain an arbitrary number of attributes (see addattribute) 140 and parameters (see addparameter) 140 . See Dataset introduction 141 for more information. For datasets that are not associated with the x/y/z coordinates (ex. transmission as a function of frequency), see matrixdataset 139 . Syntax

Description

unstructureddataset(x,y,z, C);

Creates a empty rectilinear dataset associated with the coordinates x/y/z and a connectivity matrix to connect

© 2003 - 2013 Lumerical Solutions, Inc

148

Reference Guide them. See Also rectilineardataset 139 , addattribute 140 , addparameter 140 , visualize 203 , datasets 141 , getparameter 140 , getattribute 141 , matrixdataset 139 , struct 146

7.3

Operators Standard mathematical and string operators. Algebraic operators Command

Description

* 150

Multiplication. Ex: y = x * z;

/ 150

Division. Ex: y = x / z;

+ 150

Addition. Ex: y = x + z;

- 150

Subtraction. Ex: y = x – z;

- 150

Negative. Ex: y = -x;

^ 151

Power. Ex: y = x^3; In expression A^B, if B is complex, the phase of A is evaluated from - to .

Logical and relational operators Command

Description

== 151

Comparison.

almostequal 151

Almost equal comparison operator.

!= 152

Not equal.

= 152

Greater than or equal to.

< 153

Less than.

> 153

Greater than.

& 153

AND.

and 153

AND.

| 154

OR.

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language or 154

OR.

! 154

NOT.

~ 155

NOT.

Dataset operators Command

Description

. 149

Retrieve the parameters and attributes of datasets.

String operators Command

Description

" 155

Create a string variable.

' 156

Create a string variable.

+ 150

Add strings

endl 157

end of line character.

Output to screen Command

Description

? 157

Display output on screen.

# script file comments 157

Comment script files with #

7.3.1 . The dot operator can be used to retrieve the parameters and attributes of datasets. Syntax

Description

result = A.result;

Retrieves the parameter or attribute "result" from the existing dataset A. The result is a scalar matrix.

See Also matrixdataset 139 , rectilineardataset 139 , getparameter 140 , getattribute 141 , visualize 203

© 2003 - 2013 Lumerical Solutions, Inc

149

150

Reference Guide

7.3.2 * Multiplication. When applied to matrices, this operator does simple element by element multiplication, not matrix multiplication. Syntax

Description

y = x * z;

Multiply x and z.

See Also Operators 148 , * 150 , / 150 , + 150 , - 150 , ^ 151 , mult 169

7.3.3 / Division. Syntax

Description

y = x / z;

Divide x by z.

See Also Operators 148 , * 150 , / 150 , + 150 , - 150 , ^ 151

7.3.4 + Addition. Syntax

Description

y = x + z;

Add x and z.

y = string1 + string2;

Concatenate strings together.

See Also Operators 148 , * 150 , / 150 , + 150 , - 150 , ^ 151

7.3.5 Subtraction, or negative. Syntax

Description

y = x - z;

Subtract z from x.

y = -x;

Negative

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

151

See Also Operators 148 , * 150 , / 150 , + 150 , - 150 , ^ 151

7.3.6 ^ Power. In expression A^B, if B is complex, the phase of A is evaluated from - to . Syntax

Description

y = x^3;

x cubed.

See Also Operators 148 , * 150 , / 150 , + 150 , - 150 , ^ 151

7.3.7 == Logical comparison. This operators can be used with complex numbers and strings. Syntax

Description

out = y == x;

Returns 1 if x and y are equal. Returns 0 otherwise.

See Also Operators 148 , = 132 , almostequal 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.8 almostequal Almost equal comparison operator. When using floating point numbers (rather than integers), two values that are meant to be equal may not be exactly equal due to rounding errors that are always present in floating point calculations. In such cases, the almost equal function can be useful. Syntax

Description

out = almostequal(A, B);

Returns 1 if A - B is less than or equal to A + B /2*1e15. Returns 0 otherwise.

out = almostequal(A, B, relative diff);

Returns 1 if A - B is less than or equal to A + B /2 times relative diff. Returns 0 otherwise.

out = almostequal(A, B, relative diff, absolute diff);

Returns 1 if A - B is less than or equal to A + B /2 times relative diff or if A - B is less than or equal to absolute diff. Returns 0 otherwise.

© 2003 - 2013 Lumerical Solutions, Inc

152

Reference Guide

See Also Operators 148 , = 132 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.9 != Not equal to comparison operator. Returns 1 if values are not equal. Returns 0 if values are equal. This operator can be used in matrix operations. This operators can be used with complex numbers. Syntax

Description

out = a!=b;

If a is not equal to b, then out equals 1. Otherwise out equals 0.

See Also Operators 148 , == 151 , almostequal 151 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.10 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.11 >= Logical greater than or equal to. Imaginary components of x and y are ignored. Syntax

Description

out = y >= x;

Greater than or equal to.

See Also Operators 148 , == 151 , != 152 , 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

153

7.3.12 < Logical less than. Imaginary components of x and y are ignored. Syntax

Description

out = y < x;

Less than.

See Also Operators 148 , == 151 , != 152 , = 152 , almostequal 151 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.13 > Logical greater than. Imaginary components of x and y are ignored. Syntax

Description

out = y > x;

Greater than.

See Also Operators 148 , == 151 , != 152 , = 152 , < 153 , almostequal 151 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.14 & Logical AND. Imaginary components of x and y are ignored. Syntax

Description

out = y & x;

If the real part of either or both of x,y are zero, then return 0. Otherwise return 1.

y and x;

Same as &.

See Also Operators 148 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.15 and Logical AND. Imaginary components of x and y are ignored. Syntax

© 2003 - 2013 Lumerical Solutions, Inc

Description

154

Reference Guide out = y & x;

If the real part of either or both of x,y are zero, then return 0. Otherwise return 1.

y and x;

Same as &.

See Also Operators 148 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.16 | Logical OR. Imaginary components of x and y are ignored. Syntax

Description

out = y | x;

If the real part of either or both of x,y is non-zero, then return 1. Otherwise return 0.

y or x;

Same as |.

See Also Operators 148 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.17 or Logical OR. Imaginary components of x and y are ignored. Syntax

Description

out = y | x;

If the real part of either or both of x,y is non-zero, then return 1. Otherwise return 0.

y or x;

Same as |.

See Also Operators 148 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.18 ! Logical NOT operator. If a value is 0, then NOT returns 1. For all other values, NOT returns 0. NOT(A) is equivalent to A==0, where == is the comparison operator. Syntax

Description

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language out = !a;

applies logical not operator to a

out = ~a;

applies logical not operator to a

155

See Also Operators 148 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.19 ~ Logical NOT operator. If a value is 0, then NOT returns 1. For all other values, NOT returns 0. NOT(A) is equivalent to A==0, where == is the comparison operator. Syntax

Description

out = !a;

applies logical not operator to a

out = ~a;

applies logical not operator to a

See Also Operators 148 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155

7.3.20 " String operator. Strings can be created with single or double quotes. The following escape sequences are recognized when creating strings with double quotes: \" double quotes in string \n newline (linefeed) character in string \\ backslash in string Syntax

Description

out="my string";

use double quotes to create strings

NOTE: Literal back slashes and double quotes It is always possible to create a literal backslash in a string with \\. However, \ also results in a literal backslash, IF it it will not be interpreted as part of an escape sequence (\n, \", \\). This note is important when storing paths in strings. Suppose we want to create the string C:\Program Files\Lumerical. The following three commands are valid and equivalent: mystring = 'C:\Program Files\Lumerical'; # use single quotes

© 2003 - 2013 Lumerical Solutions, Inc

156

Reference Guide mystring = "C:\Program Files\Lumerical"; mystring = "C:\\Program Files\\Lumerical"; and \\ escape character

# use double quotes # use double quotes

However, suppose we want to create the string C:\Program Files\Lumerical\. The only difference is the additional backslash at the end of the string. The following two commands are valid and equivalent: mystring = 'C:\Program Files\Lumerical\'; # use single quotes mystring = "C:\\Program Files\\Lumerical\\"; # use double quotes and \\ escape character The other potential command, where we use a single backslash, is not valid syntax and will result in an error. mystring = "C:\Program Files\Lumerical\"; # use double quotes The problem is that the script interpreter will interpret the final \" as an escape character for a literal double quote, rather than as a single backslash and a closing double quote. When interpreted this way, the command results in a syntax error because there is no double quote character closing the string.

See Also Operators 148 , ' 156 , num2str 175 , + 150 , endl 157 , write 123 , eval 176

7.3.21 ' String operator. Strings can be created with single or double quotes. The following escape sequences are recognized when creating strings with single quotes: '' single quote in string (two single quote characters) Syntax

Description

out='my string';

use single quotes to create strings

See Also Operators 148 , " 155 , num2str 175 , + 150 , endl 157 , write 123 , eval 176

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

157

7.3.22 endl Add an end of line character to a string Syntax

Description

out = "line1"+endl+"line2";

Add an end of line character to the string.

See Also Operators 148 , num2str 175 , + 150 , " 155 , write 123

7.3.23 ? Print output to the screen. Use the format script command to change the precision of the output. Syntax

Description

?command;

Displays the output of the command on the screen This function does not return any data.

See Also System level 109 , write 123 , format 121 , # 157

7.3.24 comments Use the # character to comment script files. Anything after the # character is ignored. The comments are not displayed when the script file is run. Comments can not be used when typing commands directly into the script prompt. Syntax

Description

x=1; # set x to 1

Anything after the # character is ignored.

See Also System level 109

7.4

Functions Standard mathematical and matrix functions. Trigonometric and complex Command

Description

sin 162

Trigonometric sin function.

© 2003 - 2013 Lumerical Solutions, Inc

158

Reference Guide cos 162

Trigonometric cos function.

tan 162

Trigonometric tan function.

asin 162

Inverse trigonometric sin function.

acos 163

Inverse trigonometric cos function.

atan 163

Inverse trigonometric tan function.

atan2 163

Same as atan, but returns angle in correct quadrant.

real 164

Returns the real part of variable

imag 164

Returns the imaginary part of variable

conj 164

Complex conjugate

abs 164

Absolute value

angle 165

Phase of a complex number.

unwrap 165

Removes phase difference of more than 2

Logarithmic, exponential and power Command

Description

log 165

The natural logarithm. Input can be complex or negative.

log10 165

The log, base 10. Input can be complex or negative.

sqrt 166

The square root.

exp 166

The exponential.

Matrix functions Command

Description

size 166

Returns the dimensions of a matrix.

length 166

Returns the total number of elements in a matrix.

pinch 167

Remove singleton dimensions from a matrix.

sum 167

The sum of a matrix.

max 168

The max value in a matrix.

min 168

The min value in a matrix.

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

159

dot 168

The dot product of two vectors.

cross 168

The cross product of two vectors.

flip 170

Flip a matrix in one dimension.

interp 171

Linear interpolation function.

spline 172

Cubic spline interpolation.

integrate 173

Integrate a matrix.

integrate2 173

Integrate a matrix, ignore singleton dimensions.

find 174

Find values that satisfy a condition in a matrix.

findpeaks 174

Find peaks in a matrix.

transpose 175

Transpose a matrix.

ctranspose 175

Transpose a matrix, and do complex conjugate.

mult 169

Perform matrix multiplication of two or more matrices.

reshape 170

Reshape the matrix to have different dimensions conserving the overall product of the dimensions.

eig 169

Calculate the eigenvalues and/or eigenvectors of a matrix.

permute 170

Rearrange the dimensions of a matrix.

inv 171

Calculate the inverse of a matrix.

mean 192

Return the mean value of a matrix

var 193

Returns the variance

std 194

Returns the standard deviance

mapfind 194

Returns a string value associated to specified point, given a file containing a map of values to a string

See also Manipulating variables 130 String functions Command

Description

num2str 175

Convert number to a string.

© 2003 - 2013 Lumerical Solutions, Inc

160

Reference Guide str2num 176

Convert a string into a floating point number.

eval 176

Execute string containing Lumerical scripting language.

feval 176

Run a Lumerical script file.

length 166

Returns the total length of the string.

substring 176

Returns a substring of a string, as a specified position and length.

findstring 177

Returns the position of a substring in a string.

replace 177

Replaces a part of a string with another, at a specified position.

replacestring 178

Replaces all instances of a substring with another string.

splitstring 178

Split a single long string into a cell (string) array based on a delimiting character.

Frequency and time-domain Command

Description

fft 178

Fast Fourier transform.

fftw 180

Returns the angular frequency vector.

fftk 181

Returns the spatial wavevector kx.

invfft 182

Inverse fft.

czt 183

Chirped z-transform.

Line and polygon functions Command

Description

polyarea 183

Returns the area of a polygon.

centroid 184

Returns the center of mass of a polygon.

polyintersect 184

Determines if two polygons intersect.

inpoly 185

Determines if a series of points are inside our outside a polygon.

polygrow 185

Grows or shrinks a polygon by a specified amount.

polyand 186

Combines two polygons into one with an and

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

161

operation. polyor 186

Combines two polygons into one with an or operation.

polyxor 187

Combines two polygons into one with a xor operation.

lineintersect 187

Returns the intersection of line segments.

linecross 188

Determines if line segments cross each other.

Miscellaneous Command

Description

ceil 188

Round up.

floor 188

Round down.

mod 189

Modulus after division.

round 189

Rounds to the nearest integer.

rand 190

Returns a uniformly distributed random number between 0 and 1.

lognrnd 190

Returns a lognormal distributed random number.

randn 190

Returns a normally distributed random number.

randreset 191

Resets the random number seed.

finite 191

Determines if a number is finite or NaN.

solar 191

Returns the solar power spectrum

stackrt 192

Calculates reflection and transmission of multi-layer stacks

all 192

Returns 1 if all of the specified matrix entries are nonzero and returns 0 otherwise.

any 193

Returns 1 if any of the specified matrix entries are nonzero and returns 0 otherwise.

quadtri 195

Returns approximated integration (first order quadrature) of data on a 2D finite element mesh.

precision

Returns truncated value to a user specified precision.

© 2003 - 2013 Lumerical Solutions, Inc

162

Reference Guide

7.4.1 sin Trigonometric sine function. Angle units are in radians. Function is defined for complex angles. Phase of a complex number is evaluated between - and . Syntax

Description

out = sin(x);

Returns the complex sine of x.

See Also Functions 157 , asin 162

7.4.2 cos Trigonometric cosine function. Angle units are in radians. Function is defined for complex angles. Phase of a complex number is evaluated between - and . Syntax

Description

out = cos(x);

Returns the complex cosine of x.

See Also Functions 157 , acos 163

7.4.3 tan Trigonometric tangent function. Angle units are in radians. Function is defined for complex angles. Phase of a complex number is evaluated between - and . Syntax

Description

out = tan(x);

Returns the complex tangent of x.

See Also Functions 157 , atan 163 , atan2 163

7.4.4 asin Inverse trigonometric sine function. Angle units are in radians. Function is defined for complex values. Phase of a complex number is evaluated between - and . If x is complex, or abs(x) > 1, the following equation is used: asin(x) = -i ln( ix + sqrt(1-x^2)) Syntax

Description

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language out = asin(x);

163

Returns the complex arcsine of x.

See Also Functions 157 , sin 162

7.4.5 acos Inverse trigonometric cosine function. Angle units are in radians. Function is defined for complex values. Phase of a complex number is evaluated between - and . If x is complex, or abs(x) > 1, the following equation is used: acos(x) = -i ln( x + i sqrt( 1-x^2)) Syntax

Description

out = acos(x);

Returns the complex arccosine of x.

See Also Functions 157 , cos 162

7.4.6 atan Inverse trigonometric tangent function. Angle units are in radians. Function is defined for complex values. Phase of a complex number is evaluated between - and . If x is complex, or abs(x) > 1, the following equation is used: atan(x) = 0.5 i ln( (i+x)/(i-x) ) Syntax

Description

out = atan(x);

Returns the complex arctangent of x.

See Also Functions 157 , atan2 163 , tan 162

7.4.7 atan2 Inverse trigonometric tangent function, calculates the arctangent of y/x, but returns the angle in the correct quadrant. Angle units are in radians. Function is defined for real values only. Syntax

Description

out = atan2(y,x);

x,y must be real.

See Also

© 2003 - 2013 Lumerical Solutions, Inc

164

Reference Guide Functions 157 , atan 163 , tan 162

7.4.8 real Returns the real part of a number or matrix. Syntax

Description

out = real(x);

Returns the real part of x.

See Also Functions 157 , imag 164

7.4.9 imag Returns the imaginary part of a number or matrix. Syntax

Description

out = imag(x);

Returns the imaginary part of x.

See Also Functions 157 , real 164 , conj 164

7.4.10 conj Returns the complex conjugate of a number or matrix. Syntax

Description

out = conj(x);

Returns the complex conjugate of x.

See Also Functions 157 , real 164 , imag 164

7.4.11 abs Returns the absolute value of a number or matrix. Syntax

Description

out = abs(x);

Returns the absolute value of x.

See Also Functions 157 , real 164 , imag 164

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

165

7.4.12 angle Returns the angle or phase of a complex number or matrix in radians. Syntax

Description

out = angle(x);

Returns the phase of x.

See Also Functions 157 , real 164 , imag 164 , unwrap 165

7.4.13 unwrap Removes changes of more than 2 from a 1D array. It can be useful after angle(x) to see phase without discontinuities. The unwrap function is primarily intended for 1D arrays. Care must be taken when applying it to matrices with more than one dimension. Syntax

Description

out = unwrap(x);

Return the values of x without discontinuities.

See Also Functions 157 , real 164 , imag 164 , angle 165

7.4.14 log The natural logarithm. Input can be complex or negative. Syntax

Description

out = log(x);

The natural logarithm. Input can be complex or negative.

See Also Functions 157 , log10 165

7.4.15 log10 The log, base 10. Input can be complex or negative. Syntax

Description

out = log10(x);

The log, base 10. Input can be complex or negative.

See Also Functions 157 , log 165

© 2003 - 2013 Lumerical Solutions, Inc

166

Reference Guide

7.4.16 sqrt The square root. Syntax

Description

out = sqrt(x);

The square root.

See Also Functions 157 , ^ 151

7.4.17 exp The exponential. Syntax

Description

out = exp(x);

The exponential.

See Also Functions 157 , log 165 , ^ 151

7.4.18 size Returns the size of a matrix. Syntax

Description

y = size(x);

y is a matrix which shows the dimensions of x.

See Also Functions 157 , length 166 , flip 170 , transpose 175

7.4.19 length Returns the number of elements in a matrix. If the argument is a string, it will return the length of the string. Syntax

Description

y = length(x);

y the number of elements in a matrix. For example, if x is an n by m matrix, y = length( x ) = n * m.

See Also Functions 157 , size 166 , transpose 175 , flip 170 , substring 176 , findstring 177 , replace 177 ,

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

167

replacestring 178

7.4.20 pinch Removes all singleton dimensions from a matrix. Syntax

Description

out = pinch(x);

Removes all singleton dimensions. For example, if x is a matrix of dimension 1x1x1xM, then y=pinch(x); will return a Mx1 matrix where y(i) = x(1,1,1,i);

pinch(x,i);

Removes a specified dimension. If x is an NxMxKxP matrix then y=pinch(x,2); will return an NxKxP matrix where y(i,j,k) = x(i,1,j,k)

pinch(x,I,j);

Removes a specified dimension but keeps a specific index for the dimension being removed. If x is an NxMxKxP matrix then y=pinch(x,2,4); will return an NxKxP matrix where y(i,j,k) = x(i,4,j,k)

See Also Functions 157 , find 174 , size 166 , flip 170

7.4.21 sum Sum of elements in a matrix. Syntax

Description

out = sum(x);

Sum of all the elements in a matrix, over all dimensions.

out = sum(x,2);

Sum x over the specified dimension.

See Also Functions 157 , integrate 173 , mean 192

© 2003 - 2013 Lumerical Solutions, Inc

168

Reference Guide

7.4.22 max The maximum value in a matrix. For complex numbers, only the real part is considered. Syntax

Description

out = max(x);

The maximum value in a matrix.

See Also Functions 157 , min 168 , abs 164 , mean 192

7.4.23 min The minimum value in a matrix. For complex numbers, only the real part is considered. Syntax

Description

out = min(x);

The minimum value in a matrix.

See Also Functions 157 , max 168 , abs 164 , mean 192

7.4.24 dot Dot product. Matrix A, B must have the same number of elements. The dot product will be calculated with the following formula.

C

A(i ) B (i ) i

Syntax

Description

C = dot(A, B);

Returns the dot product of A and B

See Also Functions 157 , cross 168 , * 150 , length 166 , size 166

7.4.25 cross Vector cross product. Matrix A, B must be the same size. The cross product will be computed on the first dimension that has a size of 3. There must be at least one dimension with a size of 3. © 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

169

Assume that A,B are 2D matrices, where the second dimension contains the vector components. The size of the second dimension must be 3. Then the elements of C will be calculated with the standard cross product formulas.

C (i,1)

A(i,2) B(i,3) A(i,3) B(i,2)

C (i,2)

A(i,1) B(i,3) A(i,3) B(i,1)

C (i,3)

A(i,1) B(i,2) A(i,2) B(i,1)

Syntax

Description

C = cross(A, B);

Returns the cross product of A and B

See Also Functions 157 , dot 168 , * 150 , length 166 , size 166

7.4.26 eig Find the eigen value and/or eigen vector of a matrix. The matrix has to be square. Syntax

Description

out = eig(A); out = eig(A, 1);

Returns the eigenvalues of matrix A.

out = eig(A, 2);

Returns the eigenvectors of matrix A.

out = eig(A, 3);

Returns both the eigenvalues and eigenvectors of matrix A.

See Also Operators 148 , = 132 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155 , mult 169 , permute 170 , reshape 170 , inv 171

7.4.27 mult Perform matrix multiplication of two or more matrices. The dimensions of the matrices have to match Syntax

Description

out = mult(A,B,...)

Returns the matrix multiplication of matrices, A x B x C ...

© 2003 - 2013 Lumerical Solutions, Inc

170

Reference Guide

See Also Operators 148 , = 132 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155 , eig 169 , permute 170 , reshape 170 , inv 171

7.4.28 flip Flip a matrix along one dimension. Syntax

Description

C = flip(A, dim);

Flips the matrix A along the dimension dim.

See Also Functions 157 , size 166 , length 166 , pinch 167 , transpose 175 , reshape 170 , permute 170

7.4.29 permute This function is a more general version of the transpose function. It allows matrix dimensions to be rearranged as needed. Syntax

Description

out = permute(A, [i,j,k, ...])

Returns a matrix with the same elements as A but with rearranged dimensions i,j,k, etc.

See Also Operators 148 , = 132 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155 , eig 169 , reshape 170 , mult 169 , inv 171 , flip 170 , transpose 175 , size 166

7.4.30 reshape Reshapes the matrix A to have the size i,j,k.The product of the specified dimensions, i*j*k*..., must be the same as that of the original matrix A. Syntax

Description

out = reshape(A, [i,j,k, ...])

Returns an array with the same elements as A but reshaped to have the size i by j by k by ...

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

171

See Also Operators 148 , = 132 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155 , eig 169 , permute 170 , mult 169 , inv 171 , flip 170 , transpose 175 , size 166

7.4.31 inv Calculate the inverse of a matrix. The matrix has to be invertible. Syntax

Description

out = Inv(A)

Returns the inverse of matrix A

See Also Operators 148 , = 132 , == 151 , != 152 , = 152 , < 153 , > 153 , & 153 , and 153 , | 154 , or 154 , ! 154 , ~ 155 , eig 169 , mult 169

7.4.32 interp Linear interpolation of a data set. The data can be complex. Syntax

Description

out = interp(Ex, xold, xnew);

Does a linear interpolation of a 1D function. Ex is existing data xold specifies the points where Ex is sampled xnew specifies new point to interpolate the data. The xnew does does not have to be within the bounds of xold.

interp(Ex, xold, yold, xnew, ynew);

The 2D version of interp.

interp(Ex, xold, yold, zold, xnew, ynew, znew);

The 3D version of interp.

interp(Ex, xold, yold, zold, told, xnew, ynew, znew, tnew);

The 4D version of interp.

See Also Functions 157 , spline 172

© 2003 - 2013 Lumerical Solutions, Inc

172

Reference Guide

7.4.33 interptri The script command interpolates a data set from triangular to linear grid. The data can be complex. Syntax

Description

out = interptri(tri, vtx,u, xi, yi, Does a triangular to linear interpolation of a function and extrap_val); outputs a PxQ array of interpolated values, z(xi,yi). u is existing data of the finite element mesh (Nx1). xi (length P) / yi (length Q) specifies the points where u is to be sampled on the rectilinear mesh, in the xdirection and the y-direction tri is the elements of the triangular mesh taken from the simulation region, the connectivity array, Mx3, containing row entries that index the three vertices of M triangles vtx are the vertices of the triangular mesh, Nx2, containing row entries of (x,y) pairs, taken from the simulation region extrap_val(optional): if an interpolation point is outside of the finite element mesh, the point will be assigned this value (default is Inf) See Also quadtri

7.4.34 spline Does a cubic spline interpolation of a data set. Syntax

Description

out = spline(Ex,xold,xnew);

Cubic spline interpolation of a 1D function. Ex is existing data xold specifies the points where Ex is sampled xnew specifies new point to interpolate the data. The xnew does does not have to be within the bounds of xold.

See Also Functions 157 , interp 171

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

173

7.4.35 integrate Returns the integral over the specified dimension of a matrix. Integrals over singleton dimensions will return zero (i.e. the area under a single point is zero). See integrate2 for an alternate behavior. Syntax

Description

out = integrate(A, n, x1);

Integrates A over the nth dimension in the matrix. x1 is the corresponding position vector for that dimension.

out = integrate(A, d, x1, x2, ...);

Calculates the integral of A over the specified list of dimension(s) d. d is a vector containing the dimensions over which to integrate. xi are the position vectors corresponding to the dimensions of A over which the integration is occurring. For example power = integrate(A,1:2,x,y) will integrate A over an x-y surface.

See Also Functions 157 , integrate2 173 , max 168 , min 168 , interp 171 , find 174 , pinch 167 , round 189 , getdata 269 , sum 167 , length 166

7.4.36 integrate2 Very similar to the standard integrate function, except that singleton dimensions are ignored. As described in the integrate function description, integrating over dimensions with a single value (singleton dimensions) returns zero because the area under a single point is zero. In some cases, particularly when you are not sure which dimensions are singleton, this behavior can cause difficulties. The integrate2 function automatically ignores all dimensions with a size of one, which avoids the problem of a zero valued integrals due to singleton dimensions. Syntax

Description

out = integrate2(A, 1, x1);

Integrates A over the first dimension in the matrix. x1 is the corresponding position vector.

out = integrate2(A, d, x1, x2, Calculates the integral of A over the specified dimension(s) ...); d.

© 2003 - 2013 Lumerical Solutions, Inc

174

Reference Guide d is a vector containing the dimensions over which to integrate. xi is the position vector corresponding to the dimensions of A over which the integration is occurring. If any of the xi vectors only have 1 element, integrate returns 0. For example power = integrate2(A,1:2,x,y) will integrate A over an x-y surface.

See Also Functions 157 , integrate 173 , max 168 , min 168 , interp 171 , find 174 , pinch 167 , round 189 , getdata 269 , sum 167 , length 166

7.4.37 find This function will search for entries in a matrix that meet some condition. The indices of those values are returned. For multi-dimensional matrixes, the find function will still return a single index. This is useful when using the output from find in a loop. Syntax

Description

out = find(x,5e-6);

Will return the index of x that corresponds to the closest value to 5e-6.

out = find(x>5);

Will return indices of all values of x that are greater than 5.

See Also Functions 157 , pinch 167 , findpeaks 174 , integrate 173 , length 166 , size 166 , mod 189 , meshgrid3dx 135 , meshgrid3dy 135 , meshgrid3dz 136

7.4.38 findpeaks Returns the position of peaks in a matrix. A peak is defined as a data point that is larger than its nearest neighbors. Syntax

Description

out = findpeaks(y);

Returns the position of the peak with the largest value in y. The length of y must be at least 2. If no peak is found in the data, a value of 1 is returned.

findpeaks(y,n);

Returns a matrix containing the positions of the largest n peaks found in the data. The returned values are ordered

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

175

from largest to smallest. The returned matrix is always of dimension nX1. If less than n peaks are found, the remaining values of the returned matrix are 1. See Also Functions 157 , find 174

7.4.39 transpose Transpose a 1D or 2D matrix. Syntax

Description

y = transpose(x);

If x is an N x M matrix, then y will be M x N, where the entries are y(j,i)=x(i,j).

See Also Functions 157 , ctranspose 175 , reshape 170 , flip 170 , permute 170 , size 166

7.4.40 ctranspose Transpose a 1D or 2D matrix and take the complex conjugate of each element. Syntax

Description

y = ctranspose(x);

If x is an N x M matrix, then y will be M x N, where the entries are y(j,i)=x(i,j)* .

See Also Functions 157 , transpose 175

7.4.41 num2str Convert an integer, floating point number, or matrix into a string. Use the format script command to change the precision of the output. Syntax

Description

out = num2str(x);

Converts the number x into a string. x can also be a 1D or 2D matrix.

See Also Operators 148 , " 155 , + 150 , ? 157 , endl 157 , write 123 , format 121 ,str2num 176 , findstring 177 , replace 177 , replacestring 178 , substring 176 , eval 176

© 2003 - 2013 Lumerical Solutions, Inc

176

Reference Guide

7.4.42 str2num Convert a string into a floating point number. Use the format script command to change the precision of the output. Syntax

Description

out = str2num(string);

Converts string into a number.

See Also Operators 148 , " 155 , + 150 , ? 157 , endl 157 , write 123 , format 121 , findstring 177 , replace 177 , replacestring 178 , substring 176

7.4.43 eval Execute string containing Lumerical scripting language. Syntax

Description

eval(string);

Execute string containing Lumerical scripting language at the Lumerical script prompt. This function does not return any data.

See Also Operators 148 , feval 176 , str2num 176 , num2str 175

7.4.44 feval Evaluates a string as script file. This function is useful for running script files that are not in your path and files with spaces in the name. Syntax

Description

feval(filename);

Execute string containing the name of a script file at the Lumerical script prompt. This function does not return any data.

See Also Operators 148 , eval 176 , str2num 176 , num2str 175

7.4.45 substring Can be used to extract a substring from a string. Syntax

Description

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

177

s1 = substring(s,pos);

Returns a substring of s, starting at position pos to the end of s. The position pos can be 1 to length(s).

s1 = substring(s,pos,len);

Returns a substring of s, starting at position pos, with len characters. If len is -1 (or any value less than 0) it returns the substring at position pos to the end of s. The default value of len is -1.

See Also Functions 157 , length 166 , findstring 177 , replace 177 , replacestring 178 , str2num 176 , num2str 175 , splitstring 178

7.4.46 findstring Returns the position of a given substring in a string. Syntax

Description

pos = findstring(s,s1);

Returns the position of the first instance substring s1 in s. If s1 is not found in s, it returns -1.

pos = findstring(s,s1,p0);

Returns the position of the first instance substring s1 in s, starting at position p0. If s1 is not found in s, starting from p0, it returns -1.

See Also Functions 157 , length 166 , substring 176 , replace 177 , replacestring 178 , str2num 176 , num2str 175 , splitstring 178

7.4.47 replace Replaces a substring of a string with a new string. Syntax

Description

snew = replace(s,pos,len, s1);

Replaces len characters of s, starting at position pos, with the string in s1. If len is 0, it will insert the string s1 between pos-1 and pos. If len is -1 (or any values less than 0) it will replace all remaining characters in s with s1, starting at pos. The position pos can be 1 to length(s).

See Also Functions 157 , length 166 , substring 176 , findstring 177 , replacestring 178 , str2num 176 , num2str 175 , splitstring 178

© 2003 - 2013 Lumerical Solutions, Inc

178

Reference Guide

7.4.48 replacestring Replaces a substring of a string with a new string. Syntax

Description

snew = replacestring(s,s1, s2);

Replaces all instances of s1 in s with s2.

See Also Functions 157 , length 166 , substring 176 , findstring 177 , replace 177 , str2num 176 , num2str 175 , splitstring 178

7.4.49 splitstring Split a long string into a series of substrings, where the substrings are stored in a cell (ie. string) array. Syntax

Description

S2 = splitsting(S1,endl);

Split the string S1 into a series of strings, using the end of line character as the delimiter between strings. S2 is a cell array.

See Also Functions 157 , length 166 , substring 176 , findstring 177 , replace 177 , str2num 176 , num2str 175 , cell 147 , dir 114 , getresult 270

7.4.50 fft Compute the 1D, 2D or 3D Fast Fourier Transform (fft) of a matrix. In the 1D case the transform is given by N

E w [ m]

fft( E x )

E x [ n] e

(

2 i )( n 1)( m 1) N

n 1

The fft, inverse fft and all associated functions have an option (option 1 below) that controls the format used to store the frequency domain data. When working with spectral data it is not possible to switch between formats; there are no functions to convert between formats. This implies that if you use option 1=n to produce a spectrum with fft, then you must also use option 1=n if you want to pass that same spectral data to invfft. Similarly, if you use option 1=n for fft, then you also need to use option 1=n with fftw to get the proper frequency vector corresponding to your spectrum. invfft and fftk work in the same way.

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

179

Syntax

Description

out = fft(Ex);

Returns the fast Fourier transform of Ex. Ex can be 1D, 2D or 3D.

out = fft(Ex,option1, option2);

option1 This option controls the format used to store the frequency domain data. The options are: 1 : the standard fft (zero frequency is at the first element of the matrix). 2 : zero frequency is the first element, but only data up to and including the Nyquist frequency is stored. This option is only useful for real valued, 1D time/spatial signals. 3 : the fft is shifted so zero frequency is the central element of the spectrum (precisely, this means the zero frequency point is at element floor(N/2 + 1), where N is the number of samples). option2 This option is either a 1, 2 or 3 element vector depending on whether Ex is 1D, 2D or 3D. For each dimension, specify a value of either 0, 1 or N to obtain the desired 0 padding options. 0: no zero padding 1: zero padding up to the next power of 2 longer than the length of Ex (default) N: zero pad up to length N if N > length(Ex), where length of Ex is the length in a specific dimension. If N length(t). If N length(x). If N length(Ex), where

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

183

length of Ex is the length in a specific dimension. If N = 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

© 2003 - 2013 Lumerical Solutions, Inc

Description

184

Reference Guide out = polyarea(V);

Returns the area of V. The sign of the area indicates if V is defined in a counter-clockwise (positive) or clockwise (negative) direction.

See Also Functions 157 , centroid 184 , polyintersect 184 , inpoly 185 , polygrow 185 , polyand 186 , polyor 186 , polydiff 186 , polyxor 187

7.4.56 centroid Returns the center of mass of a polygon. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

out = centroid(V);

Returns the center of mass of V, assuming uniform density. The output is a 2x1 matrix representing the x and y positions.

See Also Functions 157 , polyarea 183 , polyintersect 184 , inpoly 185 , polygrow 185 , polyand 186 , polyor 186 , polydiff 186 , polyxor 187

7.4.57 polyintersect Determines if two polygons intersect. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

out = polyintersect(V1,V2);

Returns 0 if the polygons do not overlap 0.5 if the polygons touch 1 if they overlap 2 if one polygon completely encloses the other

See Also Functions 157 , polyarea 183 , centroid 184 , inpoly 185 , polygrow 185 , polyand 186 , polyor 186 ,

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

185

polydiff 186 , polyxor 187

7.4.58 inpoly Determines if a point is inside our outside a polygon. The function is vectorized so it can be used to create a mesh of a polygon. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

out = inpoly(V,x,y);

Returns a matrix of the same dimension of x with 1 if the corresponding point is inside the polygon and 0 otherwise. The matrices x and y must have the same length, or one of them can be a singleton.

See Also Functions 157 , polyarea 183 , centroid 184 , polyintersect 184 , polygrow 185 , polyand 186 , polyor 186 , polydiff 186 , polyxor 187

7.4.59 polygrow Returns a polygon that has grown or shrunk by the specified amount. The polygon is grown in a direction normal to every line segment. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

out = plygrow(V,dx);

Returns a new polygon that has grown by dx. To shrink a polygon, use dx < 0.

See Also Functions 157 , polyarea 183 , centroid 184 , polyintersect 184 , inpoly 185 , polyand 186 , polyor 186 , polydiff 186 , polyxor 187

© 2003 - 2013 Lumerical Solutions, Inc

186

Reference Guide

7.4.60 polyand Combines two polygons into one using a boolean and operation. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

V3 = polyand(V1,V2);

Returns a new polygon, V3, that is the and of V1 and V2.

See Also Functions 157 , polyor 186 , polydiff 186 , polyxor 187 , polyarea 183 , centroid 184 , polyintersect 184 , inpoly 185 , polygrow 185

7.4.61 polyor Combines two polygons into one using a boolean or operation. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

V3 = polyor(V1,V2);

Returns a new polygon, V3, that is the or of V1 and V2.

See Also Functions 157 , polyand 186 , polydiff 186 , polyxor 187 , polyarea 183 , centroid 184 , polyintersect 184 , inpoly 185 , polygrow 185

7.4.62 polydiff Combines two polygons into one by taking the difference. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

V3 = polydiff(V1,V2);

Returns a new polygon, V3, that is V1-V2.

See Also Functions 157 , polyand 186 , polyor 186 , polyxor 187 , polyarea 183 , centroid 184 , polyintersect © 2003 - 2013 Lumerical Solutions, Inc

Scripting Language 184 ,

187

inpoly 185 , polygrow 185

7.4.63 polyxor Combines two polygons into one using a boolean xor operation. The polygon vertices are contained in a single matrix of dimension Nx2 (or 2xN) where N >= 3. The second dimension represents the x,y positions. For example, a valid polygon is V = [ 0,0; 1,0; 1,1; 0,1]; Syntax

Description

V3 = polyxor(V1,V2);

Returns a new polygon, V3, that is the xor of V1 and V2.

See Also Functions 157 , polyand 186 , polyor 186 , polydiff 186 , polyarea 183 , centroid 184 , polyintersect 184 , inpoly 185 , polygrow 185

7.4.64 lineintersect Returns the intersection points of lines in the x-y plane. Note that the intersection point does not have to lie on the line segments themselves that define the lines. To see if the line segments actually cross the command linecross should be used. Line segments are contained in a single matrix of dimension 2*Nx2, where there are N line segments. For example, the matrix L = [ 0,0; 1,1; 0,0, 0,1]; represents 2 lines segments, one from (0,0) to (1,1) and another from (0,0) to (0,1). Syntax

Description

out = lineintersect(L1,L2);

Returns the intersection of the lines represented by the segments in L1 and L2. L1 and L2 must have the same size (2*N,2 for N line segments). The result is a sequence of x,y points in the form Nx2 representing the intersections of the N lines. There are special cases when The lines are parallel. In this case, the position returned is (1.#INF,b). The value of 1.#INF can be tested for using the script commands finite. The value of b is 0 if the lines are not coincident and 1 if they are coincident. The points in a segment are degenerate, ie the same. In this case, the position returned is (1.#INF,b), where b is 0, 1, 2 if the both line segments are degenerate, the first is degenerate, or the second is degenerate respectively.

© 2003 - 2013 Lumerical Solutions, Inc

188

Reference Guide See Also Functions 157 , linecross 188 , finite 191

7.4.65 linecross Determines if line segments cross each other. Line segments are contained in a single matrix of dimension 2*Nx2, where there are N line segments. For example, the matrix L = [ 0,0; 1,1; 0,0, 0,1]; represents 2 lines segments, one from (0,0) to (1,1) and another from (0,0) to (0,1). Syntax

Description

out = linecross(L1,L2);

Returns a matrix of dimension N which determines if the N line segments in L1 and the N line segments in L2 cross. L1 and L2 must have the same size (2*Nx2 for N line segments). The result is a matrix of length N that is 0 if the segments do not cross, 1 if they cross and 0.5 if the endpoint of one line touches another. Line segments that are coincident and touch also return a value of 0.5

See Also Functions 157 , lineintersect 187 , finite 191

7.4.66 ceil The ceil command rounds the input to the nearest integer greater than or equal to itself. Syntax

Description

out = ceil(X);

Returns the nearest integer greater than or equal to X.

See Also Functions 157 , floor 188 , mod 189

7.4.67 floor The floor command rounds the input to the nearest integer less than or equal to itself. Syntax

Description

out = floor(X);

Returns the nearest integer less than or equal to X.

See Also Functions 157 , ceil 188 , mod 189

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

189

7.4.68 mod Modulus after division. Syntax

Description

out = mod(X,Y);

Returns X - n.*Y where n = floor(X./Y) if Y is not equal to 0. The input X must be a real array or a real scalar. Y must be a real scalar. The following are true by convention: mod(X,0) = X mod(X,X) = 0

See Also Functions 157 , floor 188 , ceil 188

7.4.69 sign Get the sign of a number. Syntax

Description

out = sign(data);

Real values sign = 0 for data=0 sign = 1 for data>0 sign =-1 for dataIMPORT menu. See the Reference Guide - Layout editor chapter 29 , Reference Guide - GDSII Import 60 and Userguide - GDSII Import and export for more information. This command is NOT available in INTERCONNECT. Syntax

Description

n = gdsimport("filename", "cellname", layer);

Imports the specified layer from the specified cell in the specified file into the current simulation environment. The objects created will have their material set to an object defined dielectric. In 3D, the 2D geometric data will be

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

287

extruded to default values in the Z dimension. The optional returned value, n, is the number of objects that were imported from the gds file. n = gdsimport("filename", "cellname", layer, "material");

Same as the above command, but the material of the imported object will be set to the value specified.

n = gdsimport("filename", "cellname", layer, "material", zmin, zmax);

This form of the command is only allowed in 3D layouts. The behavior is the same as the above command, but the structures will be extruded in the Z dimension to the specified z min and z max values

Parameter

Type

Description

filename

string

name of the GDSII file to import. It can contain a complete path to file, or path relative to the current working directory.

cellname

string

name of the cell to import from the GDSII file.

layer

number or the layer number from the GDSII file to import. If only string elements matching a certain data type are desired, this can be specified by using a string of the form: "6:2" where the desired layer is 6 and the desired data type is 2.

material

string

a valid name of a material in your current layout environment. Partial names of materials can be matched starting at the beginning of the string. For example, "Al (3" would match "Al (300nm)".

zmin

number

the minimum z value for extruding 2D GDSII data into 3D objects

zmax

number

the maximum z value for extruding 2D GDSII data into 3D objects

Example: This command imports "cell_1", on the first layer in the GDS_export.gds file, with a specified material, z min and z max assigned. For more examples, please visit Reference Guide - GDSII Import 60 , and Userguide - GDSII - Import and export for associated files. gdsimport("GDS_export.gds", "cell_1", 1, "Ag (Silver) - CRC", 0, 1e-6);

© 2003 - 2013 Lumerical Solutions, Inc

288

Reference Guide

See Also System level 109 , setnamed 232 , fileexists 117 , gdsopen 282

7.13 User defined GUIs Custom GUIs can be created with the following commands. Command

Description

message 288

Creates a message window that displays some text.

newwizard 289

Used to create a new user defined wizard.

newwizardpage 289

This creates a page for the wizard.

wizardwidget 289

Adds a new widget to the current wizard window.

runwizard 291

Runs the wizard and returns a value indicating which button was pressed.

wizardgetdata 291

Returns data entered into a specific widget.

killwizard 291

This closes the wizard window.

wizardoption 292

Sets some options for wizard widgets and labels.

fileopendialog 292

Calls the standard windows file open dialog.

filesavedialog 292

Calls the standard windows file save dialog.

Typically, a wizard will be created with the following steps 1. Open a new wizard with newwizard 289 2. Add a new wizard page with newwizardpage 289 3. Add widgets to the wizard page with wizardwidget 289 4. Call runwizard 291 to run the wizard 5. Use wizardgetdata 291 to obtain values entered into widgets by the user 6. Depending on the values returned by runwizard 291 , the wizard can be closed with killwizard 291 , or a new wizard page is started with newwizardpage 289 .

7.13.1 message Creates a message window that displays some text. The user must hit Enter, or click the OK button to continue. Syntax

Description

message("text");

Creates a window that displays text.

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

289

This function does not return any data. See Also User defined GUI 288 , newwizard 289

7.13.2 newwizard Used to create a new user defined wizard. Opens a new wizard window. Syntax newwizard( w, h, "title");

Description w and h (width and height) are specified in pixels. The minimum values for w and h are 200. title is the wizard window title.

See Also User defined GUI 288 , message 288

7.13.3 newwizardpage This creates a page for the wizard and should be done before adding any widgets. Syntax

Description

newwizardpage( "label1");

Creates a button with the label "label1". Typically, this will be "Done" or "OK".

newwizardpage( "label1", "label2");

Creates two buttons with labels "label1" and "label2". These will typically be "Next" and "Back" or "Done" and "Back".

See Also User defined GUI 288 , newwizardpage 289

7.13.4 wizardwidget Adds a new widget to the current wizard window. This command should only be done after creating a new wizard page with the command newwizard. Syntax

Description

wizardwidget( "type", "name");

type can be "number" for a numeric input field "string" for a alphanumeric field "checkbox" for a checkbox

© 2003 - 2013 Lumerical Solutions, Inc

290

Reference Guide "menu" for a pulldown menu field "label" to add a string label (wizardgetdata does not return information for labels) name is a string used to give the input field, checkbox, menu item or label a name. wizardwidget( "type", "label", defaultValue provides a default value for numeric inputs, defaultValue); checkboxes, menu items or strings. wizardwidget( "type", "label", If the "type" of widget is a "menu", then the menu choices "choices", defaultValue); must be provided. These choices should be separated by the character "|". For example, to create a pulldown widget with the name "simulation type" and 3 choices "TE","TM","3D", with the default choice "3D", the command is wizardwidget("menu","simulation type","TE|TM|3D",3); See Also User defined GUI 288 , newwizardpage 289

7.13.5 wizarddata This command will cause the wizard window to wait until the user selects OK or Cancel. It then returns value data from the matrix in a N+1 length matrix, where N is the number of widgets (excluding labels) in the current wizard page. This function is only available in MODE Solutions. Syntax

Description

out = wizarddata;

The values of out are out(1) = 0, 1 or -1. 0 means the user pressed Cancel, 1 means the user pressed the first button (typically "OK" or "Next") and -1 means the user pressed the second button (typically "Back") out(2:N+1) gives the numeric values that the user entered for each input field when out(1) is 1. Note that check boxes return 1 if checked and 0 if unchecked. Menu items return a number between 1 and M where M is the number of choices in the menu. If out(1) is 0 or -1, all the values out(2:N+1) are zero.

See Also User defined GUI 288 , newwizard 289

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

291

7.13.6 runwizard Runs the wizard and returns a value indicating which button was pressed. Syntax

Description

out = runwizard;

Returns either 0, +1 or -1. 0 means the user pressed Cancel, 1 means the user pressed the first button (created by calling newwizardpage) and -1 means the user pressed the second button (created by calling newwizardpage).

See Also User defined GUI 288 , newwizardpage 289

7.13.7 wizardgetdata Returns data entered into a specific widget. This function is only available in MODE Solutions. Syntax

Description

out = wizardgetdata(N);

Returns the value that the user entered into the Nth widget. Out will be a number or a string, depending on the type of widget.

See Also User defined GUI 288 , newwizardpage 289

7.13.8 killwizard This closes the wizard window. It should only be called after a wizard window has been created with the newwizard command. Syntax

Description

killwizard;

This closes the wizard window.

See Also User defined GUI 288 , newwizardpage 289

© 2003 - 2013 Lumerical Solutions, Inc

292

Reference Guide

7.13.9 wizardoption Sets some options for wizard widgets and labels. Syntax

Description

wizardoption ("optionname", setting);

The options are "fontsize" sets the font size to any value between 8 and 40 "fieldwidth" sets the width of each widget field to any value between 20 and the full width of the wizard window. "fieldheight" sets the height of each field to any value between 8 and the full height of the wizard window. "margin", sets size of the left margin to any value between 0 and full width of the wizard window.

See Also User defined GUI 288 , newwizard 289

7.13.10 fileopendialog Calls the standard windows file open dialog. Syntax

Description

out = fileopendialog;

Brings up the open file dialog box and returns the path that the user selects.

out = fileopendialog(".ext");

Brings up the open file dialog box, displaying only files with the extension .ext. Returns the path of the file that the user selects.

See Also User defined GUIs 288 , filesavedialog 292

7.13.11 filesavedialog Calls the standard windows file save dialog. Syntax

Description

out = filesavedialog;

Brings up the save file dialog box and returns the path that the user selects.

out = filesavedialog(".ext");

Brings up the save file dialog box, displaying only files with the extension .ext. Returns the path of the file that the user

© 2003 - 2013 Lumerical Solutions, Inc

Scripting Language

293

selects. See Also User defined GUIs 288 , fileopendialog 292

7.14 Creating your own script commands Running a script file from the script prompt You can run any script file simply by typing the name of the file (without the .lsf extension). For example, if you create the file create_array.lsf, you can run this file from the command prompt, or another script file, with the command create_array; The current working directory is always in the Lumerical script path, and is the most common location for your script files. You can add additional locations to the path with the addpath 119 script function. The following location (within the installation directory) is also always in the path, making it a convenient place to put script functions that may be needed my all users of the computer. It will be necessary to have admin access to save files in this location. C:\Program Files\Lumerical\FDTD\scripts (Windows) /usr/local/lumerical/scripts (Linux) Note: Saving script files with the same name as built in script functions It is generally not recommended to create script files that have the same name as the standard script functions. In such cases, where there is a conflict between a script file and standard script function, the script file will run. In other words, this allows you to override the behavior of a standard script function. This can be helpful, but it can also lead to confusing behavior when done unintentionally.

Calling one script file from another Once you start creating complex scripts, it may be convenient to split them up into a number of simpler scripts that call one another. If you have multiple scripts in the same directory then they can call each other just as you would use any other scripting command. Note: All script files use a common variable space. As a consequence, variables defined in the scripts are global, and the script files have access to all variables defined in the simulation project file. This can lead to problems when two script files use the same variable names. For example, script_1.lsf (defined below) will print the value 10 to the command line since script_2.lsf modified the variable i. script_1.lsf i=1;

© 2003 - 2013 Lumerical Solutions, Inc

294

Reference Guide script_2; ?i; script_2.lsf for(i=1:10) { # do something }

Formatting tips Multiple commands are allowed on a single line. Blank lines, space and tabs will be ignored. Therefore you can format your script files any way you choose. Each command must be terminated with a semicolon. On any line, all characters after a # symbol are ignored. Finally, you can not define a variable or assign values to a variable that has the same name as one of the script commands. For example, the following lines sum = matrix(1,2); angle = acos(pi/2); are not valid statements since 'sum' and 'angle' are script functions.

© 2003 - 2013 Lumerical Solutions, Inc

Index

Index ' 156 150 ! 154, 155 != 152 " 155 # 157 % 133 & 153 * 150 / 150 : 132 ? 157 [] 132 ^ 151 | 154 ~ 155 + 150 < 153 153 >= 152 abs 164 absolute 164 access 137 acos 163 addanalysisgroup 210 addbulkgen 220 addcircle 211 addcustom 211 adddevice 219 adddiffusion 219 adddipole 215 addeigenmode 214 addfdtd 214 © 2003 - 2013 Lumerical Solutions, Inc

addgaussian 216 addgridattribute 220 addgroup 209 addimage 211 addimportdope 219 addimportedsource 217 addimportgen 220 addindex 217 addition 150 addjob 266 addmaterial 276, 277 addmesh 215 addmode 215 addmodesource 215 addmovie 218 addobject 210 addpath 119 addplane 216 addpoly 212 addprofile 218 addpropagator 214 addpyramid 212 addrect 212 addring 213 addsphere 213 addstructuregroup 209 addsurface 214 addtfsf 216 addtime 217 addtogroup 230 addtriangle 213 adduserprop 231 almostequal 151 analysis group 70 analysis tools 81 and 153 angle 165 arccos 163 arcsin 162

295

296

Reference Guide

arctan 163 array 132, 137, 138 asap 123, 124 asapexport 123 asapimport 124 asapload 124 asin 162 assign 137 assignment 132 atan 163 atan2 163 break 120 c 138 CAD layout 29 cd 115 ceil 188 centroid 184 changing CAD layout 39 clear 136 clearanalysis 273 cleardcard 274 clearjobs 266 clearmodedata 254 clearsourcedata 254 clock 116 closeall 205 comment 157 comparison 151 conj 164 conjugate 164 copy 115, 230 copydcard 273 cos 162 cosine 162 cp 115 createbeam 218 cross 168 ctranspose 175 currentfilename 117

czt 183 data export 83 date 116 del 113, 114 delete 227 deleteall 226 detail 60 dir 114 division 150 dot 168 double quote 155 edit 31 eig 169 eigenvalue 169 eigenvector 169 else 197 endl 157 eps0 138 equal 132 equal to 151 equation interpreter 76 escape 120 eval 176 exit 116 exp 166 exponential 166 exportfigure 204 feval 176 fft 178 fftk 181 fftw 180 filebasename 117 filedirectory 118 fileexists 117 fileextension 118 fileopendialog 292 filesavedialog 292 find 174 findpeaks 174 © 2003 - 2013 Lumerical Solutions, Inc

Index findstring 177 finite 191 flip 170 flipelement 229 floor 188 for 196 format 121 framerate 260 gaussian 190 gds 286 gdsii 60, 286 geometry 59 get 235 getcommands 118 getdata 269 geteigensolver 256 getelectric 274 getfdtdindex 278 getglobalmonitor 237 getglobalsource 237 getindex 278 getmagnetic 274 getmaterial 277 getmodeindex 279 getnamed 236 getnamednumber 237 getnumber 236 getnumericalpermittivity 280 getpath 119 getsolver 238 getsweepdata 268 getview 259 graphics graphical rendering 60 greater than 153 greater than or equal to 152 groupscope 226 havedata 271 haveproperty 238 if 197 © 2003 - 2013 Lumerical Solutions, Inc

imag 164 image 202 imaginary 164 import 60, 286 import object 58 importbinary 246, 250 importbinary2 248 importnk 241 importnk2 243 importnkobfuscated 245 importsurface 238 importsurface2 240 inpoly 185 integrate 173 integrate2 173 interp 171 interpolate 171, 172 interptri 172 inverse 182 invfft 182 killwizard 291 layoutmode 209 legend 202 length 166 less than 153 less than or equal to 152 linecross 188 lineintersect 187 linspace 133 ln 165 load 113, 121 loaddata 121 location 59 log 165 log10 165 loop 196 ls 114 main 30 main title bar 29

297

298

Reference Guide

material 59 material database 42 matlab 83, 125 matlabget 127 matlabput 127 matlabsave 124 matrix 133, 138, 169 max 168 mesh 54 mesh refinement region meshgrid3dx 135 meshgrid3dy 135 meshgrid3dz 136 meshgrid4d 136 meshgridx 134 meshgridy 135 message 288 min 168 mod 189 modulus 189 monitor 70 mouse mode 33 move 116, 229 moving windows 39 mu0 138 multiplication 150 multiply 169 mv 116 natural 165 negative 150 newmode 112 newproject 112 newwizard 289 newwizardpage 289 normal 190 not 152, 154, 155 num2str 175 object tree 37 Optimization 101

65

or 154 orbit 259 order 54 output 157 Particle Swarm Optimization path 119 pause 120 permeability 138 permittivity 138 permute 170 phase 165 pi 138 pinch 167 plot 198 plotxy 199 polar 200 polar2 200 polarimage 201 polyand 186 polyarea 183 polydiff 186 polygrow 185 polyintersect 184 polyor 186 polyxor 187 power 151 priorities 54 product 168 PSO 101 pwd 115 quit 116 rand 190 randmatrix 133 random 190 randreset 191 readdata 122 real 164 redo 260 redraw 256

101

© 2003 - 2013 Lumerical Solutions, Inc

Index redrawmode 257 redrawoff 257 redrawon 257 replace 177 replacestring 178 reshape 170 rm 114 rotations 60 round 189 run 118 runanalysis 270 runjobs 266 running a simulation 80 runparallel 265 runsetup 235 runsweep 267 runwizard 291 save 113, 121, 122 savedata 121 savedcard 122 screen 157 script 118 scripting editor prompt command line seed 191 select 227 selectall 226, 227 selectfigure 204 selectpartial 228 set 231 seteigensolver 255 setglobalmonitor 232 setglobalsource 233 setmaterial 277 setnamed 232 setplot 204 setsourcesignal 252 setview 258 shiftselect 228 shiftselectpartial 229 © 2003 - 2013 Lumerical Solutions, Inc

38

sign 189 simulation 35 simulation region 65 sin 162 sine 162 single quote 156 size 59, 166 solar 191 speed of light 138 spline 172 sqrt 166 square root 166 str2num 176 string to number 176 strings 155, 156 structure 58 structures group 58 substring 176 subtraction 150 sum 167 switchtolayout 208 system 116 tan 162 tangent 162 time 116 time stamp 116 timestamp 116 toolbar 30 transparency 60 transpose 175 undo 260 unselectall 227 unwrap 165 updatemodes 253 updatesourcemode 251 variables with spaces 133 view 34 view ports perspective 36 visualize 203

299

300

Reference Guide

which 119 wizarddata 290 wizardgetdata 291 wizardoption 292 wizardwidget 289 workspace 136 write 123 z-transform 183

© 2003 - 2013 Lumerical Solutions, Inc

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF