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 qeh package as shown below. The dielectric building blocks are obtained from the files:

  • Building blocks for the transition metal dichalcogenides (do not use the doped graphene building block in this file as it is poorly converged for low frequencies): chi-data.tar.gz

  • Optimised building blocks for doped graphene at various doping levels based on an analytical approximation for the bandstructure at small energies (should be very accurate): graphene-data.tar.gz

  • (Building blocks used in the qeh package on PyPI. Do not use these unless you know what you are doing: chi-data-v2.tar.gz)

The electronic band gap and band edge positions of the transition metal dichalcogenides and oxides are available from the 2D materials database Computational 2D Materials Database (C2DB), 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 files chi-data.tar.gz and graphene-data.tar.gz. These files contain a numpy zip 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:




Grid for parallel momentum transfers


frequency grid


Monopole density response function, array of dimension (q x frequencies)


Dipole density response function, array of dimension (q x frequencies)


Real space grid perpendicular to the layer


Monopole induced density, array of dimension (q x z)


Dipole induced density, array of dimension (q x z)

The quantum electrostatic heterostructure (QEH) model

The dielectric function of van der waals heterostructures and associated properties can be calculated with the Python qeh package available on PyPI.

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.

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(r'$q_\parallel (\mathrm{\AA^{-1}}$)', fontsize=20)
plt.ylabel(r'$\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.

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)