hphi = fsolve(lambda hphi: rho + getBoundary(hphi, 0, [0, a2])[0][1][1], guess) rhoSol = [[hphi, 0]] print("Solving for different frequencies...") sigmas = [] for osci in range(len(rhoSol)): bb, osc = getBoundary(rhoSol[osci][0], rhoSol[osci][1], [0, a2]) mu = bb[1][0] def f(l): w = np.exp(l) bb, osc = getBoundary(rhoSol[osci][0], rhoSol[osci][1], [mu * w, a2]) assert osc == osci return -1j * bb[2][1] / (bb[2][0] * (mu * w)) nwvs, _, nsigmas = getPlotY(np.log(wvs[0]), np.log(wvs[-1]), f, lambda s: s.real, minN=150, maxTurn=0.1) sigmas.append((np.exp(nwvs), nsigmas)) for s in sigmas: pl.plot(s[0], [i.real for i in s[1]], ls="-", c="k", label=r"$\mathrm{Re}(\sigma)$" if first else "") if a2 == 0: printText( s[0], [i.real for i in s[1]], [2, 0.8, 0.35, 0.25][j], [-1 / 0.35, 0, 0, 0][j], "$" + str(Tr) + "T_c$" ) else: if (j / 2) * 2 == j or len(Trs) < 8: B = 1e6 # printText(s[0],[i.real for i in s[1]],B,-B/(0.35 if j==0 else 0.27),'$'+str(Tr)+'T_c$') # printText(s[0],[i.real for i in s[1]],1/(1-0.25/0.4),-1/(0.4-0.25),'$'+str(Tr)+'T_c$') printText( s[0], [i.real for i in s[1]], 1 / (1 - 0.23 / 0.308), -1 / (0.308 - 0.23), "$" + str(Tr) + "T_c$" )
bb,osc=getBoundary(rhoSol[0][0],rhoSol[0][1], [wlim,a2]) pole=(-1j*bb[2][1]/( bb[2][0] )).imag bb,osc=getBoundary(rhoSol[0][0],rhoSol[0][1], [wlim*2,a2]) pole2=(-1j*bb[2][1]/( bb[2][0] )).imag assert( (pole-pole2)/pole<0.01 or Tr>=0) sigmas=[] for osci in range(len(rhoSol)): bb,osc=getBoundary(rhoSol[osci][0],rhoSol[osci][1], [0,a2]) mu=bb[1][0] def f(l): w=np.exp(l) bb,osc=getBoundary(rhoSol[osci][0],rhoSol[osci][1], [mu*w,a2]) assert(osc==osci) return -1j*bb[2][1]/( bb[2][0]*(mu*w) ) nwvs,_,nsigmas=getPlotY(np.log(wv0),np.log(wv1),f,lambda s:s.real,minN=100,maxTurn=0.1,maxN=500) sigmas.append((np.exp(nwvs),nsigmas)) wvs=np.array(sigmas[0][0]) nsigma=sigmas[0][1]-1j*pole/(wvs*mu) #printText(s[0],[i.real for i in s[1]],1/(1-0.23/0.308),-1/(0.308-0.23),'$'+str(Tr)+'T_c$') # pl.plot(wvs,nsigma.real) #pl.plot(wvs,nsigma.imag) mw=0.15 mi=int(np.interp(mw,wvs,range(len(wvs)))) Y=abs(nsigma[mi]) Yd=(abs(nsigma[mi+1])-abs(nsigma[mi-1]))/(wvs[mi+1]-wvs[mi-1]) gamma=-2./3 C=Y-Yd*wvs[mi]/gamma B=(Y-C)/wvs[mi]**gamma
first=True for j in range(len(murs)): #Tr=Trs[j] print('Solving for specific temperature...') #Tc=T*np.sqrt(rho/rhoc) rhoSol=findrho(lambda x,y: getBoundary(x,y,[0,a2]), sols, hpsis, bbs, murs[j]*T,ind=0) print('Solving for different frequencies...') sigmas=[] for osci in range(len(rhoSol)): bb,osc=getBoundary(rhoSol[osci][0],rhoSol[osci][1], [0,a2]) def f(w): bb,osc=getBoundary(rhoSol[osci][0],rhoSol[osci][1], [w*T,a2]) assert(osc==osci) return -1j*bb[2][1]/( bb[2][0]*(T*w) ) nwvs,_,nsigmas=getPlotY(wvs[0],wvs[-1],f,lambda s:s.real*natTK,minN=60,maxTurn=0.1,maxN=150) sigmas.append((nwvs,nsigmas)) for s in sigmas: fig(0) pl.plot([w*natTK for w in s[0]],[i.real for i in s[1]],ls='-',c='k') printText([w*natTK for w in s[0]],[i.real for i in s[1]],0.6,0,'$'+str(nature[j])+'\mathrm{V}$') if plotImag: fig(1) pl.plot([w*natTK for w in s[0]],[i.imag for i in s[1]],ls='-',c='k') printText([w*natTK for w in s[0]],[i.imag for i in s[1]],0.6,0,'$'+str(nature[j])+'\mathrm{V}$') first=False print('$\mu_0=%.1fT$'%(murs[0]/nature[0])) #pl.plot([wvs[0],wvs[-1]],[1,1],ls=':',c='k') #pl.plot([wvs[0],wvs[-1]],[0,0],ls=':',c='k') #printText([wvs[0],wvs[-1]],[1,1],0,5.,r'$\sigma=1$')
bb,osc=getBoundary(1,0,[0,a2]) guess=rho/(-bb[1][1]) from scipy.optimize import fsolve hphi=fsolve(lambda hphi:rho+getBoundary(hphi,0,[0,a2])[0][1][1], guess) rhoSol=[[hphi,0]] print('Solving for different frequencies...') sigmas=[] for osci in range(len(rhoSol)): bb,osc=getBoundary(rhoSol[osci][0],rhoSol[osci][1], [0,a2]) mu=bb[1][0] def f(w): bb,osc=getBoundary(rhoSol[osci][0],rhoSol[osci][1], [mu*w,a2]) assert(osc==osci) return -1j*bb[2][1]/( bb[2][0]*(mu*w) ) nwvs,_,nsigmas=getPlotY(wvs[0],wvs[-1],f,lambda s:s.real,minN=30,maxTurn=0.1) sigmas.append((nwvs,nsigmas)) for s in sigmas: fig(0) pl.plot(s[0],[i.real for i in s[1]],ls='-',c='k',label=r'$\mathrm{Re}(\sigma)$'if first else '') if plotImag: fig(1) pl.plot(s[0],[i.imag for i in s[1]],ls='--',c='k',label=r'$\mathrm{Im}(\sigma)$'if first else '') first=False #pl.plot([wvs[0],wvs[-1]],[1,1],ls=':',c='k') #pl.plot([wvs[0],wvs[-1]],[0,0],ls=':',c='k') #printText([wvs[0],wvs[-1]],[1,1],0,5.,r'$\sigma=1$') #pl.legend(loc=3) #pl.legend(loc='upper right') fig(0) pl.xlabel(r'$\frac{\omega}{\mu}$')