2.3.1. Introduction to Material Database

As the nextnano++ software 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 don’t 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