Loading...
Searching...
No Matches
q3::PlanewaveDavidsonWorkspace Class Referenceabstract

#include <davidson.hpp>

+ Inheritance diagram for q3::PlanewaveDavidsonWorkspace:

Public Member Functions

virtual ~PlanewaveDavidsonWorkspace ()=default
 
virtual const Complex * band_scratch () const =0
 
virtual Complex * band_scratch ()=0
 
virtual const Complex * basis_vectors () const =0
 
virtual Complex * basis_vectors ()=0
 
virtual const Complex * hamiltonian_basis_vectors () const =0
 
virtual Complex * hamiltonian_basis_vectors ()=0
 
Real * local_eigenvalues ()
 
const Real * local_eigenvalues () const
 
virtual const Complex * overlap_basis_vectors () const =0
 
virtual Complex * overlap_basis_vectors ()=0
 
virtual void resize (int maximum_basis_size, int number_of_plane_waves, int number_of_bands, bool overlap_is_identity)=0
 
virtual const Complex * subspace_hamiltonian () const =0
 
virtual Complex * subspace_hamiltonian ()=0
 
virtual const Complex * subspace_overlap () const =0
 
virtual Complex * subspace_overlap ()=0
 
virtual void sync_to_host ()=0
 

Protected Attributes

std::vector< Real > local_eigenvalues_host_
 

Detailed Description

Abstract workspace for Davidson diagonalizer.

Holds state resident in the appropriate memory space (CPU or GPU) to avoid memory copies during iterative steps.

Definition at line 61 of file davidson.hpp.

Constructor & Destructor Documentation

◆ ~PlanewaveDavidsonWorkspace()

virtual q3::PlanewaveDavidsonWorkspace::~PlanewaveDavidsonWorkspace ( )
virtualdefault

Member Function Documentation

◆ band_scratch() [1/2]

virtual const Complex * q3::PlanewaveDavidsonWorkspace::band_scratch ( ) const
pure virtual

◆ band_scratch() [2/2]

virtual Complex * q3::PlanewaveDavidsonWorkspace::band_scratch ( )
pure virtual

One band-sized buffer the solver borrows for a rotation that cannot be done in place – the subspace collapse and the final extraction. It replaced the Ritz vectors, H|Ritz>, S|Ritz> and residual arrays, which the correction-vector build made unnecessary.

Implemented in q3::SerialDavidsonWorkspace, and q3::GPUDavidsonWorkspace.

◆ basis_vectors() [1/2]

virtual const Complex * q3::PlanewaveDavidsonWorkspace::basis_vectors ( ) const
pure virtual

◆ basis_vectors() [2/2]

virtual Complex * q3::PlanewaveDavidsonWorkspace::basis_vectors ( )
pure virtual

◆ hamiltonian_basis_vectors() [1/2]

virtual const Complex * q3::PlanewaveDavidsonWorkspace::hamiltonian_basis_vectors ( ) const
pure virtual

◆ hamiltonian_basis_vectors() [2/2]

virtual Complex * q3::PlanewaveDavidsonWorkspace::hamiltonian_basis_vectors ( )
pure virtual

◆ local_eigenvalues() [1/2]

Real * q3::PlanewaveDavidsonWorkspace::local_eigenvalues ( )
inline

Definition at line 86 of file davidson.hpp.

References local_eigenvalues_host_.

◆ local_eigenvalues() [2/2]

const Real * q3::PlanewaveDavidsonWorkspace::local_eigenvalues ( ) const
inline

Definition at line 89 of file davidson.hpp.

References local_eigenvalues_host_.

◆ overlap_basis_vectors() [1/2]

virtual const Complex * q3::PlanewaveDavidsonWorkspace::overlap_basis_vectors ( ) const
pure virtual

◆ overlap_basis_vectors() [2/2]

virtual Complex * q3::PlanewaveDavidsonWorkspace::overlap_basis_vectors ( )
pure virtual

◆ resize()

virtual void q3::PlanewaveDavidsonWorkspace::resize ( int  maximum_basis_size,
int  number_of_plane_waves,
int  number_of_bands,
bool  overlap_is_identity 
)
pure virtual

Size the workspace for this k-point.

overlap_is_identity lets a norm-conserving run skip the S arrays entirely; the accessors then return the basis and Ritz buffers, which hold exactly the same values.

Implemented in q3::SerialDavidsonWorkspace, and q3::GPUDavidsonWorkspace.

◆ subspace_hamiltonian() [1/2]

virtual const Complex * q3::PlanewaveDavidsonWorkspace::subspace_hamiltonian ( ) const
pure virtual

◆ subspace_hamiltonian() [2/2]

virtual Complex * q3::PlanewaveDavidsonWorkspace::subspace_hamiltonian ( )
pure virtual

◆ subspace_overlap() [1/2]

virtual const Complex * q3::PlanewaveDavidsonWorkspace::subspace_overlap ( ) const
pure virtual

◆ subspace_overlap() [2/2]

virtual Complex * q3::PlanewaveDavidsonWorkspace::subspace_overlap ( )
pure virtual

◆ sync_to_host()

virtual void q3::PlanewaveDavidsonWorkspace::sync_to_host ( )
pure virtual

Member Data Documentation

◆ local_eigenvalues_host_

std::vector<Real> q3::PlanewaveDavidsonWorkspace::local_eigenvalues_host_
protected

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