occ
Loading...
Searching...
No Matches
occ::qm::CoulombMetric Class Reference

Factorization of a density-fitting Coulomb metric V = (P|Q). More...

#include <coulomb_metric.h>

Public Member Functions

void compute (const Mat &V, double lindep=1e-12)
 Factorize V. lindep is relative to the largest eigenvalue.
 
bool uses_cholesky () const
 
Eigen::Index num_discarded () const
 
bool initialized () const
 
template<typename Derived >
Mat solve (const Eigen::MatrixBase< Derived > &b) const
 V^-1 b.
 
template<typename Derived >
Mat half_inverse_apply (const Eigen::MatrixBase< Derived > &b) const
 L^-1 b, where L L^T = V (or its eigen equivalent U diag(w)^-1/2): the half-inverse that turns 3-centre integrals into DF B tensors.
 

Detailed Description

Factorization of a density-fitting Coulomb metric V = (P|Q).

Cholesky whenever V is numerically positive definite, otherwise a symmetric eigendecomposition with the near-null space discarded. Two situations need the second path, and both otherwise fail badly:

  • an auxiliary basis that is close to linearly dependent for the given geometry (Eigen's LLT then reports failure, and solving with the failed factorization returns garbage);
  • the long-range metric (P|erf(omega r)/r|Q) of a range-separated hybrid, whose attenuated kernel damps the high-exponent auxiliary functions so hard that a JK-fitting basis is near-singular under it.

Member Function Documentation

◆ compute()

void occ::qm::CoulombMetric::compute ( const Mat V,
double  lindep = 1e-12 
)

Factorize V. lindep is relative to the largest eigenvalue.

◆ half_inverse_apply()

template<typename Derived >
Mat occ::qm::CoulombMetric::half_inverse_apply ( const Eigen::MatrixBase< Derived > &  b) const
inline

L^-1 b, where L L^T = V (or its eigen equivalent U diag(w)^-1/2): the half-inverse that turns 3-centre integrals into DF B tensors.

Has fewer rows than naux when the eigen path drops vectors.

◆ initialized()

bool occ::qm::CoulombMetric::initialized ( ) const
inline

◆ num_discarded()

Eigen::Index occ::qm::CoulombMetric::num_discarded ( ) const
inline

◆ solve()

template<typename Derived >
Mat occ::qm::CoulombMetric::solve ( const Eigen::MatrixBase< Derived > &  b) const
inline

V^-1 b.

◆ uses_cholesky()

bool occ::qm::CoulombMetric::uses_cholesky ( ) const
inline

The documentation for this class was generated from the following file: