Skip to content

Coulomb Screening

Options for the Coulomb screening solver.

interaction_cutoff#

interaction_cutoff: PositiveFloat = 10.0

solver#

solver: SolverConfig

obc#

obc: OBCConfig

lyapunov#

lyapunov: LyapunovConfig

temperature#

temperature: PositiveFloat = 300.0

epsilon_r#

epsilon_r: PositiveFloat = 1.0

left_temperature#

left_temperature: PositiveFloat | None = None

right_temperature#

right_temperature: PositiveFloat | None = None

num_connected_blocks#

num_connected_blocks: Literal['auto'] | PositiveInt = 'auto'

dos_peak_limit#

dos_peak_limit: PositiveFloat = 100.0

filtering_iteration_limit#

filtering_iteration_limit: PositiveInt = 1

align_polarization_to_complex_axes#

align_polarization_to_complex_axes: bool = True

Whether to discard parts of the polarization.

This affects the polarization in the following way: - The real parts of the lesser/greater polarization are discarded. - The imaginary part of the retarded polarization from previous computation is zeroed.

This happens before the imaginary part of the retarded polarization is computed from the lesser and greater parts as $\(\mathrm{Im}\left[\mathbf{P}^R\right] = \frac{\mathbf{P}^> - \mathbf{P}^<}{2i}\)$.

include_energy_renormalization#

include_energy_renormalization: Literal['self-energy', 'polarization', 'both'] = 'self-energy'

Whether to compute the real part of the retarded polarization and/or self-energy.

Possible values are "self-energy", "polarization", and "both".

The full retarded interaction quantities are complex-valued, where the real part is computed from the imaginary part using the Kramers-Kronig relations:

\[\mathbf{X}^{R} = \frac{\mathbf{X}^{>} - \mathbf{X}^{<}}{2} + \frac{1}{2\pi} \mathrm{p.v.} \int_{-\infty}^{\infty} dE' \, \frac{\mathbf{X}^{>} - \mathbf{X}^{<}}{E^{'} - E}\]

The real part only leads to only a shift in the energy, so it is often neglected:

\[\mathbf{X}^{R} \approx \frac{\mathbf{X}^{>} - \mathbf{X}^{<}}{2}\]

The default is to only include the real part in the Coulomb screening self-energy and not in the polarization.

The real part is computed using a Hilbert transform. For the Coulomb screening self-energy, this Hilbert transform can lead to errors at the edges of the energy window. The apply_hilbert_correction option can be used to apply a correction to the Hilbert transform to mitigate these errors.

apply_hilbert_correction#

apply_hilbert_correction: bool = False

Whether to apply the corrections for the edges of the energy window to the hilbert transform when computing the retarded self-energy.

Computing the correction is slightly more expensive.