Loading...
Searching...
No Matches
q3::PlanewaveWavefunctionProjectionCalculator Class Reference

#include <init.hpp>

Public Member Functions

 PlanewaveWavefunctionProjectionCalculator (const Crystal &crystal_structure, const PseudopotentialSet &pseudopotential_set)
 
std::vector< std::vector< Real > > compute_projections_at_kpoint (int kpoint_index, int kpoint_state_index, int number_of_plane_waves, int number_of_bands, const std::vector< int > &g_vector_indices, const Crystal &crystal_structure, const KPointsGrid &kpoint_grid, const PlanewaveBasis &planewave_basis, const PseudopotentialSet &pseudopotential_set, const PlanewaveKohnShamQuantumSystem &quantum_system, const OverlapOperator *overlap_operator) const
 
int number_of_orbitals () const
 
const std::vector< AtomicOrbitalLabel > & orbital_labels () const
 

Detailed Description

Definition at line 56 of file init.hpp.

Constructor & Destructor Documentation

◆ PlanewaveWavefunctionProjectionCalculator()

q3::PlanewaveWavefunctionProjectionCalculator::PlanewaveWavefunctionProjectionCalculator ( const Crystal &  crystal_structure,
const PseudopotentialSet &  pseudopotential_set 
)
inline

Member Function Documentation

◆ compute_projections_at_kpoint()

std::vector< std::vector< Real > > q3::PlanewaveWavefunctionProjectionCalculator::compute_projections_at_kpoint ( int  kpoint_index,
int  kpoint_state_index,
int  number_of_plane_waves,
int  number_of_bands,
const std::vector< int > &  g_vector_indices,
const Crystal &  crystal_structure,
const KPointsGrid &  kpoint_grid,
const PlanewaveBasis &  planewave_basis,
const PseudopotentialSet &  pseudopotential_set,
const PlanewaveKohnShamQuantumSystem &  quantum_system,
const OverlapOperator *  overlap_operator 
) const
inline

Compute |<phi'_i|S|psi_nk>|^2 for one k-point: projections[band_index][orbital_index]. kpoint_state_index indexes quantum_system's flattened (spin, kpoint) storage, matching PlanewaveKohnShamQuantumSystem::wavefunction_band_data's convention. overlap_operator is null for norm-conserving pseudopotentials (S = I); ultrasoft and PAW callers pass create_overlap_operator()'s result for this k-point.

S is Hermitian, so <phi'_i|S|psi> = <S phi'_i|psi>: applying it once to the orthogonalized orbitals leaves the band loop below the same contraction it performs when S is the identity, rather than a second operator application per band.

Definition at line 86 of file init.hpp.

References q3::apply_overlap_operator_to_orbitals(), q3::build_atomic_orbitals_g_space(), q3::compute_orbital_overlap_matrix_in_s_metric(), q3::lowdin_orthogonalize_orbitals(), and q3::PlanewaveKohnShamQuantumSystem::wavefunction_band_data().

◆ number_of_orbitals()

int q3::PlanewaveWavefunctionProjectionCalculator::number_of_orbitals ( ) const
inline

Definition at line 73 of file init.hpp.

◆ orbital_labels()

const std::vector< AtomicOrbitalLabel > & q3::PlanewaveWavefunctionProjectionCalculator::orbital_labels ( ) const
inline

Stable per-orbital (atom, shell, l, m) labels, in the same order as every projection row returned below.

Definition at line 69 of file init.hpp.


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