Last Modified 17 December 1999
In this example we use the tight-binding program static to determine the elastic constant C44 of bcc Niobium, using static to determine the energy as a function of strain and then using gnuplot's fitting program to determine the elastic constant. By extension this method can be used to determine the elastic constants of other cubic materials.
For more information about the construction of the input to the static program see e.g., Example 1 and the other examples. For more information about the calculation of elastic constants from total-energy information, see the paper ``First-principles calculation of Elastic Properties'', in Intermetallic Compounds: Vol. 1, Principles, J. H. Westbrook and R. L. Fleischer, eds. (Wiley, London: 1995).
As usual, we can obtain the tight-binding parameters for niobium from the tight-binding periodic table under ``Nb''. Save these parameters in a working directory as nb_par.
Determining the spacegroup file for this lattice is somewhat more involved than usual. It turns out that, just as in Example 4, the system forms a body-centered orthorhombic lattice, and the space group is Fmmm (#69 in the International Crystallographic Tables). The difference is that now the orthorhombic cell has been rotated by 45° about the z axis. It is still fairly easy to construct this space group, but I've made a copy for you here. Save it in your working directory under the name spcgrp. At some point we'll add this lattice, too, to the Crystal Lattice Structure (http://web.archive.org/web/20111231202250/http://cst-www.nrl.navy.mil/lattice/index.html) page.
Again, you can generate your own k-points, but I've provided a set called bccc44.08. This set is used to find C44 (hence the "c44") of the bcc lattice, and is equivalent to the bcc.08 mesh of Example I when there is no strain on the lattice.
Once again, take this copy of the SKIN (Slater-Koster INput) file, and save it in your working directory under the name SKIN. Let's examine this file.
The first few lines of the file should be familiar from previous examples:
Mode=3 Calculate E Only 0.002 0.500 (T_{Fermi}, Eigenvalue cutoff for P calculation) nb_par
The first structure we'll calculate is the one with zero strain, i.e., the undistorted body-centered cubic lattice. This part of the SKIN file looks like this:
BCC Niobium -- 'Monoclinic' Strain for C_{44} e6^2= 0.0000 (20 character label for SKENG) 0.00 (Electrons in addition to nominal Nb charge (=5/atom)) 2 (bcc lattice, read in cubic lattice constant a) 6.236 (lattice constant in Bohr) 0 (No additional strains applied) 1 (Atoms in the unit cell) 4 4 4 (Neighbor search cutoff indicies) F (Logical variable -- no internal displacements) 1 0.000 0.000 0.000 0 0 0 (Position of atom in Lattice coordinates) NEWSYM=T (Generate new set of k-points) LATTIC=1 (Lattice type / Next is spacegroup file name:) spcgrp ILAT=F (Space group file in Cartesian Coordinates) -1313 (Read k-points from a file/ Next is file name:) bccc44.08
You should be able to recognize all of the parts to from previous examples. The only differences from a regular bcc calculation are the space group file, which is a rotated Fmmm rather than Im(-3)m, and the k-point mesh. However, since there is no strain on the lattice, this should produce an identical total energy. You can check this by using the Im(-3)m space group file and cubic bcc.08 k-point mesh in place of this spcgrp and bccc44.08.
The remaining parts of the calculation concern an fcc lattice under strain. Consider the next calculation in the SKIN file:
BCC Niobium -- 'Monoclinic' Strain for C_{44} e6^2= 0.0005 (20 character label for SKENG) 0.00 (Electrons in addition to nominal Nb charge (=5/atom)) 2 (bcc lattice, read in cubic lattice constant a) 6.236 (lattice constant in Bohr) -3 (Strain option -3: read e6^2, e3 adjusts volume) 0.0005 1 (Atoms in the unit cell) 4 4 4 (Neighbor search cutoff indicies) F (Logical variable -- no internal displacements) 1 0.000 0.000 0.000 0 0 0 (Position of atom in Lattice coordinates) NEWSYM=F (Generate new set of k-points)
The label tells us that the value of the strain parameter e1 is 0.05 for this calculation, a rather small strain. Note that the program starts by constructing an fcc lattice with a lattice constant of 6.236 Bohr, the experimental equilibrium lattice constant for Niobium. However, the lattice is then strained. The strain choice, -3, is made from the strain type section of the subroutine setlat.f. From the strain table we see that option -3 is a volume-conserving strain with the energy/strain relationship
Since this is a cubic lattice, we have
C44=C66, so this reduces to
For this strain and a cubic lattice it is easy to show that
E(-e6) = E(e6), so
the program asks us to input
x2 = e62.
Just as in Example 4, the atom
remains at the origin for all strains. This is a consequence of the
fact that there is only one atom in the unit cell and so we can
always assume that it is at the origin. This assumes that there is
no Jahn-Teller type distortion of the lattice. If such a distortion
exists this calculation will only be an upper bound to the true
elastic constant.
The remainder of the calculation proceeds in the usual way, as we
calculate the energy as a function of
x2 = e62. The
the range of strain values is similar to that in Example 4. For metallic
systems I've found that reliable elastic constants can be obtained
if we keep |e6| < 0.10. The
lattices in this SKIN file span this
range.
Now go to the output discussion to see
what will happen.
Look at other examples.
Get other parameters from the Tight-binding periodic
table. Return to the static Reference
Manual.