Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
Loading...
Searching...
No Matches
q3::KerkerPreconditioner Class Reference

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 > &)
 

Detailed Description

Diagonal G²/(G²+q0²) residual filter.

Definition at line 26 of file kerker.hpp.

Constructor & Destructor Documentation

◆ KerkerPreconditioner()

q3::KerkerPreconditioner::KerkerPreconditioner ( const std::vector< Real > &  g_squared,
Real  q0_squared,
int  first_nonzero_g_index 
)
inline
Parameters
g_squared|G|² per G-vector, in bohr⁻².
q0_squaredscreening wavevector squared, in bohr⁻².
first_nonzero_g_indexindex of the first G ≠ 0 component; every component below it is left untouched.

Definition at line 34 of file kerker.hpp.

Member Function Documentation

◆ apply()

void q3::KerkerPreconditioner::apply ( std::vector< Complex > &  residual_g) const
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.

Parameters
residual_gresidual in reciprocal space; overwritten with the preconditioned residual.

Implements q3::Preconditioner.

Definition at line 50 of file kerker.hpp.

◆ name()

std::string q3::KerkerPreconditioner::name ( ) const
inlineoverridevirtual

Implements q3::Preconditioner.

Definition at line 46 of file kerker.hpp.

◆ weights()

const std::vector< Real > & q3::KerkerPreconditioner::weights ( ) const
inline

The filter values, exposed for the local-TF inner preconditioner and for tests.

Definition at line 60 of file kerker.hpp.


The documentation for this class was generated from the following file: