Gold

In this tutorial how to draw a band structure is described by taking gold (Au) in the face centered cubic structure as an example

SCF calculation

First, perform an SCF calculation to get the charge density.

  • Input file: au_scf.in
    &control
       calculation='scf'
       restart_mode='from_scratch',
       pseudo_dir = '/home/ikutaro/QE/pseudo/'
       outdir='./tmp'
       prefix='au'
       tprnfor = .true.
       tstress = .true.
       forc_conv_thr = 1.d-4
       nstep=10000
    /
    &system
       ibrav = 2
       A     = 4.00
       !A     = 4.079
       nat   = 1
       ntyp  = 1
       ecutwfc = 40.0
       ecutrho = 400.0
       occupations='smearing'
       smearing='mp'
       degauss=0.01
       nbnd=24
       !input_dft='vdW-DF2-B86R'
       !assume_isolated = 'esm', esm_bc='bc1'
    /
    &electrons
       diagonalization='cg'
       conv_thr = 1.0e-12
       mixing_beta = 0.1
    /
    &ions
     ion_dynamics='bfgs'
    /
    &cell
     cell_dynamics='bfgs'
    /
    ATOMIC_SPECIES
     Au 0.0000 au_pbe_v1.uspp.F.UPF
    ATOMIC_POSITIONS (crystal)
    Au      0.000000000000      0.000000000000      0.00000000000
    K_POINTS (automatic)
    16 16 16 0 0 0
  • Execution
    mpirun -np 8 < au_scf.in > au_scf.out

Cell optimization

For the cell optimization, use the input file like follows

  • Input file: au_scf.in
    &control
       calculation='vc-relax'
       restart_mode='from_scratch',
       pseudo_dir = '/home/ikutaro/QE/pseudo/'
       outdir='./tmp'
       prefix='au'
       tprnfor = .true.
       tstress = .true.
       forc_conv_thr = 1.d-4
       nstep=10000
    /
    &system
       ibrav = 2
       A     = 4.00
       !A     = 4.079
       nat   = 1
       ntyp  = 1
       ecutwfc = 40.0
       ecutrho = 400.0
       occupations='smearing'
       smearing='mp'
       degauss=0.01
       nbnd=24
       !input_dft='vdW-DF2-B86R'
       !assume_isolated = 'esm', esm_bc='bc1'
    /
    &electrons
       diagonalization='cg'
       conv_thr = 1.0e-12
       mixing_beta = 0.1
    /
    &ions
     ion_dynamics='bfgs'
    /
    &cell
     cell_dynamics='bfgs'
    /
    ATOMIC_SPECIES
     Au 0.0000 au_pbe_v1.uspp.F.UPF
    ATOMIC_POSITIONS (crystal)
    Au      0.000000000000      0.000000000000      0.00000000000
    K_POINTS (automatic)
    16 16 16 0 0 0
    Here we use default values for the pressure tolerance.
  • Execution
    mpirun -np 8 < au_scf.in > au_scf.out

Band structure calculation

Having connfirmed the convergence of the SCF calculation, we are ready to perform the band structure calculation. Here is an input file for the band structure calculation.

  • Input file: au_bands.in
    &control
       calculation='bands'
       restart_mode='from_scratch',
       pseudo_dir = '/home/ikutaro/QE/pseudo/'
       outdir='./tmp'
       prefix='au'
       tprnfor = .true.
       tstress = .true.
       forc_conv_thr = 1.d-4
       nstep=10000
    /
    &system
       ibrav = 2
       A     = 4.00
       !A     = 4.079
       nat   = 1
       ntyp  = 1
       ecutwfc = 40.0
       ecutrho = 400.0
       occupations='smearing'
       smearing='mp'
       degauss=0.01
       nbnd=24
       !input_dft='vdW-DF2-B86R'
       !assume_isolated = 'esm', esm_bc='bc1'
    /
    &electrons
       diagonalization='cg'
       conv_thr = 1.0e-12
       mixing_beta = 0.1
    /
    &ions
     ion_dynamics='bfgs'
    /
    &cell
     cell_dynamics='bfgs'
    /
    ATOMIC_SPECIES
     Au 0.0000 au_pbe_v1.uspp.F.UPF
    ATOMIC_POSITIONS (crystal)
    Au      0.000000000000      0.000000000000      0.00000000000
    K_POINTS tpiba_b
    5
     0.0 0.0 0.0 50.0
     1.0 0.0 0.0 50.0
     1.0 0.5 0.0 50.0
     0.5 0.5 0.5 50.0
     0.0 0.0 0.0  0.0

In this example, we draw a band structure along

  • Gamma (0, 0, 0)
  • X 2pi/a (1, 0, 0)
  • W 2pi/a (1, 1/2, 0)
  • L 2pi/a (1/2, 1/2, 1/2) In the cartesian coordinate, and in the following how to specify the k-points along the symmetry points. The KPOINTS card starts like
    K_POINTS tpiba_b
    If you want to use the k-points in the unit of the reciprocal lattice vector, use
    K_POINTS crystal_b
    Then set the number of high symmetry points. In this case
    5
    The number is followed by the k-points and the mesh (number of intervals)
     0.0 0.0 0.0 50.0
     1.0 0.0 0.0 50.0
     1.0 0.5 0.0 50.0
     0.5 0.5 0.5 50.0
     0.0 0.0 0.0  0.0
    which define the segments of the high symmetry line in the Brillouin zone. In this example, total number of k-points is 50+50+50+50+1=201. In general, something like
    K_POINTS tpiba_b | crystal_b
    NKSEG
    K1X K1Y K1Z NKMESH1
    K2X K2Y K2Z NKMESH2
    ...
    KNX KNY KNZ NKMESHN
    and the i-th k-point in the first segment (for instance) is determined by
    kx(i) = (K2X -K1X) * (i-1) / NKMESH1
    ky(i) = (K2Y - K1Y) * (i-1) / NKMESH1
    kz(i) = (K2Z - K1Z) * (i-1) / NKMESH1
  • Execution
    mpirun -np 8 < au_bands.in > au_bands.out
    NOTE: Make sure you use the same number of cores/cpus as that for the SCF calculation.
    In order to plot the band structure, we need to convert the data in such a way that your favorite graphic software such as gnuplot can read. The simplest way is to use "bands.x." Here is an input file for the bands.x
  • Input file: bands.in
    &bands
       outdir='./tmp'
       prefix='au'
       filband='au_band'
       lsym=.true.
    /
  • Execution
    mpirun -np 8 bands.x < bands.in > bands.out
    You will obtain
  • au_band.gnu
  • au_band.rap The latter will be an input file for other program, and the former, just Kohn-Sham eigenvalues in an XY data, which can be plotted by gnuplot, for e.g.
    $ gnuplot
    $ > plot 'au_band.gnu'
    If you want to set the energy origin to the Fermi level, it may be like
    $ > plot 'au_and.gnu' using ($1):($2-17.1096)
    The value "17.1096" is the value of the Fermi level, taken from the previsou SCF calculation.
トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS