Van der Waals heterostructures

This database contains the dielectric building blocks of 51 transition metal dichalcogenides and oxides, hexagonal boron nitride, and graphene at ten different doping levels. These results are used to calculate the dielectric function of van der Waals heterostructures that is build as combinations of these materials. In the following the reference for the original article:

Andersen, K., Latini, S., Thygesen, K. S.

Dielectric Genome of van der Waals Heterostructures.

Nano Letters (2015)

The data can be downloaded and used together with e.g. the Python script as shown below. The dielectric building blocks are obtained from the file:

The electronic band gap and band edge positions of the trantision metal dichalcogenides and oxides are available from the 2D materials database 2D materials, where both metallic and semiconducting materials have been studied.

The dielelectric building blocks have presently only been calculated for the 51 semiconducing materials found to be stable in the study above.

Dielectric building blocks

As explained above, the dielectric building blocks of the materials are obtained from the file chi-data.tar.gz. This contains a pickle file for each material called: <name>-chi.npz, where the name consists of the phase (‘H’ for 2H and ‘T’ for 1T) followed by the chemical formula, such that the file for 2H-MoS2 is called: H-MoS2-chi.npz. The files contain the data described in the table below:

The quantum electrostatic heterostructure (QEH) model

The dielectric function of van der waals heterostructures and associated properties can be calculated with the python module in the script,, that can be downloaded from here:, and is also available trough GPAW.

As an example the macroscopic dielectric function of multilayer MoS2 can be obtained. First we extract the data for MoS2 from the database:

$ tar xf chi-data.tar.gz
$ cp chi-data/H-MoS2-chi.npz .

Then the Heterostructure module is used to calculate the dielectric function for one to 20 layers of MoS2.

from qeh import Heterostructure
import matplotlib.pyplot as plt

for n in [1, 2, 3, 4, 5, 10, 20]:
    d = [6.15 for i in range(n - 1)]
    HS = Heterostructure(structure=['%dH-MoS2' % n],  # set up structure
                         d=d,                         # layer distance array
                         wmax=0,                      # only include w=0
                         qmax=1,                      # q grid up to 1 Ang^{-1}
                         d0=6.15)                     # width of single layer
    q, w, epsM = HS.get_macroscopic_dielectric_function()
    plt.plot(q, epsM.real, label=' N = %s' % n)

plt.xlim(0, 1)
plt.xlabel('$q_\parallel (\mathrm{\AA^{-1}}$)', fontsize=20)
plt.ylabel('$\epsilon_M(q, \omega=0)$', fontsize=20)
plt.title('Static dielectric function', fontsize=20)
plt.legend(ncol=2, loc='best')

Which should return this result:


The structure is set up with the structure parameter, that should be a list of speciems within the structure. In this case structure=['20MoS2'] gives 20 layers of MoS2. As an example a more complicated heterostructure of graphene, hBN and MoS2 can be set up with: structure=['3H-MoS2', '2BN','graphene', '2BN', '3H-MoS2'], which will give one layer of graphene sandwiched between two layers of hBN and three layers of MoS2 on each side. The d parameter should be a list of the distance bewteen all neigboring layers, with a length equal to N-1, where N is the number of layers in the structure.

As a further example, the QEH model can be combined with the Mott-Wannier (MW) equation for excitons in 2D semiconductors. In particular the case of MoS2 supported on a hBN substrate of varying thickness is considered. First the MoS2 and hBN building blocks should be copied to the working directory, namely:

$ tar xf chi-data.tar.gz
$ cp chi-data/H-MoS2-chi.npz .
$ cp chi-data/BN-chi.npz .

Then the binding energy of the lowest excitonic state in MoS2 is calculated in the following script as a function of hBN layers is obtained.

import numpy as np
import matplotlib.pyplot as plt

from qeh import Heterostructure

d_BN = 3.22  # hBN-hBN distance
d_MoS2_BN = 4.69  # MoS2-hBN distance
d_MoS2 = 6.15

n_hBN = 10

Eb_list = []

for n in range(0, n_hBN + 1, 1):
    if n == 0:
        d = []
        d = [d_MoS2_BN] + [d_BN for i in range(n - 1)]

    hl_array = np.zeros(2 * (n + 1))  # the factor 2 accounts for
    el_array = np.zeros(2 * (n + 1))  # the dipole component
    hl_array[0] = 1  # the hole is placed on MoS2
    el_array[0] = 1  # the electron is  placed on MoS2

    HS = Heterostructure(structure=['1H-MoS2', '%dBN' % n],  # set up structure
                         d=d,  # layer distance array

    ee, ev = HS.get_exciton_binding_energies(eff_mass=0.27,  # exciton eff_mass

    # ee is the list of eigenvalues, sorted from the lowest to the highest

n = np.arange(0, n_hBN + 1, 1)
plt.plot(n, Eb_list, '-s')
plt.title('Exciton Binding Energy', fontsize=20)
plt.xlabel(r'no. hBN', fontsize=20)
plt.ylabel(r'$E_{\rm b}$ (eV)', fontsize=20)

The results are shown in the following figure:


The presence of hBN increases screens the electron-hole interaction and therefore reduces the exciton binding energy. More information on the effect of environmental screening on excitons in van der Waals heterostructures can be found in the following paper:

Latini, S., Olsen, T. and Thygesen, K. S.

Excitons in van der Waals Heterostructures: The important role of dielectric screening

Phys. Rev. B (2015)