29 virtual void apply(
int number_of_plane_waves,
31 Complex* overlap_wavefunction)
const = 0;
40 int number_of_vectors,
42 Complex* overlap_wavefunctions)
const {
43 for (
int vector_index = 0; vector_index < number_of_vectors; ++vector_index) {
44 apply(number_of_plane_waves,
45 wavefunctions +
static_cast<size_t>(vector_index) * number_of_plane_waves,
46 overlap_wavefunctions +
47 static_cast<size_t>(vector_index) * number_of_plane_waves);
65 std::vector<Complex>& overlap_matrix)
const = 0;
virtual void apply(int number_of_plane_waves, const Complex *wavefunction, Complex *overlap_wavefunction) const =0
virtual void build_dense_matrix(int number_of_plane_waves, std::vector< Complex > &overlap_matrix) const =0
virtual void apply_batch(int number_of_plane_waves, int number_of_vectors, const Complex *wavefunctions, Complex *overlap_wavefunctions) const
virtual bool is_identity() const
virtual ~OverlapOperator()=default
std::complex< double > Complex