コード例 #1
0
ファイル: zerot.py プロジェクト: sailfish009/Renormalizer
 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)
コード例 #2
0
    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)
コード例 #3
0
 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)
コード例 #4
0
ファイル: zerot.py プロジェクト: sailfish009/Renormalizer
 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)
コード例 #5
0
ファイル: zerot.py プロジェクト: sailfish009/Renormalizer
 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)