Name

Kerker — Class for representing Kerker style preconditioner

Synopsis

Namespace: NanoLanguage
Kerker(
energy_q0,
energy_qmax,
maximum_damping
)

Description

Constructor for Kerker style preconditioner

Kerker Arguments

energy_q0

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

Type: PhysicalQuantity with an energy unit

Default: 0.01*Hartree
energy_qmax

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

Type: PhysicalQuantity with an energy unit

Default: 0.25*Hartree
maximum_damping

The damping of the q=0 component

Type: float between 0 and 1

Default: 0.01

Kerker Methods

A Kerker object provides the following methods:

Usage Examples

Use a Kerker preconditioner.

iteration_control_parameters = IterationControlParameters(
    damping_factor=0.2,
    preconditioner=Kerker(0.01*Hartree, 0.25*Hartree, 0.01),
    mixing_variable=HamiltonianVariable,
    number_of_history_steps=12,
    )

calculator = DeviceLCAOCalculator(
    iteration_control_parameters=iteration_control_parameters,
    )

Notes

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

\displaystyle

 \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}

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.