Tutorials¶
Here we give some examples of typical usage of the Hammer diagonalisation component. For installation instructions see installation.
Torus diagonalisation¶
The TorusDiagonalise.py script can be used for performing exact diagonalisation calculations on the torus. If run without any arguments it will diagonalise a square torus with 4 electron, 12 flux quanta using the lowest Landau level Coulomb interaction in the sector with total momentum 0. The lowlying eigenvalues will be output along with the error estimates. These will also be written to a file on disk. The behaviour of the script can be changed via command line arguements. To see a full list of options use
TorusDiagonalise.py --help
It is advisable to use symmetries to reduce the computational effort required. The centre of mass momentum can be specified using the -c switch and the inversion sector with the –inversion-sector which takes values 0 and 1 corresponding to symmetric and antisymmetric sectors. The number of unique centre of mass symmetry sectors corresponds to number of fundamental unit cells. i.e. the quotient between the particle number and the numerator of the filling fraction (Ne/p=Ns/q)
As a small example, we show how one would find the overlap between the Laughlin state with the Coulomb ground state for 9 particles. To get the Laughlin state we can diagonalise a hardcore interaction. The following command will get the low lying states of the hardcore interaction for a system with 9 particles and write the states to disk.
TorusDiagonalise.py -p 9 -l 27 -y 0 -c 0 --inversion-sector 0 --pseudopotentials 0.0 1.0 --eigenstate
We should see that as well as the csv file containing the energies, there are a number of vector files on the disk which are the eigenstates. The first state also has zero energy as we would expect. Modern computers have multiple processing cores so we can take advantage of this to speed up our computations. To use multiple process one runs the same command with mpiexec -np n prepended, where n is the number of processes to use. For example
mpiexec -np 4 TorusDiagonalise.py -p 9 -l 27 -y 0 -c 0 --inversion-sector 0 --pseudopotentials 0.0 1.0 --eigenstate
Will run the same command with four processes and we expect that if there are four or more cores available, this will be nearly four times faster.
How we get the Coulomb ground state with:
mpiexec -np 4 TorusDiagonalise.py -p 9 -l 27 -y 0 -c 0 --inversion-sector 0 --eigenstate
We can now take the overlap with:
Overlap.py -a Torus_p_9_Ns_27_K_0_P_0_I_0_tau1_0.000_tau2_1.000_maglen_1.00_LL0Coulomb_State_0.vec Torus_p_9_Ns_27_K_0_P_0_I_0_tau1_0.000_tau2_1.000_maglen_1.00_PseudoPotential_State_0.vec
Where the -a flag specifies that we want the absolute value. This gives an overlap of 0.9846 which is what we expect.
Sphere diagonalisation¶
For diagonalisation on the sphere, use the SphereDiagonalise.py script. -