Hello,
I have been trying to build an antiferromagnetic g-type lead with the code
attached below.
It seems i have a problem with the band-structure because i was expecting to
have a ferromagnet if if set
m1 = m2 = 0.0
in the code below. (But apparently i got a different band structure with
that of a ferromagnet)
I will appreciate your help.
best Regards
Colins
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
import kwant
# For plotting.
from matplotlib import pyplot
from math import *
from numpy import *
from mpl_toolkits.mplot3d.axes3d import Axes3D # imports 3D plotting
from matplotlib import cm # module for color pattern
from random import seed
from random import uniform
import tinyarray
import time
s_0 = tinyarray.array([[1, 0], [0, 1]])
s_x = tinyarray.array([[0, 1], [1, 0]])
s_y = tinyarray.array([[0, -1j], [1j, 0]])
s_z = tinyarray.array([[1, 0], [0, -1]])
def make_lead(a=1, t=1.0, Vat= 0.0, EF= 7.0, Jex=-1.0, W=40):
# Start with an empty lead with a single square lattice
lat = kwant.lattice.square(a)
sym_lead = kwant.TranslationalSymmetry((-2*a, 0))
lead = kwant.Builder(sym_lead)
# build up one unit cell of the lead, and add the hoppings
# to the next unit cell
for j in xrange(W):
mz1 = cos((1.0 + j) * pi)
mz2 = cos(j * pi)
lead[lat(0, j)] = (4 * t + Vat)* s_0 + Jex * mz1 * s_z
lead[lat(1, j)] = (4 * t + Vat)* s_0 + Jex * mz2 * s_z
if j > 0:
lead[lat(0, j), lat(0, j - 1)] = -t * s_0
lead[lat(1, j), lat(1, j - 1)] = -t * s_0
lead[lat(1, j), lat(0, j)] = -t * s_0
lead[lat(2, j), lat(1, j)] = -t * s_0
return lead
def main():
lead = make_lead().finalized()
kwant.plotter.bands(lead, show=False)
pyplot.xlabel("momentum [(lattice constant)^-1]")
pyplot.ylabel("energy [t]")
pyplot.title("Band structure G-type AF")
pyplot.show()
if __name__ == '__main__':
main()
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::