g2e = ao2mo.restore(1, ao2mo.kernel(mol, mo_coeff), n_mo) ecore = mol.energy_nuc() fd = FCIDUMP(pg='c1', n_sites=n_mo, n_elec=na + nb, twos=na - nb, ipg=0, uhf=False, h1e=h1e, g2e=g2e, orb_sym=orb_sym, const_e=ecore, mu=0) hamil = Hamiltonian(fd, flat=True) fd.write("H10.STO6G.R1.8.FCIDUMP.C1") mpo2 = hamil.build_qc_mpo() mpo2, _ = mpo2.compress(left=True, cutoff=1E-12, norm_cutoff=1E-12) mpe = MPE(ket, mpo_rot, ket) print('total step = ', nstep) for it in range(0, nstep): cur_t = it * dt mpe.tddmrg(bdims=[1000], dt=dt, iprint=2, n_sweeps=1, n_sub_sweeps=2, normalize=True) print(it, 'ener = ', MPE(ket, mpo2, ket)[0:2].expectation)
ket = bra.copy() dt = 0.1 eta = 0.05 t = 100.0 nstep = int(t / dt) mpe = MPE(ket, mpo, ket) rtgf = np.zeros((nstep, ), dtype=complex) print('total step = ', nstep) for it in range(0, nstep): cur_t = it * dt mpe.tddmrg(bdims=[500], dt=-dt * 1j, iprint=2, n_sweeps=1, n_sub_sweeps=2, normalize=False) rtgf[it] = np.dot(bra.conj(), ket) print("=== T = %10.5f EX = %20.15f + %20.15f i" % (cur_t, rtgf[it].real, rtgf[it].imag)) def gf_fft(eta, dt, rtgf): dt = abs(dt) npts = len(rtgf) frq = np.fft.fftfreq(npts, dt) frq = np.fft.fftshift(frq) * 2.0 * np.pi fftinp = -1j * rtgf * np.exp(-eta * dt * np.arange(0, npts))