def test_pole(self): T = 0.1 w_n = self.matsubara(T) E = 0.3 Sigma = w_n * 0 Sigma0 = 0 N = density(w_n, E, Sigma, Sigma0) self.assertEqual(N, self.fermi(E/T))
def test_zero(self): T = 0.01 w_n = self.matsubara(T) E = 0 Sigma = w_n * 0 Sigma0 = 0 N = density(w_n, E, Sigma, Sigma0) self.assertEqual(N, 0.5)
def test_pole(self): T = 0.1 w_n = self.matsubara(T) E = 0.3 Sigma = w_n * 0 Sigma0 = 0 N = density(w_n, E, Sigma, Sigma0) self.assertEqual(N, self.fermi(E / T))
def test_sigma_pole(self): T = 0.05 w_n = self.matsubara(T, N = 10000) E = 0.3 V2 = 0.5 Sigma0 = 0.314159 Sigma = V2/(1j*w_n) + Sigma0 N = density(w_n, E, Sigma, Sigma0) a = (E+Sigma0 + np.sqrt((E+Sigma0)**2 + 4*V2))/2 b = (E+Sigma0 - np.sqrt((E+Sigma0)**2 + 4*V2))/2 Nref = a/(a-b) * self.fermi(a/T) - b/(a-b) * self.fermi(b/T) self.assertAlmostEqual(N, Nref)
def test_sigma_pole(self): T = 0.05 w_n = self.matsubara(T, N=10000) E = 0.3 V2 = 0.5 Sigma0 = 0.314159 Sigma = V2 / (1j * w_n) + Sigma0 N = density(w_n, E, Sigma, Sigma0) a = (E + Sigma0 + np.sqrt((E + Sigma0)**2 + 4 * V2)) / 2 b = (E + Sigma0 - np.sqrt((E + Sigma0)**2 + 4 * V2)) / 2 Nref = a / (a - b) * self.fermi(a / T) - b / (a - b) * self.fermi( b / T) self.assertAlmostEqual(N, Nref)