I hope this will help.
Best, Adel
Dear community,
I want to add random potentials on graphene. Within each unit cell, I want A site have the oppsite value to B site.
That is, random across unit cells, but symmetric respect to zero within every unit cell. How to achieve this? I have tried to do so, but cannot find a way.
Below is my code:
```
import numpy as np
import kwant
low = 0
high = 1
def make_syst(a=1):
syst = kwant.Builder()
lat = kwant.lattice.honeycomb(a, norbs=1, name=['a', 'b'])
r = 10
def circle(pos):
x, y = pos
return x ** 2 + y ** 2 < r ** 2
def onsite(site, low, high):
return np.random.uniform(low, high)
# first attempt using function, not working, also cannot gurantee a, b are truly opposite in value
# syst[lat.a.shape(circle, (0, 0))] = onsite
# syst[lat.b.shape(circle, (0, 0))] = -1*onsite # wrong
# second attempt, still not right
m = np.random.uniform(low, high)
syst[lat.a.shape(circle, (0, 0))] = m
syst[lat.b.shape(circle, (0, 0))] = -m
syst[lat.neighbors()] = 1
return syst.finalized()
fsyst = make_syst()
# kwant.plot(fsyst)
H = fsyst.hamiltonian_submatrix(params=dict(high=high, low=low))
Es = np.linalg.eigvalsh(H)
plt.plot(Es, '.')
plt.show()
```
Thanks for help!