|
Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
|
Diagonal G²/(G²+q0²) residual filter. More...
#include <kerker.hpp>
Inheritance diagram for q3::KerkerPreconditioner:Public Member Functions | |
| KerkerPreconditioner (const std::vector< Real > &g_squared, Real q0_squared, int first_nonzero_g_index) | |
| void | apply (std::vector< Complex > &residual_g) const override |
| std::string | name () const override |
| const std::vector< Real > & | weights () const |
| The filter values, exposed for the local-TF inner preconditioner and for tests. | |
Public Member Functions inherited from q3::Preconditioner | |
| virtual | ~Preconditioner ()=default |
| virtual void | update (const std::vector< Real > &) |
Diagonal G²/(G²+q0²) residual filter.
Definition at line 26 of file kerker.hpp.
|
inline |
| g_squared | |G|² per G-vector, in bohr⁻². |
| q0_squared | screening wavevector squared, in bohr⁻². |
| first_nonzero_g_index | index of the first G ≠ 0 component; every component below it is left untouched. |
Definition at line 34 of file kerker.hpp.
|
inlineoverridevirtual |
Apply the preconditioner to one G-space residual channel, in place.
Callers pass the TOTAL charge channel only: the magnetization channel has no Coulomb kernel to screen, and damping its long-wavelength components would freeze slow moment relaxation. The G = 0 component must be left untouched — it is fixed by charge conservation, and the mixing metric excludes it for the same reason.
| residual_g | residual in reciprocal space; overwritten with the preconditioned residual. |
Implements q3::Preconditioner.
Definition at line 50 of file kerker.hpp.
|
inlineoverridevirtual |
Implements q3::Preconditioner.
Definition at line 46 of file kerker.hpp.
|
inline |
The filter values, exposed for the local-TF inner preconditioner and for tests.
Definition at line 60 of file kerker.hpp.