CASTEP is a shared-source academic and commercial software package which uses density functional theory with a plane wave basis set to calculate the electronic properties of crystalline solids, surfaces, molecules, liquids and amorphous materials from first principles. CASTEP permits geometry optimisation and finite temperature molecular dynamics with implicit symmetry and geometry constraints, as well as calculation of a wide variety of derived properties of the electronic configuration. Although CASTEP was originally a serial, Fortran 77-based program, it was completely redesigned and rewritten from 1999 to 2001 using Fortran 95 and MPI for use on parallel computers by researchers at the Universities of York, Durham, St. Andrews, Cambridge and Rutherford Labs. History CASTEP was created in the late 1980s and early 1990s in the TCM Group of the Cavendish Laboratory in Cambridge. It was then an academic code written in Fortran77, and the name was originally derived from CAmbridge Serial Total Energy Package. In the mid 1990s it was commercialised by licensing it to Molecular Simulations International (the company was later purchased by Accelrys, in turn purchased by Biovia) in an arrangement through which the University of Cambridge received a share of the royalties, and much of the development remained with the original academic authors. The code was then redesigned and completely rewritten from 1999–2001 to make use of the features of modern Fortran, enable parallelism throughout the code and improve its software sustainability. The name CASTEP was adopted by the new codebase, but without the implied former meaning since the code was now parallel, and capable of computing many quantities besides the total energy. By this point annual sales exceeded £1m. Despite its commercialisation, CASTEP and its source code remained free to UK academics. In 2019 the free academic licence was extended to world-wide academic use (not just UK academia). Commercial users can purchase CASTEP as part of Biovia's Materials Studio package. Theory and approximations Starting from the many-body wavefunction, an adiabatic approximation is made with respect to the nuclear and electronic coordinates (the Born–Oppenheimer approximation). The code also makes use of Bloch's Theorem which means a wavefunction of a periodic system has a cell-periodic factor and a phase factor. The phase factor is represented by a plane wave. From the usage of Bloch's Theorem, it is ideal to write the wavefunction in plane waves for the cell-periodic factor and the phase factor. From this the basis functions are orthogonal