30 std::function<void(
const std::vector<Complex>&, std::vector<Real>&)>
to_real_space;
52 [[nodiscard]]
virtual std::string
name()
const = 0;
69 virtual void mix(
const std::vector<std::vector<Real>>& input_density,
70 std::vector<std::vector<Real>>& output_density,
71 int number_of_spin_components) = 0;
Abstract base class for all charge density mixers.
virtual std::string name() const =0
Mixer(Real mixing_parameter, int history_depth)
int history_depth() const
Real last_residual_norm() const
virtual void mix(const std::vector< std::vector< Real > > &input_density, std::vector< std::vector< Real > > &output_density, int number_of_spin_components)=0
virtual void initialize(const MixerEnvironment &)
Supply the representation context the mixer needs before the first mix().
Real mixing_parameter() const
int first_nonzero_g_index
Real magnetization_metric_weight
std::function< void(const std::vector< Complex > &, std::vector< Real > &)> to_real_space
int number_of_smooth_g_vectors
std::shared_ptr< Preconditioner > preconditioner
std::function< void(const std::vector< Real > &, std::vector< Complex > &)> to_reciprocal_space
std::function< void(std::vector< Real > &)> global_reduce
std::vector< Real > charge_metric_weights