SIRIUS 7.5.0
Electronic structure library and applications
|
Describes operations on a function type used for mixing. More...
#include <mixer.hpp>
Public Types | |
using | type = FUNC |
Public Member Functions | |
FunctionProperties (std::function< double(const FUNC &)> size_, std::function< double(const FUNC &, const FUNC &)> inner_, std::function< void(double, FUNC &)> scal_, std::function< void(const FUNC &, FUNC &)> copy_, std::function< void(double, const FUNC &, FUNC &)> axpy_, std::function< void(double, double, FUNC &, FUNC &)> rotate_) | |
Public Attributes | |
std::function< double(const FUNC &)> | size |
std::function< double(const FUNC &, const FUNC &)> | inner |
std::function< void(double, FUNC &)> | scal |
std::function< void(const FUNC &, FUNC &)> | copy |
std::function< void(double, const FUNC &, FUNC &)> | axpy |
std::function< void(double, double, FUNC &, FUNC &)> | rotate |
Describes operations on a function type used for mixing.
The properties contain functions, which determine the behaviour of a given type during mixing. The inner product function result is used for calculating mixing parameters. If a function should not contribute to generation of mixing parameters, the inner product function should always return 0.
using sirius::mixer::FunctionProperties< FUNC >::type = FUNC |
|
inline |
[in] | size_ | Function, which returns a measure of size of the (global) function. |
[in] | inner_ | Function, which computes the (global) inner product. This determines the contribution to mixing parameters rmse. |
[in] | scal_ | Function, which scales the input (x = alpha * x). |
[in] | copy_ | Function, which copies from one object to the other (y = x). |
[in] | axpy_ | Function, which scales and adds one object to the other (y = alpha * x + y). |
|
inline |
std::function<double(const FUNC&)> sirius::mixer::FunctionProperties< FUNC >::size |
std::function<double(const FUNC&, const FUNC&)> sirius::mixer::FunctionProperties< FUNC >::inner |
std::function<void(double, FUNC&)> sirius::mixer::FunctionProperties< FUNC >::scal |
std::function<void(const FUNC&, FUNC&)> sirius::mixer::FunctionProperties< FUNC >::copy |
std::function<void(double, const FUNC&, FUNC&)> sirius::mixer::FunctionProperties< FUNC >::axpy |
std::function<void(double, double, FUNC&, FUNC&)> sirius::mixer::FunctionProperties< FUNC >::rotate |