Octopus
mixing_preconditioner_oct_m Module Reference

Functions/Subroutines

subroutine, public dkerker_preconditioner (der, q_0, delta_f, f_out)
 Kerker preconditioner for the mixing operator in real space. More...
 
subroutine, public zkerker_preconditioner (der, q_0, delta_f, f_out)
 Kerker preconditioner for the mixing operator in real space. More...
 

Function/Subroutine Documentation

◆ dkerker_preconditioner()

subroutine, public mixing_preconditioner_oct_m::dkerker_preconditioner ( type(derivatives_t), intent(in)  der,
real(real64), intent(in)  q_0,
real(real64), dimension(:), intent(in), contiguous  delta_f,
real(real64), dimension(:), intent(out)  f_out 
)

Kerker preconditioner for the mixing operator in real space.

Computes the preconditioned residual:

\[ f_{out} = (\Delta - q_0^2)^{-1} \Delta \delta f \]

by multiplying through by \((\Delta - q_0^2)\) and solving the linear system:

\[ (\Delta - q_0^2) f_{out} = \Delta \delta f \]

for \(f_{out}\). The implementation follows [Shiihara et. al. 2008 Modelling Simul. Mater. Sci. Eng. 16 035004] (https: the mixing coefficient in the preconditioned residual.

If the starting density does not already integrate to the fully correct total charge, an additional charge correction treatment is necessary:

\[ f_{out} = f_{out} + \frac{a}{V} \int_{V} \delta f d\mathbr{r} \]

See [Winkelmann et. al.](https:

Parameters
[in]derDerivatives
[in]q_0Kerker parameter
[in]delta_fResidual
[out]f_outPreconditioned Residual

Definition at line 225 of file mixing_preconditioner.F90.

◆ zkerker_preconditioner()

subroutine, public mixing_preconditioner_oct_m::zkerker_preconditioner ( type(derivatives_t), intent(in)  der,
real(real64), intent(in)  q_0,
complex(real64), dimension(:), intent(in), contiguous  delta_f,
complex(real64), dimension(:), intent(out)  f_out 
)

Kerker preconditioner for the mixing operator in real space.

Computes the preconditioned residual:

\[ f_{out} = (\Delta - q_0^2)^{-1} \Delta \delta f \]

by multiplying through by \((\Delta - q_0^2)\) and solving the linear system:

\[ (\Delta - q_0^2) f_{out} = \Delta \delta f \]

for \(f_{out}\). The implementation follows [Shiihara et. al. 2008 Modelling Simul. Mater. Sci. Eng. 16 035004] (https: the mixing coefficient in the preconditioned residual.

If the starting density does not already integrate to the fully correct total charge, an additional charge correction treatment is necessary:

\[ f_{out} = f_{out} + \frac{a}{V} \int_{V} \delta f d\mathbr{r} \]

See [Winkelmann et. al.](https:

Parameters
[in]derDerivatives
[in]q_0Kerker parameter
[in]delta_fResidual
[out]f_outPreconditioned Residual

Definition at line 393 of file mixing_preconditioner.F90.