Skip to content

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 below rank_rtol relative to the largest absolute eigenvalue.

  • rank_rtol (float, default: 1e-12 ) –

    Relative eigenvalue cutoff used by "pseudoinverse".

Returns:

  • OrbVector

    Auxiliary coefficients with the same shape and orbital partition as

  • OrbVector

    basis_integrals.