I am trying to implement a program which calculates the time-dependent Hubbard Hamiltonian with hopping t*exp(-i*phi(t)) if the system is driven by some periodic electric field.
In tenpy/models/fermions_hubbard.py we put t as well as t2 (defined later)
Code: Select all
for u1, u2, dx in self.lat.nearest_neighbors:
self.add_coupling(t, u1, 'Cdu', u2, 'Cu', dx, 'JW', True)
self.add_coupling(t2, u1, 'Cdu', u2, 'Cu', -dx, 'JW', True) # t2 has been put in place of t
self.add_coupling(t, u1, 'Cdd', u2, 'Cd', dx, 'JW', True)
self.add_coupling(t2, u1, 'Cdd', u2, 'Cd', -dx, 'JW', True) # h.c.
self.add_coupling(V, u1, 'Ntot', u2, 'Ntot', dx)
Finally, in the main program, we can have a loop for time steps
Code: Select all
time_steps = 10000 # or any desired number of steps
for tsteps in range(time_steps):
t =cmath.exp(-1.0*math.sin(omega*deltat)*1j) # here phi(t) = math.sin(omega*deltat) related to my problem, anything can be assigned
t2 =cmath.exp(1.0*math.sin(omega*deltat)*1j)
model_params = dict(L=L, t=t, t2=t2, U=U, V=V, mu=0., bc_MPS='finite', cons_N='N', cons_Sz='Sz')
M = Hubbard_efield_Chain(model_params)
eng = tebd.Engine(psi, M, tebd_params)
eng.run()
psi = eng.psi