All of the ab initio molecular dynamics calculations reported in Chapters 3 and 5 have performed using the CASTEP and CETEP codes. The large scale calculations in Chapters 6 and 7 have been done using code which we have implemented on the massively parallel Connection Machine CM200 at the Edinburgh Parallel Computing Centre.
CASTEP and CETEP use a plane wave basis set to expand the electronic wavefunction on which a band-by-band minimisation is achieved by the preconditioned conjugate gradients method in the space of the expansion coefficients, but constrained to maintain orthogonality of the single particle states. The Brillouin zone is sampled using the special k-points scheme of Monkhurst and Pack. On calculations on metallic systems the Gaussian smearing method of Fu and Ho is used with the entropy correction scheme of Devita.
Massively parallel computation provides an excellent technique for working with larger systems. Unlike the use made of CASTEP and CETEP in the calculations given in Chapters 3 and 5, the emphasis in Chapters 6 and 7 is on solving a single large problem rather that many smaller ones.
The CM200 code is implemented for semiconducting and insulating systems only. Expanding the wavefunction in plane waves gives a natural variable in which to parallelise over when using a very large number of processors (>16000). The plane wave coefficients are operated on in parallel along the axis of the array in which they are stored. Axes i (bands) and (special k-points) are relatively small in comparison to the Fourier expansion in and are therefore operated on in series. This is the most efficient method since, generally, the number of components at each band and k-point is larger that the number of processors on the CM200. With this data distribution, the only necessary interprocessor communication (which slows the algorithm) is in summing over 's when orthogonalising the wavefunctions, performing the FFT's on the charge density and packing/unpacking the wavefunction in order to construct the 3d charge density from the 1d wavefunction -axis.