-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
What does translational_symmetry
actually perform?
#60
Comments
The translation symmetry operator makes periodic boundary conditions at the edges of the model. This is by default given as the length of the unit cell, but it can change by giving the multiple of the unit vectors. If you omit this, the Hamilton is just one for a flake and this can not have the 'k' wave vector as it is a finite system. A finite system could only have real variables if there are none present in the onsite or hopping parameters, which can speed up the calculation. The recent update on 'pip install pybinding-dev' has the e^(+ik.r) factor, but keep in mind that you have to give the hermitian conjugate of the required hopping when defining the hoppings. In the older version (the one from 'pip install pybinding'), the changes in the Hamiltonian are that the hoppings that go over the 'boundary' (connect to the other side) get an additional phase of e^(+ir.r), with r the length of the length of the period. In the newer version (the one from 'pip install pybinding-dev'), there is an additional option that you can give to the pb.Model(), which is 'pb.force_phase()'. This will give every hopping the factor e^(ik.r), with r the length of the hopping. This last addition can be usefull when you compare the wave function for different k positions as otherwise the basis for this wave function will change depending on the k wave vector. |
Thank you very much for your reply. Let me reformulate with some math what I have understood. We can start from the Bloch sum In the following I denote as No periodicityHamiltonian is Old versionAfter adding where New versionAfter adding While this is the exact representation starting from the definition of Bloch sum, I can't figure out why the eigenstates should be independent upon |
Isn't the Hermitian conjugate added automatically? |
As you pointed out, tight-binding does not use the normal orbitals The k-vector is set in the I meant with the Hermitian conjugate that the upper-right component of the matrix is filled in with the object that you pass, the lower left is the Hermitian conjugate automatically filled in with the Hermitian conjugate of thevcalue you passed. You can also see the most recent documentation at bertjorissen.github.io/pybinding. The translation symmetry is added in the normal way by adding the phase |
I don't understand properly the kind of modifications that
translational_symmetry
applies to the model. I tried to read the source code, but it is linked to some C++ code which is obscure to me. Does it perform some kind of Fourier transform of the Hamiltonian?The text was updated successfully, but these errors were encountered: