# structure{ }¶

Calling sequence

structure{ }

Properties
• using: $$\mathrm{\textcolor{WildStrawberry}{required\;within\;the\;scope}}$$

• items: $$\mathrm{exactly\;1}$$

Functionality

definition of device structure (including doping{})

Example
structure{
region{...}
}


Nested keywords

The pattern above can be produced by

structure{
region{
repeat_profiles = 'other doping'
binary{ name = "InAs" }
array_x{  shift=20  num=5 }
array_y{  shift=20  num=5 }
array2_x{ shift=150 num=3 }
array2_y{ shift=150 num=3 }
circle{
center{ x = 100 y = 100 }
}
doping{
gaussian2D{
name = B
conc = 1e18
x = 100
y = 100
sigma_x = 7
sigma_y = 7
}
}
}
}


Two identical layers containing 16 quantum dots each, can be easily generated by specifying only one quantum dot geometry.

region{
cone{                       # Here, the quantum dot has the shape of a cone.
base_x     = [1.0,7.0]      # extension of base plane in x direction, i.e. from 1.0 to 7.0 nm
base_y     = [1.0,7.0]      # extension of base plane in y direction, i.e. from 1.0 to 7.0 nm
base_z     = [6.0,6.0]      # base plane at z = 6.0 nm
top        = [4.0,4.0,10.0] # top coordinate of the cone (x,y,z) = (4.0,4.0,10.0) in units of [nm]
diminution = 0.25           # cone: diminution = 0.0, cylinder: diminution = 1.0
}
Note: Exactly one of the elements base_x, base_y, and base_z has to be set by two equal numbers to define the base plane.

ternary_linear{
name    = "Al(x)Ga(1-x)As"  # AlxGa1-xAs
alloy_x = [0.25, 1.0]       # vary alloy composition from x = 0.25 (Al0.25Ga0.75As) to x = 1.0 (AlAs)
z = [10, 6]           # vary alloy content from z = 10 nm to z = 6 nm
}

array_x{
shift = 11.0
max = 3
}
array_y{
shift = 11.0
max = 3
}
array_z{
shift = 20.0
max = 1
}
repeat_profiles = "alloy"
}


Warning

Special care has to be taken when using remove{} or add = no for doping{}/fixed charge/generation{} in some repeated regions. Namely, repeated regions are created by sequentially creating multiple instances of a given region at the different positions defined by the array_* and array2_* statements. But the order in which these instances are created depends on undocumented implementation details and thus may change from release to release. For additive dopants/fixed charges/generation, or for repeated regions which do not self-overlap, the final structure and profiles do not depend on this undocumented creation order and thus no problems will occur. However, for repeated regions which self-overlap (e.g. due to small region shifts), using remove{} or add = no results in the final structure and profiles being dependent on that creation order and often being different from the user’s intentions. Therefore, in case of doubt, please visually inspect your structure and profiles to avoid such issues.