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.