"En el presente notebook se presenta un análisis de la dispersión de electrones en una red de perovskita $ABO_3$. Para esto, se implementan 3 modelos: Empty Lattice, Kronig-Penney y Tight Binding. La celda primitiva es una celda cúbica con átomos A en las esquinas, átomos O en las caras y un átomo B en el centro, como se muestra en la siguiente figura:\n",
"En el presente notebook se presenta un análisis de la dispersión de electrones en una red de perovskita $ABO_3$. Para esto, se implementan 3 modelos: Empty Lattice, Kronig-Penney y Tight Binding. La celda primitiva es una celda cúbica con átomos A en las esquinas, átomos O en las caras y un átomo B en el centro, como se muestra en la siguiente figura:\n",
"Se usarán estos vectores para calcular la dispersión de electrones en la red con los distintos modelos. Además, se graficará siempre sobre el camino $\\Gamma - X - M - \\Gamma - R$ en el espacio recíproco. Procedemos a realizar estas definiciones."
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [],
"source": [
"# Importamos librerías útiles\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams['figure.figsize'] = (8,6)\n",
"plt.rcParams['axes.labelsize'] = 14\n",
"plt.rcParams['xtick.labelsize'] = 10\n",
"plt.rcParams['ytick.labelsize'] = 10\n",
"plt.rcParams['font.size'] = 15\n",
"\n",
"# Definimos los vectores de la red cúbica simple\n",
"a = 5e-10 # parámetro de red en metros (Å)\n",
"a_i = a*np.array([[1,0,0],[0,1,0],[0,0,1]]) # vectores de la red\n",
"b_i = 2*np.pi/a*np.array([[1,0,0],[0,1,0],[0,0,1]]) # vectores de la red recíproca\n",
"\n",
"# Definimos los vectores de la base de átomos\n",
"tA = np.array([0,0,0]) # posición del átomo A\n",
"tB = a*np.array([1/2,1/2,1/2]) # posición del átomo B\n",
"tO1 = a*np.array([1/2,1/2,0]) # posición del átomo O1\n",
"tO2 = a*np.array([1/2,0,1/2]) # posición del átomo O2\n",
"tO3 = a*np.array([0,1/2,1/2]) # posición del átomo O3\n",
"\n",
"# Definimos los puntos del camino en el espacio recíproco\n",
"GAMMA = np.array([0,0,0]) # punto \\Gamma\n",
"X = np.pi/a*np.array([1,0,0]) # punto X\n",
"M = np.pi/a*np.array([1,1,0]) # punto M\n",
"R = np.pi/a*np.array([1,1,1]) # punto R\n",
"\n",
"# Obtenemos el espacio de puntos para el camino en el espacio recíproco G-X-M-G-R\n",
"N = 100 # número de puntos por segmento\n",
"k_GX = np.array([np.linspace(GAMMA[i],X[i],N) for i in range(3)]).T\n",
"k_XM = np.array([np.linspace(X[i],M[i],N) for i in range(3)]).T\n",
"k_MG = np.array([np.linspace(M[i],GAMMA[i],N) for i in range(3)]).T\n",
"k_GR = np.array([np.linspace(GAMMA[i],R[i],N) for i in range(3)]).T\n",
"k_path = np.concatenate((k_GX,k_XM,k_MG,k_GR))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Modelo Empty Lattice\n",
"\n",
"En este modelo, se asume que la red es un cristal vacío, es decir, no hay interacción entre los electrones. Por lo tanto, la dispersión de electrones es simplemente la energía cinética de los electrones, trasladada por un vector de la red recíproca:\n",
"donde $\\mathbf{G} = h \\mathbf{b}_1 + k \\mathbf{b}_2 + l \\mathbf{b}_3$ es un vector de la red recíproca y $m$ es la masa del electrón. Así, solo queda recorrer diferentes valores de $h$, $k$ y $l$ para obtener las bandas de energía de los electrones en la red."
En el presente notebook se presenta un análisis de la dispersión de electrones en una red de perovskita $ABO_3$. Para esto, se implementan 3 modelos: Empty Lattice, Kronig-Penney y Tight Binding. La celda primitiva es una celda cúbica con átomos A en las esquinas, átomos O en las caras y un átomo B en el centro, como se muestra en la siguiente figura:
En el presente notebook se presenta un análisis de la dispersión de electrones en una red de perovskita $ABO_3$. Para esto, se implementan 3 modelos: Empty Lattice, Kronig-Penney y Tight Binding. La celda primitiva es una celda cúbica con átomos A en las esquinas, átomos O en las caras y un átomo B en el centro, como se muestra en la siguiente figura:
Se usarán estos vectores para calcular la dispersión de electrones en la red con los distintos modelos. Además, se graficará siempre sobre el camino $\Gamma - X - M - \Gamma - R$ en el espacio recíproco. Procedemos a realizar estas definiciones.
%% Cell type:code id: tags:
``` python
# Importamos librerías útiles
importnumpyasnp
importpandasaspd
importmatplotlib.pyplotasplt
plt.rcParams['figure.figsize']=(8,6)
plt.rcParams['axes.labelsize']=14
plt.rcParams['xtick.labelsize']=10
plt.rcParams['ytick.labelsize']=10
plt.rcParams['font.size']=15
# Definimos los vectores de la red cúbica simple
a=5e-10# parámetro de red en metros (Å)
a_i=a*np.array([[1,0,0],[0,1,0],[0,0,1]])# vectores de la red
b_i=2*np.pi/a*np.array([[1,0,0],[0,1,0],[0,0,1]])# vectores de la red recíproca
# Definimos los vectores de la base de átomos
tA=np.array([0,0,0])# posición del átomo A
tB=a*np.array([1/2,1/2,1/2])# posición del átomo B
tO1=a*np.array([1/2,1/2,0])# posición del átomo O1
tO2=a*np.array([1/2,0,1/2])# posición del átomo O2
tO3=a*np.array([0,1/2,1/2])# posición del átomo O3
# Definimos los puntos del camino en el espacio recíproco
GAMMA=np.array([0,0,0])# punto \Gamma
X=np.pi/a*np.array([1,0,0])# punto X
M=np.pi/a*np.array([1,1,0])# punto M
R=np.pi/a*np.array([1,1,1])# punto R
# Obtenemos el espacio de puntos para el camino en el espacio recíproco G-X-M-G-R
En este modelo, se asume que la red es un cristal vacío, es decir, no hay interacción entre los electrones. Por lo tanto, la dispersión de electrones es simplemente la energía cinética de los electrones, trasladada por un vector de la red recíproca:
donde $\mathbf{G} = h \mathbf{b}_1 + k \mathbf{b}_2 + l \mathbf{b}_3$ es un vector de la red recíproca y $m$ es la masa del electrón. Así, solo queda recorrer diferentes valores de $h$, $k$ y $l$ para obtener las bandas de energía de los electrones en la red.
%% Cell type:code id: tags:
``` python
# Definimos las constantes físicas
m=9.11e-31# masa del electrón en kg
hbar=1.05e-34# constante de Planck reducida en J s
e=1.6e-19# carga del electrón en C
# Definimos la función energía
defE(k_e):
# Iteramos sobre h, k y l (-1,0,1) para obtener las bandas de energía