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

#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
 

Detailed Description

Definition at line 24 of file init.hpp.

Constructor & Destructor Documentation

◆ ~OverlapOperator()

virtual q3::OverlapOperator::~OverlapOperator ( )
virtualdefault

Member Function Documentation

◆ apply()

virtual void q3::OverlapOperator::apply ( int  number_of_plane_waves,
const Complex *  wavefunction,
Complex *  overlap_wavefunction 
) const
pure virtual

◆ apply_batch()

virtual void q3::OverlapOperator::apply_batch ( int  number_of_plane_waves,
int  number_of_vectors,
const Complex *  wavefunctions,
Complex *  overlap_wavefunctions 
) const
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().

◆ build_dense_matrix()

virtual void q3::OverlapOperator::build_dense_matrix ( int  number_of_plane_waves,
std::vector< Complex > &  overlap_matrix 
) const
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.

◆ is_identity()

virtual bool q3::OverlapOperator::is_identity ( ) const
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.

Definition at line 55 of file init.hpp.


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