Organometal Halide Perovskites

We have performed electronic structure calculations of 240 perovskites composed of Cs, CH3NH3, and HC(NH2)2 as A-cation, Sn and Pb as B-ion, and a combination of Cl, Br, and I as anions.

Ivano E. Castelli, Juan María García-Lastra, Kristian S. Thygesen, and Karsten W. Jacobsen

Bandgap Calculations and Trends of Organometal Halide Perovskites

APL Materials, July 21, 2014

Key-value pairs

key

description

unit

gllbsc_dir_gap

Direct GLLB-SC+SOC bandgap

eV

gllbsc_ind_gap

Indirect GLLB-SC+SOC bandgap

eV

gllbsc_disc

GLLB-SC Derivative discontinuity

eV

name

Name given to the crystal structure

symmetry

Symmetry of the crystal

space_group

Space group of the crystal

Example

# creates: example.svg
"""Plot the bandgaps as a function of the electronegativity
in the Mulliken's scale for a given crystal symmetry (cubic,
tetragonal, or orthorhombics)"""

import matplotlib.pyplot as plt
import ase.db
from ase.data import chemical_symbols


# Electronegativities:
xcl = 8.30
xbr = 7.59
xi = 6.76

# Connect to database:
c = ase.db.connect('organometal.db')

gaps = {'Cs': [], 'MA': [], 'FA': []}
electr = {'Cs': [], 'MA': [], 'FA': []}

# Select cubic symmetry containing Sn:
for row in c.select('Sn>=1', symmetry='cubic'):
    x = 1.0
    for Z in row.numbers:
        symbol = chemical_symbols[Z]
        if symbol == 'I':
            x *= xi
        elif symbol == 'Br':
            x *= xbr
        elif symbol == 'Cl':
            x *= xcl
    x = x**(1 / 3.0)

    name = row.name[:2]
    electr[name].append(x)
    gaps[name].append(row.gllbsc_ind_gap)

for name, symbol in zip(['Cs', 'MA', 'FA'], 'os*'):
    plt.plot(electr[name], gaps[name], symbol, label=name)

plt.ylabel('Bandgap [eV]')

X = ['I3', 'Br3', 'Cl3', 'I2Br', 'IBr2',
     'I2Cl', 'ICl2', 'IBrCl', 'Br2Cl', 'BrCl2']
chi = [xi**3, xbr**3, xcl**3, xi**2 * xbr, xi * xbr**2,
       xi**2 * xcl, xi * xcl**2, xi * xbr * xcl, xbr**2 * xcl, xbr * xcl**2]
chi = [x3**(1 / 3.0) for x3 in chi]

plt.xticks(chi, X, rotation=60)
plt.legend()
plt.savefig('example.svg')
../_images/example.svg