|
Quantum 3xplorer (Q3)
An AI-native quantum simulation engine
|
#include <init.hpp>
Inheritance diagram for q3::OverlapOperator:Public Member Functions | |
| virtual | ~OverlapOperator ()=default |
| virtual void | apply (int number_of_plane_waves, const Complex *wavefunction, Complex *overlap_wavefunction) const =0 |
| virtual void | apply_batch (int number_of_plane_waves, int number_of_vectors, const Complex *wavefunctions, Complex *overlap_wavefunctions) const |
| virtual void | build_dense_matrix (int number_of_plane_waves, std::vector< Complex > &overlap_matrix) const =0 |
| virtual bool | is_identity () const |
|
virtualdefault |
|
pure virtual |
Implemented in q3::PseudopotentialOverlapOperator, and q3::UltrasoftPseudopotentialOverlapOperator.
Referenced by apply_batch().
|
inlinevirtual |
Apply S to multiple wavefunctions in batch. wavefunctions[vector_index * number_of_plane_waves + g] and overlap_wavefunctions[vector_index * number_of_plane_waves + g]. Default: calls per-vector apply() in a loop. Subclasses may override for efficiency.
Reimplemented in q3::UltrasoftPseudopotentialOverlapOperator.
Definition at line 39 of file init.hpp.
References apply().
Referenced by q3::apply_overlap_operator_to_orbitals(), q3::GPUPlanewaveSubspaceManager::orthogonalize_batch(), and q3::SerialPlanewaveSubspaceManager::orthogonalize_batch().
|
pure virtual |
Build the dense overlap matrix S (column-major, number_of_plane_waves × number_of_plane_waves) used by the direct solver. An orthonormal basis leaves it empty (S = I is implicit in the standard solver).
Implemented in q3::PseudopotentialOverlapOperator, and q3::UltrasoftPseudopotentialOverlapOperator.
|
inlinevirtual |
Returns true if S = I (norm-conserving case). When true, Davidson can skip S·ψ ZGEMM and S_sub construction.
Reimplemented in q3::PseudopotentialOverlapOperator, and q3::UltrasoftPseudopotentialOverlapOperator.