Graphene is a material that is extracted from graphite and is made up of pure carbon, one of the most important elements in nature and which we find in daily objects like the lead of a pencil.
Graphene (/ˈɡræfiːn/)[1] is a carbon allotrope consisting of a single layer of atoms arranged in a honeycomb planar nanostructure.[2][3] The name "graphene" is derived from "graphite" and the suffix -ene, indicating the presence of double bonds within the carbon structure.
Now, we will calculate its total density of states and we need to do many calculations using different input files
graphene_scf.in
&CONTROL
calculation = 'scf',
prefix = 'graphene',
outdir = '/tmp/',
pseudo_dir = './',
/
&SYSTEM
ibrav = 4,
celldm(1) = 4.654,
celldm(3) = 3.0,
nat = 2,
ntyp = 1,
ecutwfc = 40.0,
ecutrho = 400.0,
occupations = 'smearing',
smearing = 'gaussian',
degauss = 0.01,
/
&ELECTRONS
conv_thr = 1.0d-8
/
ATOMIC_SPECIES
C 12.0107 C.pbe-rrkjus.UPF
ATOMIC_POSITIONS alat
C 0.000000 0.0000000 0.000000
C 0.000000 0.5773503 0.000000
K_POINTS automatic
9 9 1 0 0 0
You can download the pseudopotential from here C.pbe-rrkjus.UPF
Run the scf calculation
pw.x -i graphene_scf.in > graphene_scf.out
graphene_nscf.in
&CONTROL
calculation = 'nscf',
prefix = 'graphene',
outdir = '/tmp/',
pseudo_dir = './',
/
&SYSTEM
ibrav = 4,
celldm(1) = 4.654,
celldm(3) = 3.0,
nat = 2,
ntyp = 1,
ecutwfc = 40.0,
ecutrho = 400.0,
occupations='tetrahedra_opt'
/
&ELECTRONS
conv_thr = 1.0d-8
/
ATOMIC_SPECIES
C 12.0107 C.pbe-rrkjus.UPF
ATOMIC_POSITIONS alat
C 0.000000 0.0000000 0.000000
C 0.000000 0.5773503 0.000000
K_POINTS automatic
12 12 1 0 0 0
Next increase the k-grid, and perform the non-self-consistent field calculation.
pw.x -i graphene_nscf.in > graphene_nscf.out
graphene_dos.in
&DOS
prefix = 'graphene',
outdir = '/tmp/'
fildos = 'graphene_dos.dat'
/
Run the dos calculation for the dense k-mesh:
dos.x -i graphene_dos.in > graphene_dos.out
Make plot using the Matplotlib package and the script graphene-dos.py
To install the package we run the following command:
sudo apt-get install python3-matplotlib
graphene-dos.py
import matplotlib.pyplot as plt
from matplotlib import rcParamsDefault
import numpy as np
#%matplotlib inline
# load data
energy, dos, idos = np.loadtxt('./graphene_dos.dat', unpack=True)
# make plot
plt.figure(figsize = (12, 6))
plt.plot(energy, dos, linewidth=0.75, color='red')
plt.yticks([])
plt.xlabel('Energy (eV)')
plt.ylabel('DOS')
plt.axvline(x=6.642, linewidth=0.5, color='k', linestyle=(0, (8, 10)))
plt.xlim(-16, 16)
plt.ylim(0, )
plt.fill_between(energy, 0, dos, where=(energy < 6.642), facecolor='red', alpha=0.25)
plt.text(6, 1.7, 'Fermi energy', fontsize= 13, rotation=90)
plt.show()
To execute the script we run the following commands:
/Si-cutoff-pwtk$ python3 graphene-dos.py
We get the following picture:
0 Comments