Transfer matrix method

Numerical experiments » Anderson localization in dimension 2 and dimension 3 » 2d Anderson localization » Transfer matrix method

The transfer matrix method computes recursively the total transmission of a long bar of transverse section M and total length L>>M. As this is a quasi-1d system, it is always localized, that is the average of the logarithm of the transmission shoud decay linearly with the system size L:

<ln(T(L)> = -L/xi(M)where xi(M) is the localization length for finite transverse size M.In order to test whether the full 2D system is localized, one should take the limit M goes to infinity and look whether xi(M) converges to a finite limit - which is then the true 2D localization length - or diverges, in which case the dynamics is not localized.

The script  "transmission_anderson_model_2d.py" uses the recursive Green function algorithm (also known as transfer matrix method) described in A. MacKinnon and B. Kramer, Z. Phys. B 53, 1 (1983).
This is a simplified implementation, slower by roughly a factor 10, but easier to understand and more compact. You do not have to understand how it works, you may use as a black box. Of course, it is better if you make the effort to understand how it works |-).

The script produces 3 files:

  1. log_transmission.dat, which contains the average of the logarithm of the transmission versus position along the bar. It should decay almost linearly, with small fluctuations as it is self-averaging.
  2. localization_length.dat, which contains the localization length (estimated from the decay of <ln(T)> with L) vs. the transverse size M. The file contains several data sets, one for each W value.
  3. scaling.dat, which should be used to assess the validity of the one parameter scaling law. It contains ln(xi(M)/M) vs. ln(1/M).

The script performs the calculation of the localization length xi(M) for several values of the transverse size M and of the disorder strength W. It has 8 parameters:

transmission_anderson_model_2d.py L M_min M_max M_nsteps W_min W_max W_nsteps energy


* System length L
* M_min, M_max, M_nsteps. The range [M_min,M_max] of M values, divided in M_nsteps interval.  The M sequence is approximately a geometrically growing series.
* W_min, W_max, W_nsteps. The range [W_min,W_max] of W values, divided in W_nsteps interval.  The W values are equally spaced.
* Energy at which the calculation is performed.

__________________________________________________________________________________________________

 You should try the following calculations:

  1. transmission_anderson_model_2d.py 10000 20 200 5 5. 5. 0 0.
    This is at W=5.0 (and energy 0.) for various M values. Check with log_transmission.dat that all <ln(T(L))> decay approximately linearly with L. Look at localization_length.dat how the localization length increases with the transverse system size M, but does not obviously converge to a finite value.

  2. transmission_anderson_model_2d.py 10000 5 50 10 5 10 10 0.
    [ It may take couple of minutes to complete ].
    This is for increasing W values (from 5. to 10.), for few M values between 5 and 50.
    Look at localization_length.dat how the localization length increases with the transverse system size M, but apparently tends to a finite value when M goes to infinity, at least for large W. Perform a "manual" finite-size scaling on the data in scaling.dat and show that they indeed obey a one-parameter scaling law. Conclude that Anderson localization is the generic scenario in 2d disordered systems.

 

 __________________________________________________________________________

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