예제 #1
0
def eval(Sigma, omega_vec, k_vec):
  Sigma_in = 1.0j / htr_to_meV
  width = 5.0 / htr_to_meV
  inv_sigma2 = (3.0 / width)**2
  shift = np.linspace(-width, +width, num=21)
  weight_vec = np.sqrt(0.5 * inv_sigma2 / np.pi) * np.exp(-inv_sigma2 * shift**2)
  weight_vec /= np.sum(weight_vec)

  spec = np.zeros((omega_vec.size, k_vec.size))
  for iomega in range(omega_vec.size):
    for ikpt in range(k_vec.size):
      ReS = 0; ImS = 0
      for (omega, weight) in zip(omega_vec[iomega] + shift, weight_vec):
        kk = k_vec[ikpt]
        eps_k = -Sigma.sigma * 0.5 * kk**2 / Sigma.eff_mass
        Sigma_in = (omega - eps_k) + 0.1j / htr_to_meV

        (Sigma_out, it) = scf.self_energy(1, eta, Sigma, kk, Sigma_in)
        ReS += Sigma_out.real * weight
        ImS += Sigma_out.imag * weight

      spec[iomega, ikpt] += -ImS / (np.pi * ((omega - eps_k - ReS)**2 + ImS**2))

  return spec
예제 #2
0
파일: mass.py 프로젝트: rmargine/papers
from __future__ import print_function
from bose_einstein import bose_einstein
from constant import htr_to_K, htr_to_meV, eta
import argparser
import mass_factor
import norm_k
import numpy as np
import scf
import system

args = argparser.read_argument('Evaluate electron-phonon mass')
thres = args.thres / htr_to_meV
Sigma = system.make_data(args.dft, args.vb)

for temp in np.arange(1.0, args.temp, 1.0):

    beta = htr_to_K / temp
    Sigma.bose_einstein = bose_einstein(Sigma.freq, beta)
    Sigma_in = 1j / htr_to_meV
    _, zz = scf.self_energy(1, thres, Sigma, eta, Sigma_in)
    lam = 1.0 / zz - 1.0
    mf = mass_factor.eval(lam, args.method)

    print(temp, mf, zz, lam)
예제 #3
0
파일: step.py 프로젝트: rmargine/papers
from __future__ import print_function
from bose_einstein import bose_einstein
from constant import htr_to_K, htr_to_meV, htr_to_eV
import argparser
import norm_k
import numpy as np
import scf
import system

args = argparser.read_argument('Evaluate step-like feature in electron-phonon coupling')
thres = args.thres / htr_to_meV
beta = htr_to_K / args.temp

Sigma = system.make_data(args.dft, args.vb)
Sigma.bose_einstein = bose_einstein(Sigma.freq, beta)

for energy_meV in np.arange(0.0, args.energy, 0.5):

  energy = energy_meV / htr_to_meV
  kk = norm_k.eval(Sigma.eff_mass, energy)

  Sigma_in = 1e-3j / htr_to_meV
  Sigma_out, it = scf.self_energy(args.method, thres, Sigma, kk, Sigma_in)

  if args.vb: real_energy = -energy
  else: real_energy = energy

  print(real_energy * htr_to_meV, -Sigma_out.imag * htr_to_meV, it)
예제 #4
0
from __future__ import print_function
from bose_einstein import bose_einstein
from constant import htr_to_K, htr_to_meV, htr_to_THz
import argparser
import norm_k
import numpy as np
import scf
import system

args = argparser.read_argument('Evaluate electron-phonon lifetime')
thres = args.thres / htr_to_meV
Sigma = system.make_data(args.dft, args.vb)
norm_k = norm_k.eval(Sigma.eff_mass, args.energy / htr_to_meV)

for temp in np.arange(1.0, args.temp, 1.0):

    beta = htr_to_K / temp
    Sigma.bose_einstein = bose_einstein(Sigma.freq, beta)
    Sigma_in = 0.1j / htr_to_meV
    (Sigma_out, it) = scf.self_energy(args.method, thres, Sigma, norm_k,
                                      Sigma_in)

    print(temp, -2.0 * Sigma_out.imag * htr_to_THz,
          Sigma_out.imag * htr_to_meV, it)