regarding rashba term in kwant
Sir, I was trying to implement kane-mele Hamiltonian including tight-binding,intrinsic ans rashba spin-orbit for conductance calculation.In Rashba term we have cross product of vector s and d_ij with z-component, where d_ij is the vector points from site i to site j and corresponds to the nearest-neighbor vectors. My question is that what is the possible way to implement that term ,especially d_1 and d_2 for different hopping.Here is my code only for tight-binding and intrinsic SOC. from __future__ import division # so that 1/2 == 0.5, and not 0 from math import pi, sqrt, tanh import numpy as np import kwant import random import math import tinyarray # For computing eigenvalues import scipy.sparse.linalg as sla # For plotting from matplotlib import pyplot # Define the graphene lattice graphene = kwant.lattice.honeycomb() a, b = graphene.sublattices #define pauli matrices 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(L=20, W=20): t=1 t2= 0.1 lambda_R=0.1 v_ij= 1 nn_hopping= -t * sigma_0 nnn_hoppinga= -1j * t2 * v_ij * sigma_z nnn_hoppingb= -1j * t2 * v_ij * sigma_z #### Define the scattering region. #### def rec(pos): x, y = pos return 0 < x < L and 0 < y < W sys = kwant.Builder() sys[graphene.shape(rec, (1, 1))] = 0 * sigma_0 # specify the hoppings of the graphene lattice nn_hoppings = (((0, 0), a, b), ((0, 1), a, b), ((-1, 1), a, b)) nnn_hoppings_a = (((-1, 0), a, a), ((0, 1), a, a), ((1, -1), a, a)) nnn_hoppings_b = (((-1, 0), b, b), ((0, 1), b, b), ((1, -1), b, b)) sys[[kwant.builder.HoppingKind(*hopping) for hopping in nn_hoppings]] = nn_hopping sys[[kwant.builder.HoppingKind(*hopping) for hopping in nnn_hoppings_a]] = -nnn_hoppinga sys[[kwant.builder.HoppingKind(*hopping) for hopping in nnn_hoppings_b]] = -nnn_hoppingb #### Define the leads. #### # left lead sym0 = kwant.TranslationalSymmetry(graphene.vec((-1, 0))) sym0.add_site_family(graphene.sublattices[0], other_vectors=[(-1, 2)]) sym0.add_site_family(graphene.sublattices[1], other_vectors=[(-1, 2)]) def lead0_shape(pos): x, y = pos return (0 < y < W) lead0 = kwant.Builder(sym0) lead0[graphene.shape(lead0_shape, (0, 0))] = 0 * sigma_0 lead0[[kwant.builder.HoppingKind(*hopping) for hopping in nn_hoppings]] = nn_hopping # lead0[[kwant.builder.HoppingKind(*hopping) for hopping in nnn_hoppings_a]] = -nnn_hoppinga # lead0[[kwant.builder.HoppingKind(*hopping) for hopping in nnn_hoppings_b]] = -nnn_hoppingb # right lead sym1 = kwant.TranslationalSymmetry(graphene.vec((1, 0))) sym1.add_site_family(graphene.sublattices[0], other_vectors=[(-1, 2)]) sym1.add_site_family(graphene.sublattices[1], other_vectors=[(-1, 2)]) def lead1_shape(pos): else: return 'blue' def plot_conductance(sys, energies): # Compute transmission as a function of energy data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy) data.append(smatrix.transmission(0, 1)) pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() def plot_bandstructure(flead, momenta): bands = kwant.physics.Bands(flead) energies = [bands(k) for k in momenta] pyplot.figure() pyplot.plot(momenta, energies) pyplot.xlabel("momentum [(lattice constant)^-1]") pyplot.ylabel("energy [t]") pyplot.show() def main(): sys = make_system() # Check that the system looks as intended. kwant.plot(sys, site_lw=0.1, site_color=family_color) # Finalize the system. sys = sys.finalized() # Compute the band structure of lead 0. momenta = np.linspace(-pi, pi , 200) plot_bandstructure(sys.leads[0], momenta) Es = np.linspace(-3, 3, 200) plot_conductance(sys, Es) # Call the main function if the script gets executed (as opposed to imported). # See http://docs.python.org/library/__main__.html. if __name__ == '__main__': main() -- INSERT -- -- Priyanka Sinha Junior research Fellow Department of Physics, IIT Guwahati, India
participants (1)
-
PRIYANKA SINHA