Kerker

class Kerker(energy_q0=None, energy_qmax=None, maximum_damping=None)

Class for representing Kerker style preconditioner

Parameters:
  • energy_q0 (PhysicalQuantity of type energy) – The Kerker q0 parameter, given in energy units. i.e 0.5 * q0 * q0`.
    Default: 0.01 * Hartree

  • energy_qmax (PhysicalQuantity of type energy) – The maximum wave number which is preconditioned, given in energy units, i.e 0.5 * qmax * qmax. NOTE: For Plane wave calculation this is ignored.
    Default: 0.25 * Hartree

  • maximum_damping (float) – The damping of the q=0 component. This should be between 0 and 1.
    Default: 0.01

energyQ0()
Returns:

The Kerker q0 parameter, given in energy units. i.e 0.5 * q0 * q0.

Return type:

PhysicalQuantity of type energy

energyQmax()
Returns:

The maximum wave number which is preconditioned, given in energy units, i.e 0.5 * qmax * qmax.

Return type:

PhysicalQuantity of type energy

maximumDamping()
Returns:

The damping of the q=0 component.

Return type:

float

uniqueString()

Return a unique string representing the state of the object.

Usage Examples

Use a Kerker preconditioner.

iteration_control_parameters = IterationControlParameters(
preconditioner=Kerker(energy_q0=0.01*Hartree, energy_qmax=0.25*Hartree, maximum_damping=0.01),
)

Notes

  • The Kerker preconditioner damps Fourier components of the electron density according to the scheme

\[\begin{split}\begin{cases} f \times \frac{q^2+\frac{f_0}{f} \, q_0^2}{q^2+q_0^2} & \quad \text{if} \,\, q \le q_{max}\\ f & \quad \text{if} \,\, q > q_{max}. \\ \end{cases}\end{split}\]

In this equation, \(q_{max}\) , \(q_{0}\) , and \(f_0\) are specified through the Kerker object parameters energy_qmax, energy_q0, and maximum_damping. The parameter f is specified through the IterationControlParameters variable damping_factor.

  • The default parameters are appropriate for HamiltonianVariable mixing.