Hi,

I am brginner in kwant trying to investigate a graphene ribbon with onsite Coulomb energy U<n>, where the electron density <n> at each site should be determined self-consistently.

Firstly I should point out that currently Kwant can handle non-interacting systems only. Adding mean-field interactions to Kwant is an area of current research, and will be added to a future version (although it may take some time before this happens).

Then, I have to put U<n> as onsite energy. But, I have a problem that, in kwant, the onsite energy should be set as a number or a 2x2 tiny-array. Is there any way to set the onsite Coulomb energy?

This is not true; Hamiltonian matrix elements can also be provided as functions that return scalars or matrices. As it stands you would have to implement a Schrödinger-Poisson self-consistent loop yourself. Although the mathematics of this is clear, making a _robust_ numerical implementation is a bit more challenging, but for a given physical case you may be able to make some approximations or calculate some parts analytically to make things easier. I know of this paper: http://arxiv.org/abs/1511.08044 by some colleagues where they did exactly this. Happy Kwanting, Joe