Dear Adel,

The electronic part of the Hamiltonian is 4x4. For a single magnetic
impurity, I tried to include the magnetic impurity spin degree of freedom
not by making the total Hamiltonian 8x8 at each site, but making two types
of lattices, lat_up and lat_down, that describes two spin states of the
magnetic impurity. The problem with making the Hamiltonian 8x8 and adding
the magnetic impurity as onsite potential is that, I could not find a way
to specify the state of the magnetic impurity. The state of the magnetic
impurity determines whether it interacts with spin-up electrons or spin
down electrons.

If I were to include the spin-flip interaction as onsite Hamiltonian, I
would have written:

syst[lat(20,2)] = 0.1*0.5* (np.kron(np.kron(pauli.sp,pauli.s0), pauli.sm)
+  np.kron(np.kron(pauli.sm, pauli.s0), pauli.sp))

But in this case, this magnetic impurity interacts with both spin-up and
spin-down electrons, just because I could not incorporate the spin  of the
magnetic impurity. Adding only one term, say s_+ I_- is non-Hermitian so I
cannot do that either.

I hope I made myself clear. Thank you so much,

Mert

On Sat, May 30, 2020 at 4:50 PM Abbout Adel <abbout.a...@gmail.com> wrote:

> Dear Ahmet,
>
> I do not understand why you want to put 2N lattices.
> Electrons interacting with multiple magnetic impurities can be obtained
> just by adding impurities, the way you did it in your example for one
> impurity.
>
> It would have been more practical if you used one lattice with 4x4
> matrices as an onsite potential.
>
> Adel
>
> On Fri, May 29, 2020 at 3:42 PM Ahmet Mert Bozkurt <
> mertbozk...@sabanciuniv.edu> wrote:
>
>> Dear KWANT developers,
>>
>> I would like to add a localized magnetic impurity into a quantum spin
>> hall system with spin-flip interaction (sigma_plus I_- + sigma_- I_+ where
>> I is the magnetic impurity spin operator. The spin-flip interaction depends
>> on the state of the magnetic impurity (whether it is spin-up or spin-down).
>> If it's spin-up, it needs to interact only with the spin down electrons
>> (term sigma_+) flip them upwards, while the magnetic impurity state needs
>> to be updated to spin-down. I've written a code using two different
>> lattices (lat_up and lat_down) and simply check transmission from one
>> lattice lead to the other lattice lead. But this method becomes impractical
>> if i want to add more magnetic impurities because i need to add more and
>> more lattice (2^N). Is there any easier way to include a scatterer with
>> internal degree of freedom (which can be updated perhaps using tkwant or
>> any other way)?
>>
>> BTW this is the model I'm working on:https://arxiv.org/abs/1705.04985
>>
>> Below is the relevant part of my code and thank you so much in advance!
>>
>> Mert
>>
>>     # Scattering region
>>     syst[lat_up.shape(shape, (0, 0))] = onsite
>>     syst[lat_down.shape(shape, (0, 0))] = onsite
>>     syst[kwant.HoppingKind((1, 0), lat_up)] = hopx
>>     syst[kwant.HoppingKind((1, 0), lat_down)] = hopx
>>     syst[kwant.HoppingKind((0, 1), lat_up)] = hopy
>>     syst[kwant.HoppingKind((0, 1), lat_down)] = hopy
>>     syst[(lat_up(10, 2), lat_down(10, 2))] = 0.1*0.5*np.kron(pauli.sp,
>> pauli.s0)
>>     syst[(lat_down(10, 2), lat_up(10, 2))] = 0.1*0.5*np.kron(pauli.sm,
>> pauli.s0)
>> # two lines above correspond to spin-flip of the magnetic impurity,
>> jumping from one #lattice to the other.
>>
>>     #### Define the leads. ####
>>
>>     sym_left = kwant.TranslationalSymmetry((-1, 0))
>>
>>     lead_up = kwant.Builder(sym_left)
>>     lead_down = kwant.Builder(sym_left)
>>     lead_up[lat_up.shape(lead_shape, (0, 0))] = onsite_lead
>>     lead_down[lat_down.shape(lead_shape, (0, 0))] = onsite_lead
>>     lead_up[kwant.HoppingKind((1, 0), lat_up)] = hopx_lead
>>     lead_up[kwant.HoppingKind((0, 1), lat_up)] = hopy_lead
>>     lead_down[kwant.HoppingKind((1, 0), lat_down)] = hopx_lead
>>     lead_down[kwant.HoppingKind((0, 1), lat_down)] = hopy_lead
>>
>>     # Attach leads
>>     syst.attach_lead(lead_up)
>>     syst.attach_lead(lead_down)
>>     syst.attach_lead(lead_up.reversed())
>>     syst.attach_lead(lead_down.reversed())
>>
>> def plot_conductance(sys, p, mu):
>>     # Compute conductance
>>     p.mu = mu
>>     data = []
>>     smatrix = kwant.smatrix(sys, energy = 0.0, params = dict(p=p))
>>     no_flip = smatrix.transmission(2, 0)
>>     flip = smatrix.transmission(1,0)
>>     return  no_flip, flip
>>
>
>
> --
> Abbout Adel
>

Reply via email to