LMP2, generally, converges only down to a limitedly small value. The reason may be improper transformation when transforming residuals into updated amplitudes.
|
basis = fock_basis_local[k] |
|
virt_e = fock_energies_local[k] |
|
# dual = numpy.linalg.inv(basis).T |
|
v = common.transform(v, basis) |
|
|
|
denominator = fock_occ[k[0], k[0]] + fock_occ[k[1], k[1]] - virt_e[:, numpy.newaxis] - virt_e[numpy.newaxis, :] |
|
dt = v / denominator |
|
dt_pao = common.transform(dt, basis.T) |
|
|
|
result[k] = dt_pao |
|
t2_diff = max(t2_diff, numpy.abs(dt_pao).max()) |
LMP2, generally, converges only down to a limitedly small value. The reason may be improper transformation when transforming residuals into updated amplitudes.
local-pyscf/lmp2.py
Lines 101 to 111 in 7fca442