sisi4s
|
Decomposes the Coulomb vertex
#include <CoulombVertexDecomposition.hpp>
Public Member Functions | |
virtual std::string | getName () |
CoulombVertexDecomposition (std::vector< Argument > const &argumentList) | |
virtual | ~CoulombVertexDecomposition () |
virtual void | run () |
virtual void | dryRun () |
The dryRun estimates resource consumption, especially memory and processor time. | |
![]() | |
Algorithm (std::vector< Argument > const &argumentList) | |
virtual | ~Algorithm () |
virtual std::string | getName ()=0 |
virtual void | run ()=0 |
virtual void | dryRun () |
The dryRun estimates resource consumption, especially memory and processor time. | |
bool | isArgumentGiven (std::string const &argumentName) |
std::string | getTextArgument (std::string const &argumentName) |
std::string | getTextArgument (std::string const &argumentName, std::string const &defaultValue) |
bool | getBooleanArgument (std::string const &name) |
bool | getBooleanArgument (std::string const &name, bool const &defaultValue) |
int64_t | getIntegerArgument (std::string const &argumentName) |
int64_t | getIntegerArgument (std::string const &argumentName, int64_t const defaultValue) |
real | getRealArgument (std::string const &argumentName) |
real | getRealArgument (std::string const &argumentName, real const defaultValue) |
template<typename F = real, typename T = Tensor<F>> | |
T * | getTensorArgument (std::string const &argumentName) |
template<typename F = real, typename C = std::vector<F>> | |
C * | getContainerArgument (std::string const &argumentName) |
template<typename F = real, typename C = std::vector<F>> | |
void | allocateContainerArgument (std::string const &argumentName, C *container) |
std::vector< std::string > | getGivenArgumentNames () const |
void | checkArgumentsOrDie (const std::vector< std::string > args) const |
template<typename F = real, typename T = Tensor<F>> | |
void | allocatedTensorArgument (std::string const &argumentName, T *tensor) |
Specifies the location of an output tensor data. | |
void | setRealArgument (std::string const &argumentName, real const value) |
void | setIntegerArgument (std::string const &argumentName, int const value) |
real | getRealArgumentFromInteger (IntegerData *data) |
real | getRealArgumentFromTensor (TensorData< real > *data) |
template<typename F = real, typename T = Tensor<F>> | |
T * | getTensorArgumentFromReal (RealData *realData) |
Converts the given real data into a scalar tensor. | |
Data * | getArgumentData (std::string const &argumentName) |
Public Attributes | |
int64_t | rank |
The rank ![]() | |
double | Delta |
The Frobenius norm of the difference between ![]() | |
bool | realFactorOrbitals |
Whether the factor orbitals ![]() | |
bool | normalizedFactorOrbitals |
Whether the factor orbitals ![]() ![]() | |
bool | writeSubIterations |
Whether to write Delta after each part of one RALS iteration, where Delta is the Frobenius norm of ![]() | |
Tensor< complex > * | GammaGqr |
The full Coulomb vertex ![]() | |
Tensor< complex > * | composedGammaGqr |
The fit ![]() | |
CTF::Matrix< complex > * | PiqR |
The conjugated factor orbitals ![]() | |
CTF::Matrix< complex > * | PirR |
The factor orbitals ![]() | |
CTF::Matrix< complex > * | LambdaGR |
The full Coulomb factors ![]() | |
AlternatingLeastSquaresRegularizationEstimator * | regularizationEstimator |
Estimator for the regularization parameter during the alternating least squares fits. They estimate the regularization parameter ![]() | |
![]() | |
std::string | note |
bool | fallible = false |
std::map< std::string, std::string > | arguments |
Static Public Attributes | |
static sisi4s::AlgorithmRegistrar< CoulombVertexDecomposition > | registrar_ |
static int64_t constexpr | DEFAULT_RANK_SIZE = -1 |
static double constexpr | DEFAULT_RANK_FACTOR = 3.0 |
static constexpr int64_t | DEFAULT_MAX_ITERATIONS = 32 |
static constexpr double | DEFAULT_DELTA = 0.0 |
static constexpr double | DEFAULT_SWAMPING_THRESHOLD = 1.0 |
static constexpr double | DEFAULT_REGULARIZATION_FRICTION = 0.125 |
static constexpr bool | DEFAULT_REAL_FACTOR_ORBITALS = false |
static constexpr bool | DEFAULT_NORMALIZED_FACTOR_ORBITALS = false |
static constexpr bool | DEFAULT_WRITE_SUB_ITERATIONS = false |
static const std::string | SYMMETRIC |
static const std::string | HERMITIAN |
static const std::string | PSEUDO_INVERSE |
Protected Member Functions | |
void | fit (int64_t iterationsCount) |
Performs one iteration in fitting the factor orbitals and the Coulomb factors according to the given algorithm. | |
void | dryFit (DryTensor< complex > *GammaGqr, DryTensor< complex > *PiqR, DryTensor< complex > *PirR, DryTensor< complex > *LambdaGR, DryTensor< complex > *composedGammaGqr) |
Performs a dry run of one iteration in fitting the factor orbitals and the Coulomb factors according to the given algorithm. | |
void | normalizePi (Tensor< complex > &Pi) |
Normalizes the given factor orbitals, such that ![]() | |
void | realizePi (Tensor< complex > &Pi) |
Discards the imaginary part of the given factor orbitals. | |
void | iterateQuadraticFactor (int iterationsCount) |
Solves the quadratically occurring factor Pi iteratively similar to the Babylonian algorithm. | |
void | computeOutgoingPi () |
Takes the incoming factor orbitals and computes the outgoing factor orbitals according to the chosen ansatz. The ansatz is specified as the string argument ansatz and can be one of the following: "symmetric", "hermitian", "pseudoInverse". | |
double | getDelta () |
Computes and returns the difference. | |
Decomposes the Coulomb vertex
CoulombVertexDecomposition::CoulombVertexDecomposition | ( | std::vector< Argument > const & | argumentList | ) |
|
virtual |
|
protected |
Takes the incoming factor orbitals and computes the outgoing factor orbitals according to the chosen ansatz. The ansatz is specified as the string argument ansatz and can be one of the following: "symmetric", "hermitian", "pseudoInverse".
|
protected |
Performs a dry run of one iteration in fitting the factor orbitals and the Coulomb factors according to the given algorithm.
|
virtual |
The dryRun estimates resource consumption, especially memory and processor time.
Reimplemented from sisi4s::Algorithm.
|
protected |
Performs one iteration in fitting the factor orbitals and the Coulomb factors according to the given algorithm.
|
protected |
Computes and returns the difference.
|
inlinevirtual |
Implements sisi4s::Algorithm.
|
protected |
Solves the quadratically occurring factor Pi iteratively similar to the Babylonian algorithm.
Normalizes the given factor orbitals, such that
Discards the imaginary part of the given factor orbitals.
|
virtual |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
double sisi4s::CoulombVertexDecomposition::Delta |
The Frobenius norm of the difference between
|
static |
CTF::Matrix<complex>* sisi4s::CoulombVertexDecomposition::LambdaGR |
The full Coulomb factors
bool sisi4s::CoulombVertexDecomposition::normalizedFactorOrbitals |
Whether the factor orbitals
CTF::Matrix<complex>* sisi4s::CoulombVertexDecomposition::PiqR |
The conjugated factor orbitals
CTF::Matrix<complex>* sisi4s::CoulombVertexDecomposition::PirR |
The factor orbitals
|
static |
int64_t sisi4s::CoulombVertexDecomposition::rank |
The rank
bool sisi4s::CoulombVertexDecomposition::realFactorOrbitals |
Whether the factor orbitals
|
static |
AlternatingLeastSquaresRegularizationEstimator* sisi4s::CoulombVertexDecomposition::regularizationEstimator |
Estimator for the regularization parameter during the alternating least squares fits. They estimate the regularization parameter
|
static |
bool sisi4s::CoulombVertexDecomposition::writeSubIterations |
Whether to write Delta after each part of one RALS iteration, where Delta is the Frobenius norm of