This is an old revision of the document!
In this section, we explain how to optimize the lattice parameter of Si bulk diamond structure. The diamond structure is characterized by two distinct atom per unit cell with relative coordinates (0 ,0 ,0)
and (1/4, 1/4, 1/4)
. The lattice vector is defined in the relative coordinates alat*(1/4, 1/4, 1/4)
.
There is an elegant way to rescale atomic coordinates, lattice vector and k-points by only one parameter rescal
defined in the section &OPTIONS
.
Our input atomic coordinates written in fireball.in
look like:
2 14 0.00000 0.00000 0.00000 14 0.25000 0.25000 0.25000
the lattice vector is defined in Si.lvs
file:
0.50000 0.00000 0.50000 0.00000 0.50000 0.50000 0.50000 0.50000 0.00000
and we use Oh
symmetry group to generate a k-points set (file Si.kpts
)
60 -2.74889350 -2.74889350 -2.74889350 0.00390625 -1.96349549 -1.96349549 -3.53429174 0.01171875 -1.17809725 -1.17809725 -4.31968975 0.01171875 -0.39269909 -0.39269909 -5.10508823 0.01171875 0.39269909 0.39269909 -5.89048624 0.01171875 1.17809725 1.17809725 5.89048608 0.01171875 1.96349549 1.96349549 5.10508807 0.01171875 -3.53429190 -3.53429190 -1.96349581 0.01171875 -2.74889350 -1.17809725 -2.74889350 0.01171875 -1.96349549 -0.39269909 -3.53429174 0.02343750 -1.17809725 0.39269909 -4.31968975 0.02343750 -0.39269909 1.17809725 -5.10508823 0.02343750 0.39269909 1.96349549 -5.89048624 0.02343750 -5.10508815 -3.53429190 -0.39269932 0.02343750 -4.31968991 -2.74889366 -1.17809733 0.02343750 -2.74889350 0.39269909 -2.74889350 0.01171875 -1.96349549 1.17809725 -3.53429174 0.02343750 -1.17809725 1.96349549 -4.31968975 0.02343750 -0.39269909 2.74889350 -5.10508823 0.02343750 -5.89048631 -2.74889366 0.39269916 0.02343750 -5.10508815 -1.96349565 -0.39269932 0.02343750 -2.74889350 1.96349549 -2.74889350 0.01171875 -1.96349549 2.74889350 -3.53429174 0.02343750 -1.17809725 3.53429174 -4.31968975 0.02343750 5.89048631 -1.96349565 1.17809717 0.02343750 -5.89048631 -1.17809717 0.39269916 0.02343750 -2.74889350 3.53429174 -2.74889350 0.01171875 4.31968991 -1.96349565 2.74889366 0.02343750 5.10508815 -1.17809717 1.96349565 0.02343750 3.53429190 -1.17809717 3.53429190 0.01171875 4.31968991 -0.39269916 2.74889366 0.02343750 3.53429190 0.39269932 3.53429190 0.01171875 -1.96349549 -1.96349549 -1.96349549 0.00390625 -1.17809725 -1.17809725 -2.74889350 0.01171875 -0.39269909 -0.39269909 -3.53429174 0.01171875 0.39269909 0.39269909 -4.31968975 0.01171875 1.17809725 1.17809725 -5.10508823 0.01171875 -4.31968991 -4.31968991 0.39269916 0.01171875 -1.96349549 -0.39269909 -1.96349549 0.01171875 -1.17809725 0.39269909 -2.74889350 0.02343750 -0.39269909 1.17809725 -3.53429174 0.02343750 0.39269909 1.96349549 -4.31968975 0.02343750 1.17809725 2.74889350 -5.10508823 0.02343750 -1.96349549 1.17809725 -1.96349549 0.01171875 -1.17809725 1.96349549 -2.74889350 0.02343750 -0.39269909 2.74889350 -3.53429174 0.02343750 0.39269909 3.53429174 -4.31968975 0.02343750 -1.96349549 2.74889350 -1.96349549 0.01171875 -1.17809725 3.53429174 -2.74889350 0.02343750 -1.96349549 4.31968975 -1.96349549 0.01171875 -1.17809725 -1.17809725 -1.17809725 0.00390625 -0.39269909 -0.39269909 -1.96349549 0.01171875 0.39269909 0.39269909 -2.74889350 0.01171875 1.17809725 1.17809725 -3.53429174 0.01171875 -1.17809725 0.39269909 -1.17809725 0.01171875 -0.39269909 1.17809725 -1.96349549 0.02343750 0.39269909 1.96349549 -2.74889350 0.02343750 -1.17809725 1.96349549 -1.17809725 0.01171875 -0.39269909 -0.39269909 -0.39269909 0.00390625 0.39269909 0.39269909 -1.17809725 0.01171875
to
alat=" 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0" for i in $alat; do echo $i mkdir $i lattice="`echo $i`"; sed "s/AAA/$lattice/g" fireball.sample > fireball.in; ./runTG.com > a-$i.out grep "etot/atom" a-$i.out | cut -b50-65 mv CHARGES $i/ mv a-$i.out $i/ done
the script runs several tasks for defined lattice vectors, it creates a directory for each lattice parameter and it saves there CHARGES
and an output file. It also dumps the energy per atom for a given lattice parameter.
A file fireball.sample
has following syntax:
&OPTION basisfile = Si.bas lvsfile = Si.lvs kptpreference = Si.kpts nstepf = 1 rescal = AAA &END
Afterwards, we simply dump the total energy vs. lattice parameter into a file:
grep ETOT */*.out | cut -b1-3,34- > etot.dat
and we plot using gnuplot
gnuplot gnuplot> plot 'etot.dat' with linespoints