Dear all, I am trying a graphene bulk with magnetic field, and I use spectrum = kwant.kpm.SpectralDensity(fsyst, num_vectors=None, vector_factory=s_factory, rng=0) energies, densities = spectrum() to calculate the dos and compare with some previous studies. My definition of the hopping is: def Hop_magnetic(site1,site2): B_magneic=200. # units Tesla a0=0.142 # nm x1,y1=site1.pos x2,y2=site2.pos xy=0.5*(x1+x2)*sqrt(3)*a0*(y1-y2)*sqrt(3)*a0 # the units is nm**2 phb=1j*2.*pi*B_magneic/4.135667 # phi0=h/e=4.135667*e-15 V*s return t*exp(xy*phb*0.001) I found that the effect of the magnetic field is too small and I can not obtain the correct results. Could you give me some suggestions? Best regards Khani
My code is pasted: import kwant from matplotlib import pyplot from numpy import sqrt,pi,exp import numpy as np def make_system(r=8, t=1, tp=-0.1): lat = kwant.lattice.honeycomb(norbs=1) a, b = lat.sublattices def circle(pos): x, y = pos return x**2 + y**2 < 100**2 #-100<x<100 and -100<y<100 def Hop_magnetic(site1,site2): B_magneic=200. # the unit of B_magneic is Tesla=V*s/m**2 a0=0.142 # nm x1,y1=site1.pos x2,y2=site2.pos xy=0.5*(x1+x2)*sqrt(3)*a0*(y1-y2)*sqrt(3)*a0 # the units change it to nm**2 phb=1j*2.*pi*B_magneic/4.135667 # phi0=h/e=4.135667*e-15 V*s, the unit of B_magneic is Tesla=V*s/m**2 return t*exp(xy*phb*0.001) def Nearest_Hop(site1,site2): return Hop_magnetic(site1,site2) syst = kwant.Builder() syst[lat.shape(circle, (0, 0))] = 0 syst[lat.neighbors()] = Nearest_Hop syst.eradicate_dangling() return lat, syst.finalized() lat, fsyst = make_system() #kwant.plot(fsyst) where = lambda s: np.linalg.norm(s.pos) < 1 s_factory = kwant.kpm.LocalVectors(fsyst, where) spectrum = kwant.kpm.SpectralDensity(fsyst, num_vectors=None, vector_factory=s_factory, rng=0) energies, densities = spectrum() pyplot.figure() pyplot.plot(energies, densities) pyplot.xlabel("energy [t]") pyplot.ylabel("DOS") pyplot.show()