Skip to main content

Bandstructure and DOS of diamond

We will run the bandstructure calculation from the OpenMX example file. Here is the input file:

src/diamond/diamond.in
# File Name
System.CurrrentDirectory ./ # default=./
System.Name diamond
DATA.PATH /home/svu/slspkd/openmx3.9/DFT_DATA19
level.of.stdout 1 # default=1 (1-3)
level.of.fileout 0 # default=1 (0-2)

# Definition of Atomic Species
Species.Number 1
<Definition.of.Atomic.Species
C C5.0-s2p2d1 C_CA19
Definition.of.Atomic.Species>

# Atoms
Atoms.Number 2
Atoms.SpeciesAndCoordinates.Unit Ang # Ang|AU
<Atoms.SpeciesAndCoordinates
1 C 0.000 0.000 0.000 2.0 2.0
2 C 0.890 0.890 0.890 2.0 2.0
Atoms.SpeciesAndCoordinates>
Atoms.UnitVectors.Unit Ang # Ang|AU
<Atoms.UnitVectors
1.7800 1.7800 0.0000
1.7800 0.0000 1.7800
0.0000 1.7800 1.7800
Atoms.UnitVectors>

# SCF or Electronic System

scf.XcType LDA # LDA|LSDA-CA|LSDA-PW|GGA-PBE
scf.SpinPolarization off # On|Off|NC
scf.ElectronicTemperature 300.0 # default=300 (K)
scf.energycutoff 150.0 # default=150 (Ry)
scf.maxIter 100 # default=40
scf.EigenvalueSolver band # DC|GDC|Cluster|Band
scf.Kgrid 7 7 7 # means n1 x n2 x n3
scf.Mixing.Type rmm-diisk # Simple|Rmm-Diis|Gr-Pulay|Kerker|Rmm-Diisk
scf.Init.Mixing.Weight 0.30 # default=0.30
scf.Min.Mixing.Weight 0.001 # default=0.001
scf.Max.Mixing.Weight 0.700 # default=0.40
scf.Mixing.History 7 # default=5
scf.Mixing.StartPulay 5 # default=6
scf.criterion 1.0e-10 # default=1.0e-6 (Hartree)

#
# MD or Geometry Optimization
#

MD.Type nomd # Nomd|Opt|NVE|NVT_VS|NVT_NH
MD.maxIter 1 # default=1
MD.TimeStep 1 # default=0.5 (fs)
MD.Opt.criterion 1.0e-5 # default=1.0e-4 (Hartree/bohr)

# Band dispersion
#

Band.dispersion on # on|off, default=off
<Band.KPath.UnitCell
3.56 0.00 0.00
0.00 3.56 0.00
0.00 0.00 3.56
Band.KPath.UnitCell>
# if <Band.KPath.UnitCell does not exist,
# the reciprical lattice vector is employed.
Band.Nkpath 5
<Band.kpath
25 0.0 0.0 0.0 1.0 0.0 0.0 g X
25 1.0 0.0 0.0 1.0 0.5 0.0 X W
25 1.0 0.5 0.0 0.5 0.5 0.5 W L
25 0.5 0.5 0.5 0.0 0.0 0.0 L g
25 0.0 0.0 0.0 1.0 0.0 0.0 g X
Band.kpath>

# MO output
#

MO.fileout off # on|off
num.HOMOs 1 # default=2
num.LUMOs 1 # default=2
MO.Nkpoint 2 # default=1
<MO.kpoint
0.0 0.0 0.0
0.0 0.0 0.2
MO.kpoint>

#
# DOS and PDOS
#

Dos.fileout on # on|off, default=off
Dos.Erange -25.0 20.0 # default = -20 20
Dos.Kgrid 12 12 12 # default = Kgrid1 Kgrid2 Kgrid3
FermiSurfer.fileout on

We can run the calculation using mpirun or submit via job-script:

mpirun -np 12 openmx diamond.in > diamond.out

Next step is to extract bandstructure data from diamond.Band file:

bandgnu13 diamond.Band

Finally, we can plot the bandstructure using gnuplot or any plotting program of your choice:

gnuplot diamond.GNUBAND
diamond-band

Density of States (DOS)

DosMain diamond.Dos.val diamond.Dos.vec

It will ask few options interactively. Use of tetrahedron method is suitable. The output file diamond.DOS.Tetrahedron will contain the energy, DOS and integrated DOS columns.

diamond-dos

While running the DosMain program, you can also choose PDOS for projected density of states for each orbitals.