# 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. 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. PhysicalQuantity of type energy
energyQmax()
Returns: The maximum wave number which is preconditioned, given in energy units, i.e 0.5 * qmax * qmax. PhysicalQuantity of type energy
maximumDamping()
Returns: The damping of the q=0 component. float

## 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.