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)
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)
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)
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)
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'
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)
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()