Cusp correction¶
When Gaussian basis sets are used, molecular orbitals generally fail to satisfy the
electron–nucleus cusp condition at nuclear positions. The casino.Cusp class implements
the correction scheme of Ma, Towler, Drummond and Needs [12].
Physical motivation¶
The exact wavefunction must satisfy the Kato cusp condition [8] at every nucleus:
where \(Z_I\) is the nuclear charge, \(r_{iI}\) is the electron–nucleus distance and \(\langle\Psi\rangle\) is the spherical average of the wavefunction about the nuclear position (the spherical average was later shown to be redundant [15]). For a determinant of orbitals it is sufficient that every orbital which is nonzero at a given nucleus obeys the cusp condition there [12]. Gaussian functions have zero derivative at the nucleus (they are smooth at the origin), so a linear combination of Gaussians cannot satisfy this condition directly: the local energy then diverges as \(-Z_I/r_{iI}\) when an electron approaches a nucleus and shows wild oscillations close to it, which increase the VMC variance and can lead to severe bias or even numerical instabilities in DMC [12].
The Kato condition relates only the value and the first radial derivative of the wavefunction at the coalescence point; higher-order coalescence conditions, constraining the second and higher derivatives, are also known [13] [14] [16].
Correction scheme¶
Each molecular orbital \(\psi\) expanded in a Gaussian basis can be written as:
where \(\phi\) is the contribution from s-type Gaussians centered on the nucleus in question and \(\eta\) contains all other contributions. The corrected orbital is:
Inside a cusp correction radius \(r_c\), the s-part is replaced by:
where \(C\) is a shift chosen so that \(\tilde{\phi} - C\) is of one sign within \(r_c\), and \(p(r)\) is a quartic polynomial:
Since \(\eta\) is cuspless (it arises from Gaussians of nonzero angular momentum centered on the nucleus in question and from tails of Gaussians centered on other sites), the cusp condition for the corrected orbital reads [12]:
The five coefficients \(\alpha_i\) are fixed by five constraints [12]: continuity of \(\tilde{\phi}\) and of its first and second derivatives at \(r = r_c\), the cusp condition at \(r = 0\), and a chosen value of \(\tilde{\phi}(0)\). With these constraints the equations for \(\alpha_i\) are solved analytically, and \(\tilde{\phi}(0)\) is then varied to minimise the maximum square deviation of the effective one-electron local energy
from an “ideal” curve \(E_L^{\text{ideal}}(r) = Z^2(\beta_0 + \beta_1 r^2 + \beta_2 r^3 + \ldots + \beta_7 r^7)\), whose coefficients \(\beta_1 \ldots \beta_7\) were obtained by fitting to the 1s orbital of the carbon atom (\(\beta_0\) depends on the particular atom and its environment) [12].
Choice of the correction radius¶
The maximum possible cusp correction radius is \(r_{c,\max} = 1/Z\). The actual \(r_c\) for each orbital and nucleus is set to the largest radius less than \(r_{c,\max}\) at which the deviation of the effective one-electron local energy of the uncorrected orbital from the ideal curve exceeds \(Z^2/c_c\), where \(c_c\) is a universal parameter with a default value of 50 [12].
Enabling cusp correction¶
Cusp correction is applied automatically when atom_basis_type : gaussian is set in the
input file (it is disabled for Slater-type orbitals, which can satisfy the cusp condition
exactly).
To obtain the cusp polynomial coefficients from CASINO for comparison, add to your input:
cusp_info : T
and set POLYPRINT=.true. in gaussians.f90 before compiling CASINO.
Initialisation¶
casino.Cusp is created by casino.cusp.CuspFactory when cusp correction is enabled
and passed to casino.Slater. It is not normally instantiated directly by the user.
The correction is applied transparently inside slater.value_matrix,
slater.gradient_matrix, and higher derivatives.
Properties¶
orbital_signArray of shape
(natom, norbitals)storing the sign of each corrected orbital at each nuclear position.shiftArray of shape
(natom, norbitals)storing the constant shift \(C\) for each orbital–nucleus pair.rcArray of shape
(natom, norbitals)storing the cusp correction radii.alphaArray of shape
(5, natom, norbitals)storing the quartic polynomial coefficients \(\alpha_0 \ldots \alpha_4\).