Factorization of a density-fitting Coulomb metric V = (P|Q).
More...
#include <coulomb_metric.h>
|
| 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.
|
| |
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.
◆ 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 |
◆ uses_cholesky()
| bool occ::qm::CoulombMetric::uses_cholesky |
( |
| ) |
const |
|
inline |
The documentation for this class was generated from the following file: