コード例 #1
0
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)
コード例 #2
0
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))