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.
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 |
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 |
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')