Exact diagonalization

Numerical experiments » Anderson localization in dimension 2 and dimension 3 » 2d Anderson localization » Exact diagonalization

The 2d Anderson Hamiltonian can be numerically diagonalized on a finite lattice, using convenient boundary conditions (here, we use periodic boundary conditions, see lines 65 and 68 of the script diagonalization_anderson_model_2d.py).

One can then look at the properties of the energy spectrum and eigenstates.

diagonalization_anderson_model_2d.py L W energy

L: system size
W: disorder strength
energy: target energy for the eigenstate to be printed

The script diagonalizes the Hamiltonian for a system of finite size LxL, and periodic boundary conditions. Without disorder, the dispersion relation is energy=2*(cos(kx)+cos(ky)), with support on [-4,4], so that, for a  finite size system, the eigenstates are plane waves with kx=i*2*pi/L, ky=j*2*pi/L, with i,j integers -L/2<i,j<=L/2.   Eigenstates with +/i,+/-j are degenerate, allowing to build symmetric and antisymmetric combinations which are thus real wavefunctions.
In the presence of disorder, the eigenstates are localized. The localization length is not known in analytic form, but huge for weak disorder W of the order of unity (in contrast with 1d systems where it scales approximately like 1/W^2).
The script computes and prints in "energy_spectrum.dat" the full energy spectum for a single realization of the disorder. It also prints the squared wavefunction of the state which has energy closest to the input parameter "energy" in "density_eigenstate.dat" and displays it in a separate window as a color plot.

1. No disorder

Simply run with W=0

  diagonalization_anderson_model_2d.py 50 0. 2.

Check that the energy spectrum is what you expected. Compute an histogram of the density of states and check that it is more or less flat (as usual in 2d) with a Van Hove singularity (logarithmic divergence) near E=0.

Check that the eigenstates are delocalized.

2. Disorder W=3

  diagonalization_anderson_model_2d.py 50 3.0 0.

First try energy=0.0 and check that the eigenstate is more or less delocalized. Increase the energy to +3.0, then +4.0 and finally +4.5. How are localization properties modified? States outside the [-4,4] interval are in the so-called Lifshitz tail.

3. Strong disorder W=7

  diagonalization_anderson_model_2d.py 50 7.0 energy

Look at eigenstates at various energies. Which localization properties do these plots suggest?

___________________________________________________________________________

In order to estimate the localization length, one can define the Inverse Particpation Ratio (IPR) defined for each eigenstate by

IPR=sum_i{|psi_i|^4}

For a delocalized state, one expects IPRapprox 1/L^2 and, for a localized state with localization length xi, one expects IPR approx 1/xi^2.

compute_IPR_anderson_model_2d.py L W nr nsteps

L: system size
W: disorder strength
nr: number of disorder realizations
nsteps: number of bins in the histogram of average(1/IPR) vs. energy

The script diagonalizes the Hamiltonian for a system of finite size L, and periodic boundary conditions. It computes the Inverse Participation Ratio of each state for a given realization of the disorder.  It then gathers 1/IPR vs. energy in the file "inverse_IPR.dat" and builds an histogram of the average value in "histogram_average_inverse_IPR.dat". The spectrum is strictyl bound by [-4-W/2,4+W/2]. The histogram is built in this range.

 1. compute_IPR_anderson_model_2d.py 50 3.0 1 50

Look at the large fluctuations in inverse_IPR.dat, as well as the expected trend vs. energy.

2. In order to check that the localization is not quantitatively perturbed by the finite size, it is useful to compare the average IPS vs. energy for different sizes. To keep the total CPU time reasonnably small, use less configuration averaging for large sizes. For example:

  compute_IPR_anderson_model_2d.py 30 3.0 10 50
  compute_IPR_anderson_model_2d.py 40 3.0 5 50
  compute_IPR_anderson_model_2d.py 50 3.0 2 50
  compute_IPR_anderson_model_2d.py 60 3.0 1 50

Compare the 4 histograms. What do you conclude?

3. Do the same thing for W=7.0 (instead of 3.0).

 __________________________________________________________________________

Warning: For some stupid reason, the CMS of this Web site refuses files with the .py extension. Thus, you have to manually rename the file, changing the final _py to .py