Jengine
Overview
Jengine is the density-fitted Coulomb (“J”) engine for computing Coulomb matrices, potentials and gradients using an auxiliary (density-fitting) basis. The J-engine accepts primary and auxiliary libintx.Basis objects and a two-center auxiliary metric \(V = (P|Q)\) and uses an internal DFSolver that applies \(V^{-1}\) to vectors.
Constructor
Jengine(basis, aux_basis, V,
vinv_type='cholesky', vinv_device='cuda',
vinv_mem_fraction=0.5)
Parameters
basis (libintx.Basis) - primary basis (collection of Gaussian shells).
aux_basis (libintx.Basis) - auxiliary basis used for density fitting.
V (ndarray, shape (naux, naux)) - two-center metric \((P|Q)\).
vinv_type (str) - solver type:
"cholesky" | "lu" | "cholesky_inv" | "cholesky_mp".vinv_device (str) - computation device:
"cuda"or"host".vinv_mem_fraction (float) - max fraction of GPU memory used by the solver (default
0.5).
Properties
basis,aux_basis- read-only.nao- number of atomic orbitals in primary basis.naux- number of auxiliary AOs.vinv- internallibintx.DFSolverinstance.cutoff- screening cutoff (get/set) when screening is configured.
Methods
set_screening(pp, ijij, cutoff=1e-20)- configure Schwarz-type ERI screening: * pp (naux) - per-aux-shell screening estimates. * ijij (nsh x nsh) - per-shell-pair estimates for the primary basis.compute_j(D, scale=0.5)- compute the Coulomb matrix \(J\) (returns row-major symmetric matrix).compute_pot(D)- compute Coulomb potential vector \(\sum_{kl}(P|kl) D_{kl}\).compute_jgrad(D)- compute gradients; returns a tuple (Jgrad, X, Xgrad).
Notes
The default scaling
scale=0.5corresponds to the RHF PySCF convention.The J-engine uses a DFSolver object to represent the \(V^{-1}\) operator which may execute on GPU or host depending on the constructor arguments.