Density projection
An auxiliary-basis expansion approximates a density using a finite set of functions. Once the overlap matrix and the integrals of those functions against the density are known, projection reduces to a linear solve for the expansion coefficients.
Numerical basis calculations and Gaussian basis calculations provide ways to obtain these inputs. The solver below handles the projection equations independently of how the integrals were computed. The derivation and distinction between basis integrals and coefficients are explained in Density Projection.
calculate_aux_coeffs
calculate_aux_coeffs(
aux_overlap: HermOrbMatrix,
basis_integrals: OrbVector,
*,
solver: Literal["cholesky", "pseudoinverse"] = "cholesky",
rank_rtol: float = 1e-12,
) -> OrbVector
Solve ordinary L2 projection equations for auxiliary coefficients.
Each leading dimension of basis_integrals.array is an independent
right-hand side. The two inputs must use the same atom-partitioned
auxiliary-basis order.
Parameters:
-
aux_overlap(HermOrbMatrix) –Real dense auxiliary-basis overlap.
-
basis_integrals(OrbVector) –Real
<chi_lambda | f>values. -
solver(Literal['cholesky', 'pseudoinverse'], default:'cholesky') –"cholesky"requires a full-rank positive-definite overlap."pseudoinverse"accepts a rank-deficient Hermitian overlap and returns the minimum-norm solution after removing eigenvalues belowrank_rtolrelative to the largest absolute eigenvalue. -
rank_rtol(float, default:1e-12) –Relative eigenvalue cutoff used by
"pseudoinverse".
Returns: