Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
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)
Esempio n. 4
0
from __future__ import print_function
from bose_einstein import bose_einstein
from constant import htr_to_K, eta, htr_to_meV
import self_energy
import norm_k
import numpy as np
import argparser
import system

args = argparser.read_argument('Evaluate self energy depending on the smearing.')
beta = htr_to_K / args.temp
Sigma = system.make_data(args.dft, args.vb, beta)
norm_k = norm_k.eval(Sigma.eff_mass, args.energy / htr_to_meV)

print("#", norm_k)

for gamma_meV in np.arange(-50.0, 50.0, 0.5):
  Sigma_in = gamma_meV * 1.0j / htr_to_meV
  if abs(Sigma_in) < eta: Sigma_in += eta * 1.0j

  res = self_energy.eval(Sigma, norm_k, Sigma_in)
  print(gamma_meV, res.real * htr_to_meV, res.imag * htr_to_meV)
Esempio n. 5
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 numpy as np

args = argparser.read_argument('Renormalize EPW calculation')
window = args.energy / htr_to_meV
if args.vb: offset = -8.75333295715961e-03
else: offset = 8.53193322468371e-03

if args.vb: band_str = '36'
else: band_str = '37'
temp_str = '%03dK' % args.temp
if args.acoustic:
    temp_str = '%dK' % args.temp
    qpt_str = '10000'
elif args.temp == 1:
    qpt_str = '050000'
elif args.temp == 150:
    qpt_str = '100000'
elif args.temp == 300:
    qpt_str = '100000'
else:
    print("temperature " + str(args.temp) + " not available")
    exit()

for dir_str in ('gx', 'gy', 'gz'):

    if args.acoustic:
        filename = 'data/epw_all_28424_' + temp_str + '_5meV_acoustic_only/data_' + dir_str + '_' + band_str + '_10000.dat'
Esempio n. 6
0
from __future__ import print_function
from bose_einstein import bose_einstein
from constant import htr_to_K, htr_to_meV, bohr_to_A, eta
import argparser
import norm_k
import numpy as np
import spectral
import system

args = argparser.read_argument(
    'Evaluate spectral function of electron-phonon coupling')
beta = htr_to_K / args.temp
energy = args.energy / htr_to_meV

Sigma = system.make_data(args.dft, args.vb)
Sigma.bose_einstein = bose_einstein(Sigma.freq, beta)
norm_k = norm_k.eval(Sigma.eff_mass, energy)

omega_vec = np.linspace(-energy, energy, num=400)
spec_gamma = spectral.eval(Sigma, omega_vec, np.array([eta]))
shift = omega_vec[np.argmax(spec_gamma)]
print('# shift = ', shift * htr_to_meV)

omega_vec += shift
k_vec = np.linspace(eta, norm_k, num=100)
spec = spectral.eval(Sigma, omega_vec, k_vec)
for iomega in range(omega_vec.size):
    for ikpt in range(k_vec.size):
        print(k_vec[ikpt] / bohr_to_A,
              (omega_vec[iomega] - shift) * htr_to_meV,
              spec[iomega, ikpt] / htr_to_meV)
Esempio n. 7
0
from __future__ import print_function
from bose_einstein import bose_einstein
from constant import htr_to_K, htr_to_meV, htr_to_fs
import argparser
import norm_k
import numpy as np
import scf
import system

args = argparser.read_argument(
    'Evaluate average scattering time due to electron-phonon coupling')
thres = args.thres / htr_to_meV
(position, weight) = np.polynomial.laguerre.laggauss(100)
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)
    energy = position / beta
    Sigma_in = 0.1j / htr_to_meV

    integral = 0
    for (eps, w) in zip(energy, weight):
        kk = norm_k.eval(Sigma.eff_mass, eps)
        Sigma_out, it = scf.self_energy(args.method, thres, Sigma, kk,
                                        Sigma_in)
        tau = -1.0 / (2.0 * Sigma_out.imag)
        integral += w * tau
        #print(eps / beta, w, eps * htr_to_meV, tau * htr_to_fs)
    print(temp, 4.0 / (3.0 * np.sqrt(np.pi)) * integral * htr_to_fs)
    #exit()