"En el presente notebook se presenta una implementación de la teoría de fonones mediante matriz dinámica en el grafeno. Se calculan las bandas de dispersión considerando primeros vecinos de una celda primitiva con dos átomos. La base de la teoría aquí presentada se encuentra en el libro de Kaxiras, E. (2019) Quantum Theory of Materials, capítulo 7."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Análisis analítico"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Análisis numérico"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Importamos las librerias necesarias\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"#Definimos la matriz dinamica\n",
"def D(Kx, Ky, Kz, params):\n",
" '''\n",
" Esta función calcula la matriz dinamica de un cristal hexagonal\n",
" para un vector de onda K = (Kx, Ky, Kz). La notación de las componentes\n",
" de la matriz dinamica se puede comprender en la forma:\n",
" plt.title('Dispersión en el camino $\\Gamma$-M-K-$\\Gamma$')\n",
" plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3, 6, 100)"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"disp.shape"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicom\\AppData\\Local\\Temp\\ipykernel_13392\\234641334.py:20: ComplexWarning: Casting complex values to real discards the imaginary part\n",
"C:\\Users\\nicom\\AppData\\Local\\Temp\\ipykernel_13392\\234641334.py:21: ComplexWarning: Casting complex values to real discards the imaginary part\n",
"C:\\Users\\nicom\\AppData\\Local\\Temp\\ipykernel_13392\\234641334.py:22: ComplexWarning: Casting complex values to real discards the imaginary part\n",
"C:\\Users\\nicom\\AppData\\Local\\Temp\\ipykernel_13392\\234641334.py:23: ComplexWarning: Casting complex values to real discards the imaginary part\n",
"C:\\Users\\nicom\\AppData\\Local\\Temp\\ipykernel_13392\\234641334.py:24: ComplexWarning: Casting complex values to real discards the imaginary part\n",
"C:\\Users\\nicom\\AppData\\Local\\Temp\\ipykernel_13392\\234641334.py:25: ComplexWarning: Casting complex values to real discards the imaginary part\n",
En el presente notebook se presenta una implementación de la teoría de fonones mediante matriz dinámica en el grafeno. Se calculan las bandas de dispersión considerando primeros vecinos de una celda primitiva con dos átomos. La base de la teoría aquí presentada se encuentra en el libro de Kaxiras, E. (2019) Quantum Theory of Materials, capítulo 7.
%% Cell type:markdown id: tags:
## Análisis analítico
%% Cell type:markdown id: tags:
## Análisis numérico
%% Cell type:code id: tags:
``` python
# Importamos las librerias necesarias
importnumpyasnp
importpandasaspd
importmatplotlib.pyplotasplt
```
%% Cell type:code id: tags:
``` python
#Definimos la matriz dinamica
defD(Kx,Ky,Kz,params):
'''
Esta función calcula la matriz dinamica de un cristal hexagonal
para un vector de onda K = (Kx, Ky, Kz). La notación de las componentes
de la matriz dinamica se puede comprender en la forma:
D_0x,0x = D_0,0, D_1x,1x = D_3,3, D_0y,1z = D_1,5, etc.