2D materials

This database contains calculated structural and electronic properties of a range of 2D materials. The database contains the results presented in the following paper:

Computational 2D Materials Database: Electronic Structure of Transition-Metal Dichalcogenides and Oxides

Rasmussen, F., Thygesen, K. S.

  1. Phys. Chem. C, 2015, 119 (23), pp 13169–13183, April 30, 2015

The data can be downloaded or browsed online:

Electronic structure of 2D materials

The structures were first relaxed using the PBE xc-functional and a 18x18x1 k-point sampling until all forces on the atoms where below 0.01 eV/Å. The rows with xc=’PBE’ contains data from these calculations.

For materials that were found to be semiconducting in the PBE calculations we furthermore performed calculations using the LDA and GLLB-SC xc functionals and the lattice constants and atom positions found from the PBE calculation. For these calculations we used a 30x30x1 k-point sampling. For the GLLB-SC calculations we calculated the derivative discontinuity and have added this contribution to the electronic band gaps. Data for these calculations are found in rows with xc=’GLLBSC’ and xc=’LDA’, respectively.

Furthermore, we calculated the G0W0 quasiparticle energies using the wavefunctions and eigenvalues from the LDA calculations and a plane-wave cut-off energy of at least 150 eV. The quasiparticle energies where further extrapolated to infinite cut-off energy via the methods described in the paper. The LDA rows thus further have key-value pairs with the results from the G0W0 calculations.

Key-value pairs

key description unit
COD_id COD id of parent bulk structure  
D_cbm Deformation potential at CBM (PBE) eV
D_cbm_nosoc Deformation potential at CBM w/o SOC eV
D_vbm Deformation potential at VBM (PBE) eV
D_vbm_nosoc Deformation potential at VBM w/o SOC eV
ICSD_id ICSD id of parent bulk structure  
alphax Static polarizability (x-component) Ang
alphay Static polarizability (y-component) Ang
alphaz Static polarizability (z-component) Ang
bse_binding Exciton binding energy - BSE eV
c_11 Elastic tensor (xx-component) N/m
c_12 Elastic tensor (xy-component) N/m
c_22 Elastic tensor (yy-component) N/m
cbm Conduction band minimum vs vacuum (PBE) eV
cbm_gw Conduction band minimum vs vacuum (GW) eV
cbm_hse Conduction band minimum vs vacuum (HSE) eV
cbm_nosoc Conduction band minimum vs vacuum (PBE) eV
class Class of material  
dE_NM Energy relative to the NM state meV/atom
dir_gap Direct band gap (PBE) eV
dir_gap_gllbsc Direct band gap (GLLBSC) eV
dir_gap_gw Direct band gap (GW) eV
dir_gap_hse Direct band gap (HSE) eV
dir_gap_nosoc Direct band gap (PBE) eV
dosef_nosoc Density of states at Fermi level \(\text{eV}^{-1}\)
e_distortion Distortion energy per atom eV
e_magnetic Energy change due to magnetic solution eV
ehull Energy above convex hull eV/atom
emass1 Electron 1 mass 1 \(m_e\)
emass1_nosoc Electron mass 1 (no SOC) \(m_e\)
emass2 Electron 1 mass 2 \(m_e\)
emass2_nosoc Electron mass 1 (no SOC) \(m_e\)
esocsplit Electron spinorbit splitting meV
evac Vacuum level (no dipole corr) (PBE) eV
evacdiff Vacuum level difference (PBE) eV
evacmean Mean vacuum level (PBE) eV
excitonmass1 Exciton mass 1 \(m_e\)
excitonmass2 Exciton mass 2 \(m_e\)
gap Band gap (PBE) eV
gap_gllbsc Fundamental gap (GLLBSC) eV
gap_gw Band gap (GW) eV
gap_hse Band gap (HSE) eV
gap_nosoc Band gap (PBE) eV
has_invsymm Inversion symmetry  
hform Heat of formation eV/atom
hmass1 Hole 1 mass 1 \(m_e\)
hmass1_nosoc Hole mass 1 (no SOC) \(m_e\)
hmass2 Hole 1 mass 2 \(m_e\)
hmass2_nosoc Hole mass 2 (no SOC) \(m_e\)
hsocsplit Hole spinorbit splitting meV
is_dir_gap Direct gap (PBE)  
is_dyn_stable Dynamically stable  
is_magnetic Magnetic  
is_metallic Metallic  
maganis_zx Magnetic anisotropy (xz-component) meV/formula unit
maganis_zy Magnetic anisotropy (yz-component) meV/formula unit
magstate Magnetic state (NM, FM or AFM)  
minhessianeig Minimum eigenvalue of Hessian \(\text{eV/Ang}^2\)
plasmafrequency_x Plasma frequency (x-component) \(\text{eV} \text{Ang}^{0.5}\)
plasmafrequency_y Plasma frequency (y-component) \(\text{eV} \text{Ang}^{0.5}\)
prototype Structure prototype  
q2d_macro_df_slope Slope of macroscopic 2D static dielectric function at q=0 ?
r_distortion Distortion distance change (max) Ang
spacegroup Space group  
speed_of_sound_x Speed of sound (x) m/s
speed_of_sound_y Speed of sound (y) m/s
stability Heat of formation and dynamic stability is tested  
vbm Valence band maximum vs vacuum (PBE) eV
vbm_gw Valence band maximum vs vacuum (GW) eV
vbm_hse Valence band maximum vs vacuum (HSE) eV
vbm_nosoc Valence band maximum vs vacuum (PBE) eV
wallpapergroup Wallpaper group  
work_function Work function eV

Example

The following python script shows how to plot the positions of the VBM and CBM.

# creates: band-alignment.png
from math import floor
import numpy as np
import matplotlib.pyplot as plt
import ase.db

# Connect to database
db = ase.db.connect('c2db.db')

rows = db.select('gap>0', prototype='MoS2', sort='gap')

labels = []
vbms = []
cbms = []
for row in rows:
    M, X = row.symbols[:2]
    label = M + X + '$_2$'
    labels.append(label)
    vbms.append(row.vbm)
    cbms.append(row.cbm)
    print(label)

x = np.arange(len(vbms)) + 0.5
emin = floor(min(vbms)) - 1.0

# With and height in pixels
ppi = 100
figw = 800
figh = 400

fig = plt.figure(figsize=(figw / ppi, figh / ppi), dpi=ppi)
ax = fig.add_subplot(1, 1, 1)
ax.bar(x, np.array(vbms) - emin, bottom=emin)
ax.bar(x, -np.array(cbms), bottom=cbms)
ax.set_xlim(0, len(labels))
ax.set_ylim(emin, 0)
ax.set_xticks(x)
ax.set_xticklabels(labels, rotation=90, fontsize=10)

plt.title("2H-TMD's: Positions of VBM and CBM (PBE+SOC)", fontsize=12)
plt.ylabel('Energy relative to vacuum [eV]', fontsize=10)
plt.tight_layout()
plt.savefig('band-alignment.png')

This produces the figure

../_images/band-alignment.png

Tools for creating the “Computational 2D materials” database

Requirements

Installation

Clone the code from https://gitlab.com/camd/cmr and tell Python where to find it:

$ cd ~
$ git clone git@gitlab.com:camd/cmr
$ export PYTHONPATH=~/cmr:$PYTHONPATH

Workflow

The workflow for each material is described in the submit.py file:

"""Workflow for C2DB project."""
from pathlib import Path
from myqueue.task import task


def create_tasks():
    folder = Path.cwd().name
    if folder not in ['nm', 'fm', 'afm']:
        return [task('c2db.relax@8:1d')]

    if Path('duplicate').is_file() or Path('stop').is_file():
        return []

    tasks = [task('c2db.phonons@8:14h', deps='../c2db.relax'),
             task('c2db.gs@8:1h', deps='../c2db.relax'),
             task('c2db.vacuumlevels@8:1h', deps='c2db.gs'),
             task('c2db.bandstructure@8:3h', deps='c2db.gs'),
             task('c2db.polarizability@24:10h', deps='c2db.gs'),
             task('c2db.plasmafrequency@8:4h', deps='c2db.gs'),
             task('c2db.hse@24:20h', deps='c2db.gs'),
             task('c2db.ehmasses@8:3h', deps='c2db.gs'),
             task('c2db.em@8:10h', deps='c2db.ehmasses'),
             task('c2db.strains@8:6h', deps='c2db.ehmasses'),
             task('c2db.pdos@8:1h', deps='c2db.ehmasses'),
             task('c2db.emexciton@8:6h', deps='c2db.pdos'),
             task('c2db.fermi_surface@1:10m', deps='c2db.ehmasses')]

    if folder == 'nm':
        tasks.append(task('c2db.gllbsc@8:3h', deps='c2db.ehmasses'))
    else:
        tasks.append(task('c2db.anisotropy@1:1h', deps='c2db.ehmasses'))

    return tasks

As an example, let’s do MoS\(_2\) in the CdI2 prototype (T-phase). Create a main folder and a subfolder:

$ mkdir TMD
$ cd TMD
$ mkdir MoS2-CdI2

Create a start.traj file containing something close to the groundstate structure:

$ python3
>>> from ase.build import mx2
>>> a = mx2('MoS2', '1T', a=3.20, thickness=3.17, vacuum=7.5)
>>> a.write('MoS2-CdI2/start.traj')

Run the relax step:

$ mq submit c2db.relax -R 8x12h MoS2-CdI2/

or:

$ mq workflow ~/cmr/c2db/submit.py MoS2-CdI2/*m/

Note

The \(mq\) tool is described here

Once the relax task has finished, one or more folders will appear (nm/, fm/, afm/) and you can run the whole workflow:

$ mq workflow ~/cmr/c2db/submit.py MoS2-CdI2/*m/

When everything is ready you can collect the results in a database file and inspect the results in a web-browser:

$ python3 -m c2db.collect MoS2-CdI2/*m/ > collect.out
$ ase db c2db.db -M ~/cmr/c2db/custom -w