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
- region{ }
- output_region_index{ }
- output_material_index{ }
- output_user_index{ }
- output_contact_index{ }
- output_alloy_composition{ }
- output_impurities{ }
- output_generation{ }
- output_injection{ }
- structure{ region{} } - generation & electron injection
- structure{ region{ integrate{ } } }
- structure{ region{} } - assigning materials
- structure{ region{} } - shape objects
- Additional Examples and Comments
-
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 } radius = 30 } doping{ gaussian2D{ name = B conc = 1e18 x = 100 y = 100 sigma_x = 7 sigma_y = 7 add = yes } } } }
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{}
oradd = no
fordoping{}
/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 thearray_*
andarray2_*
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), usingremove{}
oradd = 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.