Source code for EPWpy.utilities.kronig_penny

import numpy as np
#from scipy.interpolate import interp1d

[docs] def calc_epr(file_inp): A=np.loadtxt(file_inp) omega= A[:,0] eps2 = A[:,1] eps1=np.zeros((len(A[:,1]),1),dtype=float) omega_calc=omega nr=[] dw=omega[2]-omega[1] for i in range(len(omega_calc)): for j in range(len(omega)): if(omega[j]!=omega_calc[i]): eps1[i]=eps1[i]+((2.0*dw/np.pi)*omega[j]*eps2[j]/(omega[j]**2-omega_calc[i]**2)) eps1[i] = eps1[i]+1.0 nr.append(np.sqrt(np.sqrt(eps1[i]**2+eps2[i]**2)+eps2[i])/np.sqrt(2)) return(nr,eps1,eps2)
[docs] def calc_epr_real(file_inp,T,N,f='ind'): A=np.loadtxt(file_inp) omega= A[:,0] eps2 = A[:,1] omega_inp=np.linspace(min(omega),max(omega),N) #eps2_n=interp1d(omega,eps2) eps2_inp= np.interp(omega_inp,omega,eps2) #eps2_n(omega_inp) nr=[] dw=omega_inp[2]-omega_inp[1] eps1=np.zeros((len(omega_inp),1),dtype=float) # print(omega_inp,eps2_inp) for i in range(len(omega_inp)): for j in range(len(omega_inp)): if(omega_inp[j]!=omega_inp[i]): eps1[i]=eps1[i]+((2.0*dw/np.pi)*omega_inp[j]*eps2_inp[j]/(omega_inp[j]**2-omega_inp[i]**2)) eps1[i] = eps1[i]+T nr.append(np.sqrt(np.sqrt(eps1[i]**2+eps2_inp[i]**2)+eps2_inp[i])/np.sqrt(2)) return(nr,eps1,eps2_inp,omega_inp)