Introduction to Material Database¶
As nextnano++ is a general tool for simulations of semiconductor devices, we have structured our database to handle numerous materials and alloys. The database is prepared to hold any materials which can be described within one of two models currently implemented in the nextnano++ code. These are models for crystals with zincblende and wurtzite symmetries. The database is not limited, which means that you can modify it and extend it adding new materials as much as you need for your purposes. Below, you can find a pedestrian guide to the material database of nextnano++.
Parameters of Elements & Binary Compounds¶
The first step to learn how to modify the material parameters is to open nextnano++\Syntax\database_nnp.in in your installation folder to see how it is structured. You can open it with any text editor.
You will quickly notice that every single material is contained in a separate top-level group binary_zb{}
, if it follows model for zincblende crystals, or binary_wt{}
, if it is described within models for wurtzite symmetry.
These are the most important groups in the database, and most likely, these you want to edit as they contain all material parameters for pure components (mostly binaries) your materials which can further form alloys.
Every such group has similar structure, namely they begin with two attributes with some value assigned name
and valence
, and other groups containing multiple parameters describing given material.
See a few examples below.
668binary_zb{ 669 name = Si 670 valence = IV_IV 671 672 # Some other groups 673}1596binary_zb { 1597 name = GaAs 1598 valence = III_V 1599 1600 # Some other groups 1601}7226binary_wz { 7227 name = GaN 7228 valence = III_V 7229 7230 # Some other groups 7231}
The name
attribute defines the name of defined material, which you use to refer to the set of parameters.
The valence
attribute specifies families of elements forming the binaries.
- Task
Find these groups in your database. Depending on the release, they may be present at different lines.
Next, groups containing all the parameters are listed in some order, e.g., lattice_consts{}
, dielectric_consts{}
, and so on.
8855binary_wz { 8856 name = ZnO 8857 valence = II_VI 8858 8859 lattice_consts{ 8860 # Some parameters 8861 } 8862 8863 dielectric_consts{ 8864 # Some parameters 8865 } 8866 8867 # Some other groups 8868}
In principle, you can modify these parameters and run nextnano++ with them. However, other approach might be better for you. If you need to change the database only a bit or only for some of your simulations then better do not change it here.
Attention
Every single parameter for the model must be defined in these groups.
Bowing Parameters and Ternary Alloys¶
The next are definitions of ternary alloys. They begin separately for each kind of alloys, following definitions of respective binaries and elements. You can find the definitions of ternary alloys beginning with big comments. A few examples below for materials with zincblende symmetry.
1419########################################################################################## 1420# T E R N A R Y A L L O Y S -- IV - IV V A L E N C E 1421#########################################################################################3181########################################################################################## 3182# T E R N A R Y A L L O Y S -- III - V V A L E N C E 3183##########################################################################################6341########################################################################################## 6342# T E R N A R Y A L L O Y S -- II - VI V A L E N C E 6343##########################################################################################
These comments are directly followed by lists of available alloys definitions, which you can use in your input files. Then, similarly o the definitions of the binary compounds, bowing parameters of specific ternaries and definitions of the alloys are coded within three top-level groups.
Constant Bowing Parameters¶
The simplest definition, for ternaries with bowing parameters not-dependent on the mole fraction, is done with a group ternary_zb{}
like in the case of SiGe.
1433ternary_zb { 1434 name = "Si(1-x)Ge(x)" 1435 valence = IV_IV 1436 binary_x = Ge 1437 binary_1_x = Si 1438 1439 conduction_bands{ 1440 Delta{ 1441 bandgap = 0.206 1442 } 1443 } 1444 1445 kp_6_bands{ 1446 L = 0 M = 0 N = 0 1447 } 1448 1449} : { 1450 name = "Ge(x)Si(1-x)" 1451 valence = IV_IV 1452 binary_x = Ge 1453 binary_1_x = Si 1454} : { 1455 name = "Si(x)Ge(1-x)" 1456 valence = IV_IV 1457 binary_x = Si 1458 binary_1_x = Ge 1459} : { 1460 name = "Ge(1-x)Si(x)" 1461 valence = IV_IV 1462 binary_x = Si 1463 binary_1_x = Ge 1464}
The main body of ternary_zb{}
(lines 1434-1448) is structured very similarly to what can be found in binary_zb{}
.
First, the reference name of the alloy is specified by setting some string to the attribute name
.
Then the attribute valence
is set to element families the same as for binaries or elements.
Besides these attributes, another two are introduced: binary_x
and binary_1_x
.
Names of already defined binary materials must be assigned to these attributes.
Having
1434 name = "Si(1-x)Ge(x)" 1435 valence = IV_IV 1436 binary_x = Ge 1437 binary_1_x = Si
means that material parameters of the material with a name “Si(1-x)Ge(x)”, categorized as IV-IV alloy, are computed based on material parameters of materials named “Ge” and “Si” in the database, where a mole fraction \(x\) specified in the input file corresponds to the mole fraction of “Ge”, while a value \((1-x)\) is a mole fraction of “Si” in this alloy.
Definition of bowing parameters for the alloy is following these four attributed.
Syntax related to the parameters is exactly the same as in previously described group binary_zb{}
with a difference, such that if some bowing parameters are not defined, then they are set to zero by default.
Attention
Not defined bowing parameters are set to zero by default.
The three extra sections following the top part of the group ternary_zb{}
are clones of the group with the top-level attributes redefined.
This allows to create equivalent definitions of the same alloy, with different names.
1449} : { 1450 name = "Ge(x)Si(1-x)" 1451 valence = IV_IV 1452 binary_x = Ge 1453 binary_1_x = Si 1454} : { 1455 name = "Si(x)Ge(1-x)" 1456 valence = IV_IV 1457 binary_x = Si 1458 binary_1_x = Ge 1459} : { 1460 name = "Ge(1-x)Si(x)" 1461 valence = IV_IV 1462 binary_x = Si 1463 binary_1_x = Ge 1464}
As a result multiple equivalent definitions of the same alloy are available allowing you to pick your favorite convention to express the alloy. Similar approach applies to materials with wurtzite sammetry, the difference are parameters and name of groups containing “_wz” instead of “_zb”.
Fraction-Dependent Bowing Parameters¶
Two other groups, bowing_zb{}
and ternary2_zb{}
are needed to define an alloy with bowing parameter dependent on the mole fraction.
The definition of such ternary alloy begins with defining the bowing parameters for mole fractions zero and one, which will further be linearly interpolated for each intermediate composition.
An example of such alloy is AlGaSb, for which two groups of bowing parameters, bowing_zb{}
, are specified in the database.
3555bowing_zb { 3556 name = "AlGaSb_Bowing_Al" 3557 valence = III_V 3558 3559 # Some parameters 3560}3579bowing_zb { 3580 name = "AlGaSb_Bowing_Ga" 3581 valence = III_V 3582 3583 # Some parameters 3584}
These groups do not contain any definition of what are the constituent materials and how they should be interpreted. They only contain reference name, family assigned and sets of bowing parameters.
The groups ternary2_zb{}
are used just after to define such dependencies, e.g.,
3602ternary2_zb { 3603 name = "Al(x)Ga(1-x)Sb" 3604 valence = III_V 3605 binary_x = AlSb 3606 binary_1_x = GaSb 3607 bowing_x = AlGaSb_Bowing_Al 3608 bowing_1_x = AlGaSb_Bowing_Ga 3609}
defines a ternary alloy named “Al(x)Ga(1-x)Sb”, classified as III-V material, constructed based on materials “AlSb” and “GaSb”, with the bowing parameters linearly interpolated from these listed in “AlGaSb_Bowing_Al” to these listed in “AlGaSb_Bowing_Ga” when mole fraction \(x\) goes from 1 to 0.
Ternaries, Quaternaries, & Quinternaries¶
Other types of alloys are defined similarly to ternaries, the same rules and syntax applies. They require proper definition of binaries and ternaries beforehand.
Last update: nn/nn/nnnn