Graphene

In this tutorial, the converge the Fermi level with respect to the number of k-points is discussed.

Structural optimization

First of all, cell relaxation is performed by using "vc-relax" using the following input file

&control
 calculation  = 'vc-relax'
 restart_mode = 'from_scratch',
 pseudo_dir   =  '/home/ikutaro/QE/pseudo',
 outdir       = './tmp'
 prefix       = 'gr'
 tstress      = .true.
 tprnfor      = .true.
/
&system
 ibrav       = 4
 A           = 2.46
 C           = 10.00
 nat         = 2
 ntyp        = 1
 ecutwfc     = 40.0
 ecutrho     = 400.0
 occupations = 'smearing'
 smearing    = 'mp'
 degauss     = 0.02
/
&electrons
 diagonalization = 'david'
 conv_thr        = 1.0e-12
 mixing_beta     = 0.5
/
&ions
/
&cell
 press          = 0.0d0
 press_conv_thr = 0.5d0
 cell_dofree    = 2Dxy
/
ATOMIC_SPECIES
 C  12.01070 c_pbe_v1.2.uspp.F.UPF
ATOMIC_POSITIONS (crystal)
  C 0.0000000000000000 0.0000000000000000 0.0000000000000000
  C 0.3333333333333333 0.6666666666666667 0.0000000000000000
K_POINTS (automatic)
 12 12 01 0 0 0

In this example, GBRV ultrasoft pseudopotential, cutoff energies of 40 and 400 Ry, and nonshifted 12 x 12 uniform k-point mesh is used. The vacuum of 10 Angstrom is inserted to separate periodic images. For the cell relaxation in two dimension, 'cell_dofree=2Dxy' is used.

SCF and band structure calculations

Having relaxed the cell parameters, let us start the band structure calculation. In this tutorial, band structure calculations are performed by varying the k-point mesh in the SCF calculation to learn how the number of k-points or k-point density is crucial to determine the position of Fermi level and thereby the location of the Dirac point at the K point.

  • SCF calculation
    &control
     calculation  = 'scf'
     restart_mode = 'from_scratch',
     pseudo_dir   =  '/home/ikutaro/QE/pseudo',
     outdir       = './tmp'
     prefix       = 'gr'
     tstress      = .true.
     tprnfor      = .true.
    /
    &system
     ibrav       = 4
     A           = 2.46575870
     C           = 10.00
     nat         = 2
     ntyp        = 1
     ecutwfc     = 40.0
     ecutrho     = 400.0
     occupations = 'smearing'
     smearing    = 'mp'
     degauss     = 0.02
     nbnd        = 8
    /
    &electrons
     diagonalization = 'david'
     conv_thr        = 1.0e-12
     mixing_beta     = 0.5
    /
    &ions
    /
    &cell
     press          = 0.0d0
     press_conv_thr = 0.5d0
     cell_dofree    = 2Dxy
    /
    ATOMIC_SPECIES
     C  12.01070 c_pbe_v1.2.uspp.F.UPF
    ATOMIC_POSITIONS (crystal)
      C 0.0000000000000000 0.0000000000000000 0.0000000000000000
      C 0.3333333333333333 0.6666666666666667 0.0000000000000000
    K_POINTS (automatic)
     12 12 01 0 0 0
  • Band structure
    &control
     calculation  = 'bands'
     restart_mode = 'from_scratch',
     pseudo_dir   =  '/home/ikutaro/QE/pseudo',
     outdir       = './tmp'
     prefix       = 'gr'
     tstress      = .true.
     tprnfor      = .true.
    /
    &system
     ibrav       = 4
     A           = 2.46575870
     C           = 10.00
     nat         = 2
     ntyp        = 1
     ecutwfc     = 40.0
     ecutrho     = 400.0
     occupations = 'smearing'
     smearing    = 'mp'
     degauss     = 0.02
     nbnd        = 8
    /
    &electrons
     diagonalization = 'david'
     conv_thr        = 1.0e-12
     mixing_beta     = 0.5
    /
    &ions
    /
    &cell
     press          = 0.0d0
     press_conv_thr = 0.5d0
     cell_dofree    = 2Dxy
    /
    ATOMIC_SPECIES
     C  12.01070 c_pbe_v1.2.uspp.F.UPF
    ATOMIC_POSITIONS (crystal)
      C 0.0000000000000000 0.0000000000000000 0.0000000000000000
      C 0.3333333333333333 0.6666666666666667 0.0000000000000000
    K_POINTS (crystal_b)
    4
      0.00000000  0.00000000  0.00000000 20.0
      0.66666667 -0.33333333  0.00000000 20.0
      0.50000000  0.00000000  0.00000000 20.0
      0.00000000  0.00000000  0.00000000  0.0
    In this example, the energy band is draw along the Gamma-K-M-Gamma line.
  • Post-processing To plot the band structure with gnuplot or alike, "bands.x" is used. Here's an example of the input file:
    &bands
     outdir  = './tmp'
     prefix  = 'gr'
     filband = 'gr.bands'
     lsym    = .true 
    /
    With this input, "gr.bands.gnu" and "gr.bands.rap" are generated. For use with gnuplot, "gr.bands.gnu" can be used. One can use the following script ("band_plot.sh") to generate the band plot with gnuplot
    #!/bin/sh
     ef=`grep Fermi gr.scf.out | awk '{print $5}'`
     echo $ef
    gnuplot <<EOF
    ef=${ef}
    xmin=0.0
    xmax=1.5784
    ymin=-21.0
    ymax=4.0
    g1=0.0
    k=0.6671
    m=1.0007
    g2=1.5784
    offset=0.5
    set arrow from k,ymin to k,ymax nohead lt 0
    set arrow from m,ymin to m,ymax nohead lt 0
    unset xtics
    set xlabel 'E - E_F (eV)'
    set label '{/Symbol G}' at g1,ymin-offset center
    set label 'K' at k,ymin-offset center
    set label 'M' at m,ymin-offset center
    set label '{/Symbol G}' at g2,ymin-offset center
    set xrange [xmin:xmax]
    set yrange [ymin:ymax]
    set xzeroaxis lt 0
    plot 'gr.bands.gnu' using (\$1):(\$2-ef)
    pause -1
    and type
    sh band_plot.sh
    Here the output file for the corresponding SCF calculation is assumed to be "gr.scf.out."
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS