Three-centre integrals (μν|P) over the screened canonical shell pairs (q <= p, as IntegralEngine::shellpairs()), packed: one contiguous np x nq block per stored shell pair, every auxiliary function a column.
More...
|
| void | build (IntegralEngine &engine, const CoulombMetric &metric, size_t max_bytes=unlimited) |
| | Stores the pairs that fit max_bytes, from engine at its current operator, and folds metric in when all of them fit.
|
| void | clear () |
| bool | built () const |
| bool | empty () const |
| bool | complete () const |
| | Every screened pair is stored, and the metric is folded in.
|
| size_t | bytes () const |
| size_t | num_aux () const |
| | Auxiliary columns: fewer than the auxiliary basis once folded with a metric whose eigendecomposition fallback dropped vectors.
|
| const ShellPairList & | unstored () const |
| Mat | contract (const std::vector< Mat > &densities) const |
| | Column c: sum over the stored pairs of D_c(μ,ν) B(μν,P), each D_c a symmetric nbf x nbf matrix.
|
| std::vector< Mat > | expand (const Mat &x) const |
| | Matrix c: sum_P B(μν,P) x(P,c) over the stored pairs, symmetric.
|
| std::vector< Mat > | exchange (const std::vector< Mat > &C, const std::vector< std::pair< int, int > > &pairs) const |
| | sum_P (B_P C_s)(B_P C_t)^T for every requested (s, t), on a complete store.
|
| Mat | half_transform (Eigen::Ref< const Mat > C_left, Eigen::Ref< const Mat > C_right) const |
| | B(i*nR + a, P) = sum_μν C_left(μ,i) C_right(ν,a) B_P(μν) on a complete store, i.e.
|
Three-centre integrals (μν|P) over the screened canonical shell pairs (q <= p, as IntegralEngine::shellpairs()), packed: one contiguous np x nq block per stored shell pair, every auxiliary function a column.
Pairs the shell-pair screen drops are never stored, and only one triangle is, so the store is a fraction of the dense nbf x nbf x naux one.
Under a byte budget only some pairs are stored – those most expensive to recompute per byte first – and unstored() lists the rest for the caller to compute directly. A complete store is folded with the Coulomb metric as soon as it is built, B = (μν|P) L^-T, so exchange and the correlated methods need no metric solve; a partial store keeps the raw integrals.