Jsum = np.zeros((len(r))) Efr = Ef + Uvals(U0, r) / 2.0 for i in range(-Mmax, Mmax + 1): Jsum += 2.0 * (special.jn(i, (Ef * r)))**2 drhohm = 2.0 - Jsum drhohm += (special.jn(-Mmax, (Ef * r)))**2 drhohm -= (special.jn(1 + Mmax, (Ef * r)))**2 drhohm *= -abs(Ef) / 4.0 / np.pi * Uvals(U0, r) return drhohm for i in range(0, len(Emins)): rho0s[:, i, 0] = diracsolver.find_rho(Ev0, rbg, LDOS0, Emins[i], Emax0) rho0s[:, i, 1] = diracsolver.find_rho(Ev0, rbg, LDOS0, Emin0, Emaxs[i]) RPA0 = -1.0 / 16.0 * Uvals(1.0, rbg)**3 RPA[:, i] = polaris_generic(rbg, Emins[i], Uq_Coulomb) for t in range(0, len(Us)): x = Us[t] figure() title('drho = %g' % x) ldosfile = np.load('ldos-U0=%g-N=%d-Mmax=%d-B=0.npz' % (x, N, Mmax)) mlist = ldosfile['mlist'] gam = ldosfile['gam'] r = ldosfile['r'] Ev = ldosfile['Ev'] LDOS = ldosfile['ldos'] rhoTFe = Uvals(x, r)**2 / 4.0 / np.pi if abs(len(rbg) - len(r)) != 0 or abs(gam - gambg) > 1e-6: print 'MISMATCHING LDOS' test = np.load('allrhos-U0=%g-N=%d-Mmax=%d-B=0-Emin=-1-Emax=-0.npy' %
ldos = prepareLDOS(Ev, r, Ustr, U, mlist, B0, gam) dos_0 = dos_bg(mlist, Ev, r) ldos2 = prepareLDOS(Ev, r2, Ustr, U2, mlist2, B0, gam2) ####graft(E_cut, Ev, r, ldos, r2, ldos2) E_min = -1.0 E_max = -0.0 T = 3e-2 rho = find_rho(Ev, r, ldos, E_min, E_max) rho_B = find_rho(Ev, r, dos_0, E_min, E_max) rho_1 = getDensity(r, 0.0, 0.0*r, mlist, B0, E_min, E_max, T) rho_0 = np.array(rho) rho_wf_0 = np.array(rho_1) rho_up = polaris_generic(r, E_max, Uq_Coulomb) rho_down = polaris_generic(r, E_min, Uq_Coulomb) rho_RPA = rho_up - rho_down sgn = 1.0 if (E_min < 0): sgn = -1 rho_bg = -1.0 / 4.0 / np.pi * ((E_min - U) * np.abs(E_min - U) - E_min * abs(E_min)) results = [] for U0 in Ustrengths: print "Calculating U0=%g" %U0 U = Uvals(U0,r) U2 = Uvals(U0,r2) ldos = prepareLDOS(Ev, r, U0, U, mlist, B0, gam) ldos2 = prepareLDOS(Ev, r2, U0, U2, mlist2, B0, gam2) ####graft(E_cut, Ev, r, ldos, r2, ldos2)
def highm(Ef, r, Mmax, U0): Jsum = np.zeros((len(r))) Efr = Ef + Uvals(U0,r)/2.0 for i in range (-Mmax, Mmax+1): Jsum += 2.0 * (special.jn(i,(Ef*r)))**2 drhohm = 2.0 - Jsum drhohm += (special.jn(-Mmax,(Ef*r)))**2 drhohm -= (special.jn(1+Mmax,(Ef*r)))**2 drhohm *= -abs(Ef) / 4.0 / np.pi * Uvals(U0,r) return drhohm for i in range (0,len(Emins)): rho0s[:,i,0] = diracsolver.find_rho(Ev0,rbg,LDOS0,Emins[i],Emax0) rho0s[:,i,1] = diracsolver.find_rho(Ev0,rbg,LDOS0,Emin0,Emaxs[i]) RPA0 = - 1.0 / 16.0 * Uvals(1.0,rbg)**3 RPA[:,i] = polaris_generic(rbg,Emins[i],Uq_Coulomb) for t in range (0,len(Us)): x=Us[t] figure() title('drho = %g' %x) ldosfile = np.load('ldos-U0=%g-N=%d-Mmax=%d-B=0.npz' %(x,N,Mmax)) mlist = ldosfile['mlist'] gam = ldosfile['gam'] r = ldosfile['r'] Ev = ldosfile['Ev'] LDOS = ldosfile['ldos'] rhoTFe = Uvals(x,r)**2 / 4.0 / np.pi if abs(len(rbg)-len(r)) != 0 or abs(gam-gambg) > 1e-6: print 'MISMATCHING LDOS'