
Sept. 12, 2019
3:55 a.m.
The second problem is solved. I got the landau fan for BHZ model. Thank you for the support. On Thu, Sep 12, 2019, 12:46 Naveen Yadav <naveengunwal72@gmail.com> wrote: > Dear sir, > > I have updated KWANT, but it shows the *AttributeError: module > 'kwant.continuum' has no attribute 'discretize_landau'.* And in browser > also, it is showing the same error. I have downloaded the landau_levels.py > file and put it into the continuum folder. But it is not working. > > > On Wed, Sep 11, 2019, 23:47 Naveen Yadav <naveengunwal72@gmail.com> wrote: > >> Dear sir, >> >> That is exactly what I am looking for. >> But in my case Hamiltonian is not polynomial in k. It contains Sine and >> Cosine terms. It's a tight binding Hamiltonian having coupling terms like >> sigma_x *Sin(kx)+ sigma_y *sin(ky) and mass term in the trignometric form. >> So, can I proceed by writing the trignometric terms in some lower order >> polynomial terms? Does that make sense? >> Please make some comment regarding this. >> Thank you very much. >> >> >> >> >> >> >> >> >> >> Naveen >> Department of Physics & Astrophysics >> University of Delhi >> New Delhi-110007 >> >> On Wed, Sep 11, 2019, 22:18 Anton Akhmerov <anton.akhmerov+kd@gmail.com> >> wrote: >> >>> Dear Naveen, >>> >>> If you are dealing with a continuum Hamiltonian (so a polynomial in >>> k-space), then there is a recent addition to Kwant, that allows to >>> compute Landau levels. Please check out if this tutorial is what you >>> are looking for: >>> >>> https://kwant-project.org/doc/dev/tutorial/magnetic_field#adding-magnetic-field >>> (if you click the "activate thebelab" button, you can also play around >>> with the code in your browser). >>> >>> If that suits your needs, you'd need to either install a development >>> version of Kwant or just get this file: >>> >>> https://gitlab.kwant-project.org/kwant/kwant/blob/master/kwant/continuum/landau_levels.py >>> >>> Let me know if that answers your question, >>> Anton >>> >>> On Wed, 11 Sep 2019 at 18:39, Naveen Yadav <naveengunwal72@gmail.com> >>> wrote: >>> > >>> > Dear sir, >>> > >>> > I understood that this code is off no use. The leads are useless here. >>> > Actually, I want to plot the Landau fan. Can KWANT do the job here? >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > >>> > Naveen >>> > Department of Physics & Astrophysics >>> > University of Delhi >>> > New Delhi-110007 >>> > >>> > On Mon, Sep 9, 2019, 00:50 Abbout Adel <abbout.adel@gmail.com> wrote: >>> >> >>> >> Dear Naveen, >>> >> >>> >> If your concern is the program which is slow, that is not an issue >>> since it takes just few minutes. >>> >> Now, if you are talking about the result, I want to be sure that you >>> notice that your system is not infinite as you claim in your email. >>> >> You can check that by adding extra cells from the lead" >>> syst.attach_lead(lead, add_cells=10) >>> >> Actually, in your case, the presence of the leads is useless since at >>> the end, you are just diagonalizing the Hamiltonian of the central system. >>> >> If you want to study an infinite system in x and y, you need to look >>> at the module "wraparound" and the example of graphene that is in the >>> archive of kwant. >>> >> For the magnetic field, you can use the Pierls substitution. check >>> for example this paper [1] >>> >> >>> >> You can also think about the use of continuous Hamiltonian in kwant. >>> You may find it very useful [2] >>> >> I hope this helps. >>> >> >>> >> Regards, >>> >> Adel >>> >> >>> >> >>> >> [1] https://arxiv.org/pdf/1601.06507.pdf >>> >> [2] https://kwant-project.org/doc/1/tutorial/discretize >>> >> >>> >> On Sun, Sep 8, 2019 at 6:16 PM Naveen Yadav <naveengunwal72@gmail.com> >>> wrote: >>> >>> >>> >>> Dear Sir, >>> >>> Thanks for the tips. As you told, I have tried in other way also but >>> I am getting the same result which are very tedious. I don't know where is >>> fault. >>> >>> Now the code looks like >>> >>> >>> >>> import kwant >>> >>> import scipy.sparse.linalg as sla >>> >>> import matplotlib.pyplot as plt >>> >>> import tinyarray >>> >>> import numpy as np >>> >>> from numpy import cos, sin, pi >>> >>> import cmath >>> >>> from cmath import exp >>> >>> >>> >>> sigma_0 = tinyarray.array([[1, 0], [0, 1]]) >>> >>> sigma_x = tinyarray.array([[0, 1], [1, 0]]) >>> >>> sigma_y = tinyarray.array([[0, -1j], [1j, 0]]) >>> >>> sigma_z = tinyarray.array([[1, 0], [0, -1]]) >>> >>> >>> >>> >>> >>> def make_system(a=1, L=30, W=10, H=10, t=1.0, t_x=1.0, t_y=1.0, >>> t_z=1.0, lamda=0.1, beta=1.05): >>> >>> def onsite(site): >>> >>> return (t_z * cos(beta) + 2 * t) * sigma_z >>> >>> >>> >>> def hoppingx(site0, site1): >>> >>> return (-0.5 * t * sigma_z - 0.5 * 1j * t_x * sigma_x) >>> >>> >>> >>> def hoppingy(site0, site1): >>> >>> return -0.5 * t * sigma_z - 0.5 * 1j * t_y * sigma_y >>> >>> >>> >>> def hoppingz(site0, site1, B): >>> >>> y = site1.pos[1] >>> >>> return (-0.5 * t_z * sigma_z - 0.5 * 1j * lamda * sigma_0) * >>> exp(2 * pi * 1j * B * a * (y-40)) >>> >>> >>> >>> >>> >>> syst = kwant.Builder() >>> >>> lat = kwant.lattice.cubic(a) >>> >>> syst[(lat(z, y, x) for z in range(H) for y in range(W) for x in >>> range(L))] = onsite >>> >>> syst[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = hoppingz >>> >>> syst[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = hoppingy >>> >>> syst[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = hoppingx >>> >>> >>> >>> lead1=kwant.Builder(kwant.TranslationalSymmetry((0,-a,0))) >>> >>> lead1[(lat(z,y,x) for z in range(H)for y in range(W)for x in >>> range(L))]=onsite >>> >>> lead1[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = hoppingz >>> >>> lead1[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = hoppingy >>> >>> lead1[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = hoppingx >>> >>> >>> >>> syst.attach_lead(lead1) >>> >>> syst.attach_lead(lead1.reversed()) >>> >>> >>> >>> lead2=kwant.Builder(kwant.TranslationalSymmetry((-a,0,0))) >>> >>> lead2[(lat(z,y,x) for z in range(H)for y in range(W)for x in >>> range(L))]=onsite >>> >>> lead2[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = hoppingz >>> >>> lead2[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = hoppingy >>> >>> lead2[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = hoppingx >>> >>> >>> >>> syst.attach_lead(lead2) >>> >>> syst.attach_lead(lead2.reversed()) >>> >>> syst = syst.finalized() >>> >>> return syst >>> >>> >>> >>> def analyze_system(syst, Bfields): >>> >>> syst = make_system() >>> >>> kwant.plot(syst) >>> >>> energies = [] >>> >>> for B in Bfields: >>> >>> #print(B) >>> >>> ham_mat = syst.hamiltonian_submatrix(params=dict(B=B), >>> sparse=True) >>> >>> ev, evec = sla.eigsh(ham_mat.tocsc(), k=20, sigma=0) >>> >>> energies.append(ev) >>> >>> #print (energies) >>> >>> >>> >>> plt.figure() >>> >>> plt.plot(Bfields, energies) >>> >>> plt.xlabel("magnetic field [${10^-3 h/e}$]") >>> >>> plt.ylabel("energy [t]") >>> >>> >>> >>> plt.ylim(0, 0.11) >>> >>> plt.show() >>> >>> def main(): >>> >>> syst = make_system() >>> >>> analyze_system(syst, [B * 0.00002 for B in range(101)]) >>> >>> main() >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> Naveen >>> >>> Department of Physics & Astrophysics >>> >>> University of Delhi >>> >>> New Delhi-110007 >>> >>> >>> >>> On Sun, Sep 8, 2019, 17:37 Abbout Adel <abbout.adel@gmail.com> >>> wrote: >>> >>>> >>> >>>> Dear Naveen, >>> >>>> >>> >>>> Your program works fine. You have just a small problem of >>> plotting. You can solve that by changing "plt.show" by "plt.show()". >>> >>>> >>> >>>> Think about putting print (B) inside the loop when you debug your >>> program. That will help you for example to see if the program is running >>> well, and you can detect what may be wrong. >>> >>>> Think also about returning Energies in your function. This way you >>> can try potting the result outside the function you called. Don't hesitate >>> to put some extra lines in your program to follow the progress when you >>> think that there is a problem. >>> >>>> >>> >>>> >>> >>>> I hope this helps. >>> >>>> Regards, >>> >>>> Adel >>> >>>> >>> >>>> On Thu, Sep 5, 2019 at 7:32 PM Naveen Yadav < >>> naveengunwal72@gmail.com> wrote: >>> >>>>> >>> >>>>> Dear Sir, >>> >>>>> >>> >>>>> I am trying to plot the energy as a function of magnetic field for >>> a 3D case, but I am getting tedious results. The system is infinite in two >>> directions and has some width in the third direction. Please have a look at >>> the code attached below. I tried a lot but failed. Is the code correct or I >>> am wrong somewhere. >>> >>>>> Thank you. >>> >>>>> >>> >>>>> >>> >>>>> import kwant >>> >>>>> import scipy.sparse.linalg as sla >>> >>>>> import matplotlib.pyplot as plt >>> >>>>> import tinyarray >>> >>>>> import numpy as np >>> >>>>> from numpy import cos, sin, pi >>> >>>>> import cmath >>> >>>>> from cmath import exp >>> >>>>> >>> >>>>> sigma_0 = tinyarray.array([[1, 0], [0, 1]]) >>> >>>>> sigma_x = tinyarray.array([[0, 1], [1, 0]]) >>> >>>>> sigma_y = tinyarray.array([[0, -1j], [1j, 0]]) >>> >>>>> sigma_z = tinyarray.array([[1, 0], [0, -1]]) >>> >>>>> >>> >>>>> >>> >>>>> def make_system(a=1, L=30, W=10, H=10, t=1.0, t_x=1.0, t_y=1.0, >>> t_z=1.0, lamda=0.1, beta=1.05): >>> >>>>> def onsite(site): >>> >>>>> return (t_z * cos(beta) + 2 * t) * sigma_z >>> >>>>> >>> >>>>> def hoppingx(site0, site1): >>> >>>>> return (-0.5 * t * sigma_z - 0.5 * 1j * t_x * sigma_x) >>> >>>>> >>> >>>>> def hoppingy(site0, site1): >>> >>>>> return -0.5 * t * sigma_z - 0.5 * 1j * t_y * sigma_y >>> >>>>> >>> >>>>> def hoppingz(site0, site1, B): >>> >>>>> y = site1.pos[1] >>> >>>>> return (-0.5 * t_z * sigma_z - 0.5 * 1j * lamda * sigma_0) >>> * exp(2 * pi * 1j * B * a * (y-40)) >>> >>>>> >>> >>>>> >>> >>>>> syst = kwant.Builder() >>> >>>>> lat = kwant.lattice.cubic(a) >>> >>>>> syst[(lat(z, y, x) for z in range(H) for y in range(W) for x >>> in range(L))] = onsite >>> >>>>> syst[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = hoppingz >>> >>>>> syst[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = hoppingy >>> >>>>> syst[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = hoppingx >>> >>>>> >>> >>>>> lead1=kwant.Builder(kwant.TranslationalSymmetry((0,-a,0))) >>> >>>>> lead1[(lat(z,y,x) for z in range(H)for y in range(W)for x in >>> range(L))]=onsite >>> >>>>> lead1[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = >>> hoppingz >>> >>>>> lead1[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = >>> hoppingy >>> >>>>> lead1[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = >>> hoppingx >>> >>>>> >>> >>>>> syst.attach_lead(lead1) >>> >>>>> syst.attach_lead(lead1.reversed()) >>> >>>>> >>> >>>>> lead2=kwant.Builder(kwant.TranslationalSymmetry((-a,0,0))) >>> >>>>> lead2[(lat(z,y,x) for z in range(H)for y in range(W)for x in >>> range(L))]=onsite >>> >>>>> lead2[kwant.builder.HoppingKind((1, 0, 0), lat, lat)] = >>> hoppingz >>> >>>>> lead2[kwant.builder.HoppingKind((0, 1, 0), lat, lat)] = >>> hoppingy >>> >>>>> lead2[kwant.builder.HoppingKind((0, 0, 1), lat, lat)] = >>> hoppingx >>> >>>>> >>> >>>>> syst.attach_lead(lead2) >>> >>>>> syst.attach_lead(lead2.reversed()) >>> >>>>> syst = syst.finalized() >>> >>>>> return syst >>> >>>>> >>> >>>>> def analyze_system(): >>> >>>>> syst = make_system() >>> >>>>> kwant.plot(syst) >>> >>>>> Bfields = np.linspace(0, 0.002, 100) >>> >>>>> energies = [] >>> >>>>> for B in Bfields: >>> >>>>> ham_mat = syst.hamiltonian_submatrix(params=dict(B=B), >>> sparse=True) >>> >>>>> ev, evec = sla.eigsh(ham_mat.tocsc(), k=20, sigma=0) >>> >>>>> energies.append(ev) >>> >>>>> #print(energies) >>> >>>>> >>> >>>>> plt.figure() >>> >>>>> plt.plot(Bfields, energies) >>> >>>>> plt.xlabel("magnetic field [${10^-3 h/e}$]") >>> >>>>> plt.ylabel("energy [t]") >>> >>>>> >>> >>>>> plt.ylim(0, 0.11) >>> >>>>> plt.show >>> >>>>> def main(): >>> >>>>> syst = make_system() >>> >>>>> analyze_system() >>> >>>>> main() >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> >>> >>>>> -- >>> >>>>> >>> >>>>> >>> >>>>> With Best Regards >>> >>>>> NAVEEN YADAV >>> >>>>> Ph.D Research Scholar >>> >>>>> Deptt. Of Physics & Astrophysics >>> >>>>> University Of Delhi. >>> >>>> >>> >>>> >>> >>>> >>> >>>> -- >>> >>>> Abbout Adel >>> >> >>> >> >>> >> >>> >> -- >>> >> Abbout Adel >>> >>