26 void mix(
const std::vector<std::vector<Real>>& input_density,
27 std::vector<std::vector<Real>>& output_density,
28 int number_of_spin_components)
override {
29 for (
int spin_index = 0; spin_index < number_of_spin_components; ++spin_index) {
30 output_density[spin_index] =
42 const std::vector<Real>& output_density) = 0;
Abstract base class for all charge density mixers.
Mixer(Real mixing_parameter, int history_depth)
Mixer operating on real-space charge density vectors.
void set_preconditioner(Preconditioner preconditioner)
std::function< void(std::vector< Real > &)> global_reduce_
std::function< void(std::vector< Real > &)> Preconditioner
virtual std::vector< Real > mix_one_component(const std::vector< Real > &input_density, const std::vector< Real > &output_density)=0
void initialize(const MixerEnvironment &environment) override
Supply the representation context the mixer needs before the first mix().
void set_global_reduce(std::function< void(std::vector< Real > &)> global_reduce)
void mix(const std::vector< std::vector< Real > > &input_density, std::vector< std::vector< Real > > &output_density, int number_of_spin_components) override
Preconditioner preconditioner_
std::function< void(std::vector< Real > &)> global_reduce