Gradient code analysis and parallelization ideas

Eχ = Dμνfμνχ + IμνSμνχ + Γ(μνλσ)<μν||λσ>χ


Gradients in serial ACESII

1. DENS

Calculate one and two-particle density matrix elements and store them on disk
Calculate I(pq) and X(pq) intermediates and store them on disk

2. ANTI

Re-sort density matrix to Mulliken order

3. BCKTRN

Back-transform density matrix to AO basis

4. VDINT

Calculate two-electron integral derivatives and contract them with two-particle AO density matrix.
Calculate one-electron integral derivatives and contract them with one-particle AO density matrix.
Calculate AO overlap matrix derivatives and contract them with I(pq) and X(pq) intermediates.


Parallel ACESII gradients

From VCC and LAMBDA we get converged half-transformed t(i,μ), t(ij,μν) and λ(μ,i), λ(μν,ij).

Instead of creating and storing two-particle density matrix, we calculate one-particle normal and energy-weighed density matrices, D(pq) and I(pq). Another two-index quantity which needs to be calculated in Phase I is the X(pq) global intermediate (GI), which is used to iteratively solve for the occupied-virtual part of D.


I(pq) and X(pq) intermediates expressed in terms of Γ and W


Phase I (direct integrals):

Storage :



Phase II (direct integral derivatives):