Decomposes the particle hole Coulomb vertex into the occupied factor orbitals , the virtual factor orbitals , and the Coulom factors . The decomposition is done with a regularized alternating least squares (RALS) algorithm, requiring only a few dozen steps for sufficient convergence.
More...
#include <ParticleHoleCoulombVertexDecomposition.hpp >
virtual std::string getName ()
ParticleHoleCoulombVertexDecomposition (std::vector< Argument > const &argumentList)
virtual ~ParticleHoleCoulombVertexDecomposition ()
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)
◆ ParticleHoleCoulombVertexDecomposition()
ParticleHoleCoulombVertexDecomposition::ParticleHoleCoulombVertexDecomposition
(
std::vector< Argument > const &
argumentList )
◆ ~ParticleHoleCoulombVertexDecomposition()
ParticleHoleCoulombVertexDecomposition::~ParticleHoleCoulombVertexDecomposition
(
)
virtual
◆ dryEvaluateMp2()
void ParticleHoleCoulombVertexDecomposition::dryEvaluateMp2
(
DryTensor < complex > &
Gamma )
protected
Performs a dry run of evaluating the MP2 energy for the given Coulomb vertex.
◆ dryFit()
Performs a dry run of one iteration in fitting the factor orbitals and the Coulomb factors according to the given algorithm.
◆ dryRun()
void ParticleHoleCoulombVertexDecomposition::dryRun
(
)
virtual
The dryRun estimates resource consumption, especially memory and processor time.
Reimplemented from sisi4s::Algorithm .
◆ evaluateMp2()
double ParticleHoleCoulombVertexDecomposition::evaluateMp2
(
Tensor < complex > &
Gamma )
protected
Evaluates the MP2 energy for the given Coulomb vertex.
◆ evaluateMp2Error()
void ParticleHoleCoulombVertexDecomposition::evaluateMp2Error
(
)
protected
Evaluates and prints the error of the MP2 energy between the current decomposition and the full MP2 energy.
◆ fit()
void ParticleHoleCoulombVertexDecomposition::fit
(
int64_t
iterationsCount )
protected
Performs one iteration in fitting the factor orbitals and the Coulomb factors according to the given algorithm.
◆ getName()
virtual std::string sisi4s::ParticleHoleCoulombVertexDecomposition::getName
(
)
inline virtual
◆ normalizePi()
void ParticleHoleCoulombVertexDecomposition::normalizePi
(
Tensor < complex > &
Pi )
protected
Normalizes the given factor orbitals, such that .
◆ realizePi()
void ParticleHoleCoulombVertexDecomposition::realizePi
(
Tensor < complex > &
Pi )
protected
Discards the imaginary part of the given factor orbitals.
◆ run()
void ParticleHoleCoulombVertexDecomposition::run
(
)
virtual
◆ DEFAULT_DELTA
double constexpr sisi4s::ParticleHoleCoulombVertexDecomposition::DEFAULT_DELTA = 0.0
static constexpr
◆ DEFAULT_EPSILON_STEP
int constexpr sisi4s::ParticleHoleCoulombVertexDecomposition::DEFAULT_EPSILON_STEP = 0
static constexpr
◆ DEFAULT_MAX_ITERATIONS
int64_t constexpr sisi4s::ParticleHoleCoulombVertexDecomposition::DEFAULT_MAX_ITERATIONS = 32
static constexpr
◆ DEFAULT_NORMALIZED_FACTOR_ORBITALS
bool constexpr sisi4s::ParticleHoleCoulombVertexDecomposition::DEFAULT_NORMALIZED_FACTOR_ORBITALS = false
static constexpr
◆ DEFAULT_REAL_FACTOR_ORBITALS
bool constexpr sisi4s::ParticleHoleCoulombVertexDecomposition::DEFAULT_REAL_FACTOR_ORBITALS = false
static constexpr
◆ DEFAULT_REGULARIZATION_FRICTION
double constexpr sisi4s::ParticleHoleCoulombVertexDecomposition::DEFAULT_REGULARIZATION_FRICTION = 0.125
static constexpr
◆ DEFAULT_SWAMPING_THRESHOLD
double constexpr sisi4s::ParticleHoleCoulombVertexDecomposition::DEFAULT_SWAMPING_THRESHOLD = 1.0
static constexpr
◆ Delta
double sisi4s::ParticleHoleCoulombVertexDecomposition::Delta
The Frobenius norm of the difference between and its decomposition.
◆ epsilonStep
int sisi4s::ParticleHoleCoulombVertexDecomposition::epsilonStep
The number of steps between two evaluations of the error in the MP2 energy of the decomposition. A value below 1 results in no evaluations.
◆ Gamma0Gai
Tensor <complex >* sisi4s::ParticleHoleCoulombVertexDecomposition::Gamma0Gai
The fit .
◆ GammaGai
Tensor <complex >* sisi4s::ParticleHoleCoulombVertexDecomposition::GammaGai
The Coulomb vertex restricted to a particle and a hole index.
◆ LambdaGR
Tensor <complex >* sisi4s::ParticleHoleCoulombVertexDecomposition::LambdaGR
The Coulomb factors in the particle/hole decomposition.
◆ mp2Energy
double sisi4s::ParticleHoleCoulombVertexDecomposition::mp2Energy
protected
◆ normalizedFactorOrbitals
bool sisi4s::ParticleHoleCoulombVertexDecomposition::normalizedFactorOrbitals
Whether the factor orbitals are required to be normalized, i.e. .
◆ PiaR
Tensor <complex >* sisi4s::ParticleHoleCoulombVertexDecomposition::PiaR
The conjugated factor orbitals for virtual states .
◆ PiiR
Tensor <complex >* sisi4s::ParticleHoleCoulombVertexDecomposition::PiiR
The factor orbitals for occupied states .
◆ rank
int64_t sisi4s::ParticleHoleCoulombVertexDecomposition::rank
The rank of the tensor rank decomposition.
◆ realFactorOrbitals
bool sisi4s::ParticleHoleCoulombVertexDecomposition::realFactorOrbitals
Whether the factor orbitals are required to be real.
◆ registrar_
◆ regularizationEstimatorLambdaGR
◆ regularizationEstimatorPiaR
◆ regularizationEstimatorPiiR
Estimators for the regularization parameter during the alternating least squares fits. They estimate the regularization parameter in each iteration from the swamping factor in the previous iteration.
The documentation for this class was generated from the following files: