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.e0.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
, andmaximum_damping
. The parameterf
is specified through the IterationControlParameters variabledamping_factor
.
The default parameters are appropriate for
HamiltonianVariable
mixing.