Functional Perovskites

We investigate the band gaps and optical spectra of functional perovskites composed of layers of the two cubic perovskite semiconductors BaSnO3-BaTaO2N and LaAlO3-LaTiO2N.

Ivano E. Castelli, Mohnish Pandey, Kristian S. Thygesen, and Karsten W. Jacobsen

Bandgap Engineering of Functional Perovskites Through Quantum Confinement and Tunneling

Phys. Rev. B 91, 165309.

Key-value pairs

key

description

unit

comb_A

Cubic perovskite labeled as A-combination

comb_B

Cubic perovskite labeled as B-combination

gllbsc_dir_gap

Direct bandgap calculated with GLLB-SC.

eV

gllbsc_disc

Derivative discontinuity calculated with GLLB-SC.

eV

gllbsc_gamma

Bandgap at \(\Gamma\) calculated with GLLB-SC.

eV

gllbsc_gamma_gap

gllbsc_gamma_gap

gllbsc_ind_gap

Indirect bandgap calculated with GLLB-SC.

eV

project

project

sequence

Sequence of A and B layers

Band gaps

Here, we plot the band gaps at \(\Gamma\) when n A-layers is stuck with n B-layers (with n between 1 and 6). The changes in the gaps can be understood in terms of quantum confinement and tunneling. The cubic perovskites selected as building blocks are BaSnO3 (A) with BaTaO2N (B) or LaAlO3 (A) with LaTiO2N (B).

# creates: gaps.svg
import numpy as np
import matplotlib.pylab as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.cm as cm
import ase.db

con = ase.db.connect('funct_perovskites.db')

comb_A = 'BaSnO3'
comb_B = 'BaTaO2N'

gaps = []

for nA in range(1, 7):
    for nB in range(1, 7):
        name = nA * 'A' + nB * 'B'
        row = con.get(comb_A=comb_A, comb_B=comb_B, sequence=name)
        gaps.append(row.gllbsc_gamma_gap)

colors = []
for gap in gaps:
    c = cm.jet(int(gap / max(gaps) * 255))
    colors.append([c[0], c[1], c[2]])

x, y = np.meshgrid(range(1, 7), range(1, 7))
x = x.flat
y = y.flat
z = np.zeros_like(x)
dx = dy = 0.5 * np.ones_like(x)
dz = gaps
fig = plt.figure()
ax = Axes3D(fig, auto_add_to_figure=False)
fig.add_axes(ax)
plt.xlabel('nB, B = ' + comb_B)
plt.ylabel('nA, A = ' + comb_A)
ax.set_zlabel('Bandgap [eV]')
ax.bar3d(x, y, z, dx, dy, dz, color=colors)
plt.savefig('gaps.svg')
../_images/gaps1.svg