dean0x7d / pybinding

Scientific Python package for tight-binding calculations in solid state physics
https://pybinding.site
BSD 2-Clause "Simplified" License
188 stars 69 forks source link

Non-hermitian matrix #51

Closed yangxing844 closed 11 months ago

yangxing844 commented 11 months ago

Hi, it is possible to use solver that can solve non-Hermtian matrix, I want to use this to construct some non-hermtian hoppings that can demonstrate non-Hermitian effect

BertJorissen commented 11 months ago

Hi Yangxing currently, pybinding has no support for constructing non-hermitian matrices/hamiltonians. The eigenvalues will be complex, and this will break a lot of things in the background. Also, when you add a hopping, lets say from site numbered (10) to a site numbered (12), the other hopping (12) -> (10) is added automatically. Setting (12) -> (10) by hand afterwards will result in an error. However, when you have a Hamiltonian for a large system (lets say, some buckled graphene), you can add some non-hermitian element by hand by obtaining the hamiltonian with model.hamiltonian. This will be at the k-point you set with model.set_wave_vector([kx,ky,kz]). Be carefull, the hamitlonian is the transpose of the normal convention; in the basis <from|H|to> instead of the <to|H|from> basis. As this only would change some factors in the normal calculations, this is normally not a problem but it worth the attention if you want to investigate non-hermitian systems. Feel free to ask more questions if you need more help. Best Bert

yangxing844 commented 11 months ago

Thank you very much!