def _ERIS(mc, mo, method='incore'): nmo = mo.shape[1] ncore = mc.ncore ncas = mc.ncas mem_incore, mem_outcore, mem_basic = mc_ao2mo._mem_usage(ncore, ncas, nmo) mem_now = lib.current_memory()[0] if (method == 'incore' and mc._scf._eri is not None and (mem_incore+mem_now < mc.max_memory*.9) or mc.mol.incore_anyway): ppaa, papa, pacv, cvcv = trans_e1_incore(mc, mo) else: max_memory = max(2000, mc.max_memory-mem_now) ppaa, papa, pacv, cvcv = \ trans_e1_outcore(mc, mo, max_memory=max_memory, verbose=mc.verbose) dmcore = numpy.dot(mo[:,:ncore], mo[:,:ncore].T) vj, vk = mc._scf.get_jk(mc.mol, dmcore) vhfcore = reduce(numpy.dot, (mo.T, vj*2-vk, mo)) eris = {} eris['vhf_c'] = vhfcore eris['ppaa'] = ppaa eris['papa'] = papa eris['pacv'] = pacv eris['cvcv'] = cvcv eris['h1eff'] = reduce(numpy.dot, (mo.T, mc.get_hcore(), mo)) + vhfcore return eris