A variable cell calculation is performed if we are attempting to geometry optimise a material for which the
lattice parameters and atomic positions are not even approximately known. In this situation, placing constraints on the
size and shape of the supercell might affect the result. A ground state structure with a large lattice constant might
not be found if a small supercell was used which confined the atoms to be too close together.
The solution is to perform a variable cell calculation which will allow the supercell size and shape to be optimised along with the atomic positions. A variable cell calculation is the default and will be performed as long as FIX_ALL_CELL : TRUE is not in the .cell file. A finite basis set correction  is used to reduce errors associated with changes in the total number of plane waves as the system changes size. As the supercell changes size the basis set associated with each k-point is altered. To adjust for this the cutoff energy could be varied to maintain the number of plane waves as a constant. However, it is generally considered  to be more acceptable to keep the cutoff energy constant and vary the number of plane waves. This 'graininess' in the basis set can be smoothed out with a finite basis set correction. This involves the calculation of the variation of the total energy with the logarithm of the cutoff energy, which is used as a smoothing parameter.
The principle keyword that activates a finite basis set correction whenever the cell parameters change is
finite_basis_corr : n
The default value of n is none, meaning no finite basis set correction is performed. The user can specify the value of the smoothing parameter by setting n = manual and then including
where v is the value of the smoothing parameter.
There is also the handy option of allowing castep to automatically perform a finite basis set correction. Set
finite_basis_corr : auto
The correction is made by performing several total energy calculations for a given configuration of atoms but using different cutoff energies in each one. The variation in the total energy with the logarithm of the cutoff energy extrapolated from these singlepoint calculations enables the evaluation of the smoothing parameter. The user can specify.
finite_basis_npoints : n
The number of different cutoff energies at which to evaluate the total energy and work out basis_de_dloge. The default value is 3.
If an auto finite basis set correction has been performed in the first run of a job it need not be repeated at the
start of the continuation run. The value of basis_de_dloge is given in the .castep file and this can be
included in the .param file along with
finite_basis_corr : manual
Another neat trick is the use of finite basis set corrections to efficiently converge with respect to the basis set
(see this section for more details about convergence with respect to the basis set). The
Allows specification of the spacing, in eV, between the finite_basis_npoints:. These are evenly spaced
up to the specified cutoff energy with a default spacing of 5eV. If the user was to specify
finite_basis_npoints : 7
finite_basis_spacing : 50
and a cutoff energy of 350eV then singlepoint calculations would be performed at cutoff energies of 50, 100, 150, 200, 250, 300, 350. This would enable very efficient calculations of the convergence of the total energy with respect to the cutoff energy for a given k-point mesh.