mol.build() t = time.time() #cderi = r_incore.cholesky_eri(mol, int3c='int3c2e_spinor', verbose=4) #def fjk2c(mol, dm, *args, **kwargs): # n2c = dm.shape[0] # cderi_ll = cderi.reshape(-1,n2c,n2c) # vj = numpy.zeros((n2c,n2c), dtype=dm.dtype) # vk = numpy.zeros((n2c,n2c), dtype=dm.dtype) # rho = (numpy.dot(cderi, dm.T.reshape(-1))) # vj = numpy.dot(rho, cderi).reshape(n2c,n2c) # v1 = lib.einsum('pij,jk->pik', cderi_ll, dm) # vk = lib.einsum('pik,pkj->ij', v1, cderi_ll) # return vj, vk mf = x2c.RHF(mol).density_fit() dm = mf.get_init_guess() + 0.0j mf.with_df.auxbasis = 'def2-svp-jkfit' #mf.get_jk = fjk2c #mf.direct_scf = False ehf = mf.scf(dm) print('Time %.3f (sec)' % (time.time() - t)) ncore = 2 nao, nmo = mf.mo_coeff.shape nocc = mol.nelectron - ncore nvir = nmo - nocc - ncore mo_core = mf.mo_coeff[:, :ncore] mo_occ = mf.mo_coeff[:, ncore:ncore + nocc] mo_vir = mf.mo_coeff[:, ncore + nocc:] co = mo_occ
from pyscf import gto mol = gto.Mole() mol.basis = 'unc-dzp-dk' mol.atom = ''' O 0.000000 0.000000 0.118351 H 0.000000 0.761187 -0.469725 H 0.000000 -0.761187 -0.469725 ''' mol.charge = 0 mol.spin = 0 mol.symmetry = 0 mol.verbose = 4 mol.build() mf = x2c.RHF(mol) dm = mf.get_init_guess() + 0.1j mf.kernel(dm) ncore = 2 eri_ao = mol.intor('int2e_spinor') pt = MP2(mf) pt.frozen = ncore pt.kernel() rdm1 = pt.make_rdm1() rdm2 = pt.make_rdm2() c = mf.mo_coeff nmo = mf.mo_coeff.shape[1] eri_mo = ao2mo.general(eri_ao, (c, c, c, c)).reshape(nmo, nmo, nmo, nmo) hcore = mf.get_hcore()