31 const Crystal& crystal_structure,
40 void apply(
int number_of_plane_waves,
42 Complex* overlap_wavefunction)
const override {
43 for (
int g_vector_index = 0; g_vector_index < number_of_plane_waves; g_vector_index++) {
44 overlap_wavefunction[g_vector_index] = wavefunction[g_vector_index];
59 std::vector<Complex>& overlap_matrix)
const override {
60 overlap_matrix.assign(number_of_plane_waves * number_of_plane_waves,
Complex(0.0, 0.0));
61 for (
int index = 0; index < number_of_plane_waves; index++) {
62 overlap_matrix[index + index * number_of_plane_waves] =
Complex(1.0, 0.0);
void build_dense_matrix(int number_of_plane_waves, std::vector< Complex > &overlap_matrix) const override
PseudopotentialOverlapOperator(const Crystal &crystal_structure, const NormConservingPlanewaveKohnShamQuantumSystem &quantum_system, const Matrix< Complex > &kleinman_bylander_potential, const execution::ExecutionPolicy &execution_policy)
const NormConservingPlanewaveKohnShamQuantumSystem & quantum_system_
void apply(int number_of_plane_waves, const Complex *wavefunction, Complex *overlap_wavefunction) const override
const execution::ExecutionPolicy & execution_policy_
const Matrix< Complex > & kleinman_bylander_potential_
bool is_identity() const override
const Crystal & crystal_structure_
std::complex< double > Complex