24 : scf_state_(scf_state) {}
28 if (kpoint_index != cached_kpoint_index_) {
32 (*scf_state_.
kpoint_grid)[kpoint_index].coordinates,
35 pseudopotential_basis.pseudopotential_set(),
36 pseudopotential_basis.beta_function_table(),
39 pseudopotential_basis.total_number_of_projectors(),
41 cached_kpoint_index_ = kpoint_index;
43 return cached_projectors_;
49 mutable int cached_kpoint_index_ = -1;
Hands out one k-point's projectors at a time; see the file comment.
const NormConservingPlanewaveBasis & pseudopotential_basis() const
const std::vector< std::vector< int > > & kpoint_g_vector_indices() const
const std::vector< int > & kpoint_number_of_plane_waves() const
MeanFieldProjectorSource over a live SCF state; see the file comment.
ScfStateMeanFieldProjectorSource(const NormConservingPlanewaveKohnShamSCFState &scf_state)
Holds a reference, as ScfStateMeanFieldBandSource does: the state outlives the record.
const Matrix< Complex > & projectors(int kpoint_index) const override
See MeanFieldProjectorSource::projectors(); recomputed only when the k-point changes.
void compute_kleinman_bylander_projectors(const Vector3D &k_crystal, const Crystal &crystal_structure, const PlanewaveBasis &planewave_basis, const PseudopotentialSet &pseudopotential_set, const BetaFunctionTable &beta_function_table, const std::vector< int > &g_vector_indices, int number_of_plane_waves, int total_number_of_projectors, Matrix< Complex > &kleinman_bylander_potential)
const NormConservingPlanewaveKohnShamQuantumSystem & quantum_system() const override
const KPointsGrid * kpoint_grid
const Crystal * crystal_structure
const PlanewaveBasis * planewave_basis