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

Builds metric-folded density-fitting "B" tensors for correlated methods. More...

#include <df_integrals.h>

Public Member Functions

 DFIntegrals (IntegralEngineDF &df_engine, size_t memory_budget)
 memory_budget (bytes): if the dense (μν|P) store comfortably fits, it is built once and reused; otherwise B is built integral-direct per call.
 
size_t nbf () const
 
size_t naux () const
 
bool uses_direct () const
 True if B is built integral-direct (no dense (μν|P) store).
 
Mat build_b_tilde (Eigen::Ref< const Mat > C_left, Eigen::Ref< const Mat > C_right) const
 Build the metric-folded B tensor for the given MO coefficient blocks.
 

Detailed Description

Builds metric-folded density-fitting "B" tensors for correlated methods.

Given the 3-center AO integrals (μν|P) and the Coulomb metric V=(P|Q) owned by an IntegralEngineDF, build_b_tilde returns B̃ such that (ia|jb) = Σ_P B̃(ia,P) B̃(jb,P) i.e. the metric is folded in once (B̃ = B·L⁻ᵀ with V = L Lᵀ), so downstream code recovers MO integrals with a single GEMM and no per-pair metric solves.

Depending on the memory budget, the 3-center integrals are either stored densely once and reused (fast, O(nbf²·naux) memory) or streamed integral-direct per call (bounded memory, no dense store). Either way the returned B̃ is identical.

Constructor & Destructor Documentation

◆ DFIntegrals()

occ::qm::DFIntegrals::DFIntegrals ( IntegralEngineDF df_engine,
size_t  memory_budget 
)

memory_budget (bytes): if the dense (μν|P) store comfortably fits, it is built once and reused; otherwise B is built integral-direct per call.

Member Function Documentation

◆ build_b_tilde()

Mat occ::qm::DFIntegrals::build_b_tilde ( Eigen::Ref< const Mat C_left,
Eigen::Ref< const Mat C_right 
) const

Build the metric-folded B tensor for the given MO coefficient blocks.

C_left: (nbf x nL) C_right: (nbf x nR) Returns (nL*nR x naux); the row for (i,a) is i*nR + a.

◆ naux()

size_t occ::qm::DFIntegrals::naux ( ) const
inline

◆ nbf()

size_t occ::qm::DFIntegrals::nbf ( ) const
inline

◆ uses_direct()

bool occ::qm::DFIntegrals::uses_direct ( ) const
inline

True if B is built integral-direct (no dense (μν|P) store).


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