25#ifndef __MIXER_FACTORY_HPP__
26#define __MIXER_FACTORY_HPP__
42template <
typename... FUNCS>
45 std::unique_ptr<
Mixer<FUNCS...>> mixer;
47 if (mix_cfg.
type() ==
"linear") {
51 else if (mix_cfg.
type() ==
"broyden1" || mix_cfg.
type() ==
"anderson") {
54 }
else if (mix_cfg.
type() ==
"anderson_stable") {
56 }
else if (mix_cfg.
type() ==
"broyden2") {
60 RTE_THROW(
"wrong type of mixer");
Contains definition and implementation sirius::Anderson.
Contains definition and implementation sirius::Anderson_stable.
Contains definition and implementation of sirius::Broyden2.
auto type() const
Type of the mixer.
auto linear_mix_rms_tol() const
RMS tolerance above which the linear mixing is triggered.
auto beta0() const
Mixing ratio in case of initial linear mixing.
auto beta() const
Mixing parameter.
auto beta_scaling_factor() const
Scaling factor for mixing parameter.
auto max_history() const
Number of history steps for Broyden-type mixers.
Abstract mixer for variadic number of Function objects, which are described by FunctionProperties.
Contains definition and implementation of sirius::Linear_mixer.
Contains definition and implementation of sirius::Mixer base class.
std::unique_ptr< Mixer< FUNCS... > > Mixer_factory(config_t::mixer_t const &mix_cfg)
Select and create a new mixer.
Namespace of the SIRIUS library.
Contains definition and implementation of sirius::Simulation_parameters class.