def evolve_single_step(self, evolve_dt): latest_bra_mps, latest_ket_mps = self.latest_mps if len(self.evolve_times) % 2 == 1: latest_ket_mps = latest_ket_mps.evolve(self.h_mpo, evolve_dt) else: latest_bra_mps = latest_bra_mps.evolve(self.h_mpo, -evolve_dt) return BraKetPair(latest_bra_mps, latest_ket_mps)
def init_mps(self): mmax = self.optimize_config.procedure[0][0] i_mps = Mps.random(self.h_mpo.model, self.nexciton, mmax, 1) i_mps.optimize_config = self.optimize_config energy, i_mps = gs.optimize_mps(i_mps, self.h_mpo) if self.spectratype == "emi": operator = "a" else: operator = r"a^\dagger" dipole_mpo = Mpo.onsite(self.model, operator, dipole=True) if self.temperature != 0: beta = self.temperature.to_beta() # print "beta=", beta # thermal_mpo = Mpo.exact_propagator(self.model, -beta / 2.0, space=self.space1, shift=self.shift1) # ket_mps = thermal_mpo.apply(i_mps) # ket_mps.normalize() # no test, don't know work or not i_mpdm = MpDm.from_mps(i_mps) tp = ThermalProp(i_mpdm, self.h_mpo, exact=True, space=self.space1) tp.evolve(None, 1, beta / 2j) ket_mps = tp.latest_mps else: ket_mps = i_mps a_ket_mps = dipole_mpo.apply(ket_mps, canonicalise=True) a_ket_mps.canonical_normalize() if self.temperature != 0: a_bra_mps = ket_mps.copy() else: a_bra_mps = a_ket_mps.copy() return BraKetPair(a_bra_mps, a_ket_mps)
def evolve_single_step(self, evolve_dt): latest_bra_mps, latest_ket_mps = self.latest_mps latest_ket_mps = latest_ket_mps.evolve_exact(self.h_mpo, evolve_dt, self.space2) if self.temperature != 0: latest_bra_mps = latest_bra_mps.evolve_exact( self.h_mpo, evolve_dt, self.space1) return BraKetPair(latest_bra_mps, latest_ket_mps)
def init_mps(self): if self.spectratype == "emi": operator = "a" else: operator = r"a^\dagger" dipole_mpo = Mpo.onsite(self.model, operator, dipole=True) a_ket_mps = dipole_mpo.apply(self.get_imps(), canonicalise=True) a_ket_mps.canonical_normalize() a_ket_mps.evolve_config = self.evolve_config a_bra_mps = a_ket_mps.copy() return BraKetPair(a_bra_mps, a_ket_mps)
def evolve_single_step(self, evolve_dt): latest_bra_mps, latest_ket_mps = self.latest_mps latest_ket_mps = latest_ket_mps.evolve(self.h_mpo, evolve_dt) return BraKetPair(latest_bra_mps, latest_ket_mps)