View Full Version : how to establish the hamiltonian matrix as soon as possible?
in the bose-hubbard model, we need to enumerate all the possible basis
usually, the basis vectors are taken as the fock states
The problem is that, how to arrange the basis and how to establish the matrix of the hamiltonian as soon as possible
It is apparent the the matrix will be very sparse
then how can we avoid to set the matrix elements that are surely zero ?
i find this problem non-trivial
Well, you need to find some operator that commutes with your Hamiltonian, and then you know that its eigenvalues are good quantum numbers, so the Hamiltonian will be block diagonal with each block corresponding to a different quantum number of this other operator. For instance, every term in the Bose-Hubbard model contains the same number of creation and annihilation operators, so the total particle number is conserved. This means that the Hamiltonian will only have matrix elements between states with the same particle number.
I'm not an expert on exact diagonalization, but I think that is probably about as far as you can go with it, due to the non-local nature of the hopping and the local nature of the interaction.
Well, you need to find some operator that commutes with your Hamiltonian, and then you know that its eigenvalues are good quantum numbers, so the Hamiltonian will be block diagonal with each block corresponding to a different quantum number of this other operator. For instance, every term in the Bose-Hubbard model contains the same number of creation and annihilation operators, so the total particle number is conserved. This means that the Hamiltonian will only have matrix elements between states with the same particle number.
I'm not an expert on exact diagonalization, but I think that is probably about as far as you can go with it, due to the non-local nature of the hopping and the local nature of the interaction.
yes, this is a trick
but i want more
i want such trick that faciliate the coding and programming
especially, i want to know quickly where the matrix elements are nonzero
generally, the matrix can be millions by millions, and i cannot test whether each element is zero or not. That requies too much time, though each testing can be very simple.
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.