Last Modified 17 December 1999

The ``Static'' Tight-Binding Program: Example XI

Energy of a cluster

The static program is not limited to calculations involving infinite periodically repeating crystals. This example shows how we can use the program to determine the energy of a small cluster.

In particular, the cluster we have in mind is very simple, just eight carbon atoms arranged on the corners of a cube:

Picture of Simple Cubic Copper
Cluster We want to determine the equilibrium size of this cluster, i.e., the nearest neighbor spacing between the Copper atoms.

Since the static code input requires us it include a set of primitive lattice vectors, it may not be obvious how to proceed. It turns out that the calculation is easy because of the short range of the tight-binding parameters, approximately 9 Angstroms or less. If we construct an incredibly huge unit cell, say a cube 1000 Bohr on a side, and keep the copper atoms near the origin, they will never interact with their periodic replicas. The only neighbors will be the atoms in the immediate cluster.

To start the code we grab a set of copper tight-binding parameters from the web, and save them in our working directory as cu_par.

Since the static code will still think that the calculation is in a periodic system, we need to give it a space group and a k-point mesh. The good news is that we don't have to think about this very hard, because there is no interaction between the unit cells. This means that the Bloch wavefunctions die before they reach any of the cluster replicas, so all k-points yield the same energy. Given that, we might as well take Gamma point as our k-point. (Unfortunately, the static code does not take advantage of the resulting reality of the Hamiltonian and overlap matrix.) We could write the k-point down in the file, or you can use the Gamma k-point file, which contains only one point.

Since we've picked our k-point, we don't need to worry about the space group, either. We can, and should, use the null space-group file, which has no symmetry except the identity (it's P1 and #1 in the Crystallographic Tables).

Saving all of these files in a working directory gives us

-r--r--r--  2 mehl  users  7130 May 28  1998 cu_par
-r--r--r-- 43 mehl  bind     28 Oct 28  1994 gamma.kpt
-r--r--r--  8 mehl  bind    259 May 21  1998 spcgrp.P1

Now that we've got all of that, let's take a look at the SKIN file:

The start of the calculation is pretty predictable:

Mode=3               (Pressure is meaningless in a cluster calculation)
0.005  100.0         (T_{Fermi}, Eigenvalue cutoff for P calculation)
cu_par

The final results should not be particularly dependent on the choice of temperature, or the choice of Mode = 1 or Mode = 3. It turns out that there is a substantial gap between the highest occupied state and the lowest unoccupied state, so that this cluster is an insulator, at least when using our tight-binding parameters. (We leave the proof of this statment to the reader.)

Next we must decide on how to separate the unit cells. In many ways it doesn't matter too much, so we use a simple cubic unit cell with a separation of 100 Bohr between cells. Note that there is no interaction between copper atoms separated by more than 33 Bohr, twice the cutoff distance of 16.5 Bohr.

The experimental equlibrium distance between copper atoms in a crystal is 2.55 Angstroms = 4.80 Bohr. We'll allow for the possibility that the cluster might have a larger spacing and start our calculation at 5 Bohr, working down to find a minimum. The start of the SKIN file then looks like this:

Eight-atom copper cluster
 5.000               (Label is interatomic distance)
 0.00                (Electrons in addition to nominal Pd charge (=10/atom))
 4                   (sc lattice, read in cubic lattice constant a)
   100.0             (large lattice constant, infinitely separated cells)
 0                   (No additional strains applied)
 8                   (Atoms in the unit cell)
 1 1 1               (Only because 0 0 0 leads to an error)
F                    (Logical variable -- no internal displacements)

Note that we must specify a "1 1 1" search distance because "0 0 0" causes the program to crash in search2.f. In any case, there are only a limited number of neighbors subject to search.

So how do we construct the cube? A logical, symmetrical choice is to place the center of the cube at the origin and the cube axis along the Cartesian directions. There there are atoms at

  ( -r/2  r/2  r/2 ), (  r/2 -r/2  r/2 ), ( -r/2 -r/2  r/2), etc.

With the nearest neighbor distance set as r = 5 and a simple cubic unit cell size of 100.0 the atom would have a SKIN file entery like:

 1  0.0025  0.0025  0.0025  0 0 0 

That's fine for a lattice constant of 100, but what if we entered 225.3? To avoid difficulties, static provides an alternate entry method: If the atom type (the "1" here) is negative, then the atom type is set to its absolute value and the position of the atom is interpreted to be in Cartesian coordinates. Therefore our atomic positions become:

-1  2.500  2.500  2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1  2.500  2.500 -2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1  2.500 -2.500  2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1  2.500 -2.500 -2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.500  2.500  2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.500  2.500 -2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.500 -2.500  2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.500 -2.500 -2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)

Note that this trick is not confined to clusters. Even in a real periodic system a negative atom type tells the program that the atomic position is in Cartesian coordinates. Note that we can mix types, e.g., we could have written

-1  2.500  2.500  2.500  0 0 0   ('-1' -> positions in Cartesian coordinates)
 1  0.025  0.025 -0.025  0 0 0   ('+1' -> positions in lattice coordinates)
though that would have been rather confusing.

Since we have an isolated cluster, the space group and k-point selection is particularly easy, as we mentioned above:

NEWSYM=T             (Generate new set of k-points)
LATTIC=1             (Lattice type / Next is spacegroup file name:)
spcgrp.P1
ILAT=F               (Space group file in Cartesian Coordinates)
-1313
gamma.kpt

This ends the setup of the first structure. For succeeding structures we will make the interatomic distance smaller. For example, at a distance of 4.80 Bohr the entry to the SKIN file looks like this:

Eight-atom copper cluster
 4.800               (Label is interatomic distance)
 0.00                (Electrons in addition to nominal Pd charge (=10/atom))
 4                   (sc lattice, read in cubic lattice constant a)
   100.0             (large lattice constant, infinitely separated cells)
 0                   (No additional strains applied)
 8                   (Atoms in the unit cell)
 1 1 1               (Only because 0 0 0 leads to an error)
F                    (Logical variable -- no internal displacements)
-1  2.400  2.400  2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1  2.400  2.400 -2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1  2.400 -2.400  2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1  2.400 -2.400 -2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.400  2.400  2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.400  2.400 -2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.400 -2.400  2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
-1 -2.400 -2.400 -2.400  0 0 0   ('-1' -> positions in Cartesian coordinates)
NEWSYM=F             (Use old k-points)

where we keep the old k-point mesh.

I've written a complete SKIN file that you can use to run the program. The working directory now looks like this:

-rw-r--r--  1 mehl  bind  12220 May 21 17:42 SKIN
-r--r--r--  2 mehl  users  7130 May 28  1998 cu_par
-r--r--r-- 43 mehl  bind     28 Oct 28  1994 gamma.kpt
-r--r--r--  8 mehl  bind    259 May 21  1998 spcgrp.P1

After running the static code, the directory looks like this:

-rw-r--r--  1 mehl  bind    630 May 21 18:04 SKENG
-rw-r--r--  1 mehl  bind  12220 May 21 17:42 SKIN
-rw-r--r--  1 mehl  bind  34798 May 21 18:04 SKOUT
-r--r--r--  2 mehl  users  7130 May 28  1998 cu_par
-r--r--r-- 43 mehl  bind     28 Oct 28  1994 gamma.kpt
-rw-r--r--  1 mehl  bind  24075 May 21 18:04 output
-r--r--r--  8 mehl  bind    259 May 21  1998 spcgrp.P1

where SKENG and SKOUT have their usual meaning and output is the standard output. Note that the output file explicitly tells you that it is converting atomic positions from Cartesian to lattice coordinates.

The SKENG file has some difficulty with the large volume of our calculation:

 5.000              ************     .137678958    1.119595488
 4.800              ************     .163069552    1.063931226
 4.600              ************     .192971858    1.024286948
 4.550              ************     .201186773    1.018186262
 4.500              ************     .209707198    1.014046539
 4.400              ************     .227690265    1.012693070
 4.350              ************     .237169258    1.016060544
 4.300              ************     .246987253    1.022553977
 4.200              ************     .267697037    1.046367643
 4.000              ************     .290909611    1.148887375

but this poses no problem because the volume of the unit cell (= 106 Bohr3) is irrelevant to our calculation.

The minimum of this calculation is obviously around 4.4 Bohr. To find the exact minimum, we fit the energies to a cubic polynomial in the displacement by the use of this gnuplot fitting script. This gives us the output:

Final set of parameters            68.3% confidence interval (one at a time)
=======================            =========================================

eo              = 1.01132          +/- 0.000328737     (0.0325056%)
ro              = 4.43897          +/- 0.0019774       (0.0445463%)
a               = 0.549211         +/- 0.00448344      (0.816343%)
b               = -0.368962        +/- 0.0107137       (2.90374%)
which tells us that the minimum separation is 4.44 Bohr = 2.35 Angstroms, substantially smaller than the bulk separation. The energy versus separation plot looks like this:
Graph of E(cubic side) for
Cluster

Of course, it is unlikely that eight atoms of copper form a simple cube, but you can investigate other structures using the static code. For the widest possible search, however, you will probably want to use the Tight-Binding Molecular Dynamics (TBMD) code, also available through the CHSSI program.


Look at other examples.

Get other parameters from the Tight-binding periodic table.


static Home Page   Introduction   About Version 1.11   Installation   List of Files   Usage   Input Files   Output Files   Trouble Shooting   Appendix

Return to the static Reference Manual.